@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.
Files changed (381) hide show
  1. package/lib/esm/common/constants/constants.js +0 -1
  2. package/lib/esm/common/decorators/autoInjectable.js +0 -1
  3. package/lib/esm/common/decorators/configuration.js +0 -1
  4. package/lib/esm/common/decorators/constant.js +0 -1
  5. package/lib/esm/common/decorators/controller.js +0 -1
  6. package/lib/esm/common/decorators/inject.js +0 -1
  7. package/lib/esm/common/decorators/injectable.js +0 -1
  8. package/lib/esm/common/decorators/intercept.js +0 -1
  9. package/lib/esm/common/decorators/interceptor.js +0 -1
  10. package/lib/esm/common/decorators/lazyInject.js +0 -1
  11. package/lib/esm/common/decorators/module.js +0 -1
  12. package/lib/esm/common/decorators/opts.js +0 -1
  13. package/lib/esm/common/decorators/overrideProvider.js +0 -1
  14. package/lib/esm/common/decorators/scope.js +0 -1
  15. package/lib/esm/common/decorators/service.js +0 -1
  16. package/lib/esm/common/decorators/useOpts.js +0 -1
  17. package/lib/esm/common/decorators/value.js +0 -1
  18. package/lib/esm/common/domain/Container.js +0 -1
  19. package/lib/esm/common/domain/ControllerProvider.js +0 -1
  20. package/lib/esm/common/domain/InjectablePropertyType.js +0 -1
  21. package/lib/esm/common/domain/LocalsContainer.js +0 -1
  22. package/lib/esm/common/domain/Provider.js +0 -1
  23. package/lib/esm/common/domain/ProviderScope.js +0 -1
  24. package/lib/esm/common/domain/ProviderType.js +0 -1
  25. package/lib/esm/common/errors/InjectionError.js +0 -1
  26. package/lib/esm/common/errors/InvalidPropertyTokenError.js +0 -1
  27. package/lib/esm/common/fn/configuration.js +0 -1
  28. package/lib/esm/common/fn/constant.js +0 -1
  29. package/lib/esm/common/fn/inject.js +0 -1
  30. package/lib/esm/common/fn/injectMany.js +0 -1
  31. package/lib/esm/common/fn/injectable.js +0 -1
  32. package/lib/esm/common/fn/injector.js +0 -1
  33. package/lib/esm/common/fn/lazyInject.js +0 -1
  34. package/lib/esm/common/fn/localsContainer.js +0 -1
  35. package/lib/esm/common/fn/logger.js +0 -1
  36. package/lib/esm/common/fn/refValue.js +0 -1
  37. package/lib/esm/common/index.js +0 -1
  38. package/lib/esm/common/interfaces/DIConfigurationOptions.js +0 -1
  39. package/lib/esm/common/interfaces/DILogger.js +0 -1
  40. package/lib/esm/common/interfaces/DILoggerOptions.js +0 -1
  41. package/lib/esm/common/interfaces/ImportTokenProviderOpts.js +0 -1
  42. package/lib/esm/common/interfaces/InterceptorContext.js +0 -1
  43. package/lib/esm/common/interfaces/InterceptorMethods.js +0 -1
  44. package/lib/esm/common/interfaces/InvokeOptions.js +0 -1
  45. package/lib/esm/common/interfaces/OnDestroy.js +0 -1
  46. package/lib/esm/common/interfaces/OnInit.js +0 -1
  47. package/lib/esm/common/interfaces/ProviderOpts.js +0 -1
  48. package/lib/esm/common/interfaces/RegistrySettings.js +0 -1
  49. package/lib/esm/common/interfaces/ResolvedInvokeOptions.js +0 -1
  50. package/lib/esm/common/interfaces/TokenProvider.js +0 -1
  51. package/lib/esm/common/interfaces/TokenRoute.js +0 -1
  52. package/lib/esm/common/registries/GlobalProviders.js +0 -1
  53. package/lib/esm/common/registries/ProviderRegistry.js +0 -1
  54. package/lib/esm/common/services/DIConfiguration.js +0 -1
  55. package/lib/esm/common/services/DILogger.js +0 -1
  56. package/lib/esm/common/services/InjectorService.js +0 -1
  57. package/lib/esm/common/utils/colors.js +0 -1
  58. package/lib/esm/common/utils/createContainer.js +0 -1
  59. package/lib/esm/common/utils/discoverHooks.js +0 -1
  60. package/lib/esm/common/utils/getConfiguration.js +0 -1
  61. package/lib/esm/common/utils/getConstructorDependencies.js +0 -1
  62. package/lib/esm/common/utils/providerBuilder.js +0 -1
  63. package/lib/esm/index.js +0 -1
  64. package/lib/esm/node/decorators/injectContext.js +0 -1
  65. package/lib/esm/node/domain/ContextLogger.js +0 -1
  66. package/lib/esm/node/domain/DIContext.js +0 -1
  67. package/lib/esm/node/fn/context.js +0 -1
  68. package/lib/esm/node/fn/contextLogger.js +0 -1
  69. package/lib/esm/node/index.js +0 -1
  70. package/lib/esm/node/interfaces/AlterRunInContext.js +0 -1
  71. package/lib/esm/node/services/DILogger.js +0 -1
  72. package/lib/esm/node/services/DITest.js +0 -1
  73. package/lib/esm/node/utils/asyncHookContext.js +0 -1
  74. package/lib/esm/node/utils/attachLogger.js +0 -1
  75. package/lib/esm/node/utils/setLoggerConfiguration.js +0 -1
  76. package/lib/esm/node/utils/setLoggerFormat.js +0 -1
  77. package/lib/esm/node/utils/setLoggerLevel.js +0 -1
  78. package/package.json +12 -10
  79. package/.barrelsby.json +0 -5
  80. package/lib/browser/chunks/injectable.js +0 -65
  81. package/lib/browser/chunks/injectable.js.map +0 -1
  82. package/lib/browser/common/constants/constants.js +0 -9
  83. package/lib/browser/common/constants/constants.js.map +0 -1
  84. package/lib/browser/common/decorators/autoInjectable.js +0 -26
  85. package/lib/browser/common/decorators/autoInjectable.js.map +0 -1
  86. package/lib/browser/common/decorators/configuration.js +0 -24
  87. package/lib/browser/common/decorators/configuration.js.map +0 -1
  88. package/lib/browser/common/decorators/constant.js +0 -27
  89. package/lib/browser/common/decorators/constant.js.map +0 -1
  90. package/lib/browser/common/decorators/controller.js +0 -23
  91. package/lib/browser/common/decorators/controller.js.map +0 -1
  92. package/lib/browser/common/decorators/inject.js +0 -62
  93. package/lib/browser/common/decorators/inject.js.map +0 -1
  94. package/lib/browser/common/decorators/injectable.js +0 -14
  95. package/lib/browser/common/decorators/injectable.js.map +0 -1
  96. package/lib/browser/common/decorators/intercept.js +0 -57
  97. package/lib/browser/common/decorators/intercept.js.map +0 -1
  98. package/lib/browser/common/decorators/interceptor.js +0 -11
  99. package/lib/browser/common/decorators/interceptor.js.map +0 -1
  100. package/lib/browser/common/decorators/lazyInject.js +0 -43
  101. package/lib/browser/common/decorators/lazyInject.js.map +0 -1
  102. package/lib/browser/common/decorators/module.js +0 -22
  103. package/lib/browser/common/decorators/module.js.map +0 -1
  104. package/lib/browser/common/decorators/opts.js +0 -12
  105. package/lib/browser/common/decorators/opts.js.map +0 -1
  106. package/lib/browser/common/decorators/overrideProvider.js +0 -10
  107. package/lib/browser/common/decorators/overrideProvider.js.map +0 -1
  108. package/lib/browser/common/decorators/scope.js +0 -9
  109. package/lib/browser/common/decorators/scope.js.map +0 -1
  110. package/lib/browser/common/decorators/service.js +0 -8
  111. package/lib/browser/common/decorators/service.js.map +0 -1
  112. package/lib/browser/common/decorators/useOpts.js +0 -23
  113. package/lib/browser/common/decorators/useOpts.js.map +0 -1
  114. package/lib/browser/common/decorators/value.js +0 -23
  115. package/lib/browser/common/decorators/value.js.map +0 -1
  116. package/lib/browser/common/domain/Container.js +0 -64
  117. package/lib/browser/common/domain/Container.js.map +0 -1
  118. package/lib/browser/common/domain/ControllerProvider.js +0 -35
  119. package/lib/browser/common/domain/ControllerProvider.js.map +0 -1
  120. package/lib/browser/common/domain/InjectablePropertyType.js +0 -5
  121. package/lib/browser/common/domain/InjectablePropertyType.js.map +0 -1
  122. package/lib/browser/common/domain/LocalsContainer.js +0 -13
  123. package/lib/browser/common/domain/LocalsContainer.js.map +0 -1
  124. package/lib/browser/common/domain/Provider.js +0 -144
  125. package/lib/browser/common/domain/Provider.js.map +0 -1
  126. package/lib/browser/common/domain/ProviderScope.js +0 -5
  127. package/lib/browser/common/domain/ProviderScope.js.map +0 -1
  128. package/lib/browser/common/domain/ProviderType.js +0 -5
  129. package/lib/browser/common/domain/ProviderType.js.map +0 -1
  130. package/lib/browser/common/errors/InjectionError.js +0 -31
  131. package/lib/browser/common/errors/InjectionError.js.map +0 -1
  132. package/lib/browser/common/errors/InvalidPropertyTokenError.js +0 -17
  133. package/lib/browser/common/errors/InvalidPropertyTokenError.js.map +0 -1
  134. package/lib/browser/common/fn/configuration.js +0 -13
  135. package/lib/browser/common/fn/configuration.js.map +0 -1
  136. package/lib/browser/common/fn/constant.js +0 -8
  137. package/lib/browser/common/fn/constant.js.map +0 -1
  138. package/lib/browser/common/fn/inject.js +0 -13
  139. package/lib/browser/common/fn/inject.js.map +0 -1
  140. package/lib/browser/common/fn/injectMany.js +0 -9
  141. package/lib/browser/common/fn/injectMany.js.map +0 -1
  142. package/lib/browser/common/fn/injectable.js +0 -8
  143. package/lib/browser/common/fn/injectable.js.map +0 -1
  144. package/lib/browser/common/fn/injector.js +0 -13
  145. package/lib/browser/common/fn/injector.js.map +0 -1
  146. package/lib/browser/common/fn/lazyInject.js +0 -23
  147. package/lib/browser/common/fn/lazyInject.js.map +0 -1
  148. package/lib/browser/common/fn/localsContainer.js +0 -29
  149. package/lib/browser/common/fn/localsContainer.js.map +0 -1
  150. package/lib/browser/common/fn/logger.js +0 -8
  151. package/lib/browser/common/fn/logger.js.map +0 -1
  152. package/lib/browser/common/fn/refValue.js +0 -15
  153. package/lib/browser/common/fn/refValue.js.map +0 -1
  154. package/lib/browser/common/index.js +0 -115
  155. package/lib/browser/common/index.js.map +0 -1
  156. package/lib/browser/common/registries/GlobalProviders.js +0 -102
  157. package/lib/browser/common/registries/GlobalProviders.js.map +0 -1
  158. package/lib/browser/common/registries/ProviderRegistry.js +0 -8
  159. package/lib/browser/common/registries/ProviderRegistry.js.map +0 -1
  160. package/lib/browser/common/services/DIConfiguration.js +0 -99
  161. package/lib/browser/common/services/DIConfiguration.js.map +0 -1
  162. package/lib/browser/common/services/DILogger.js +0 -8
  163. package/lib/browser/common/services/DILogger.js.map +0 -1
  164. package/lib/browser/common/services/InjectorService.js +0 -378
  165. package/lib/browser/common/services/InjectorService.js.map +0 -1
  166. package/lib/browser/common/utils/colors.js +0 -5
  167. package/lib/browser/common/utils/colors.js.map +0 -1
  168. package/lib/browser/common/utils/createContainer.js +0 -10
  169. package/lib/browser/common/utils/createContainer.js.map +0 -1
  170. package/lib/browser/common/utils/discoverHooks.js +0 -17
  171. package/lib/browser/common/utils/discoverHooks.js.map +0 -1
  172. package/lib/browser/common/utils/getConfiguration.js +0 -20
  173. package/lib/browser/common/utils/getConfiguration.js.map +0 -1
  174. package/lib/browser/common/utils/getConstructorDependencies.js +0 -12
  175. package/lib/browser/common/utils/getConstructorDependencies.js.map +0 -1
  176. package/lib/browser/common/utils/providerBuilder.js +0 -8
  177. package/lib/browser/common/utils/providerBuilder.js.map +0 -1
  178. package/lib/esm/common/constants/constants.js.map +0 -1
  179. package/lib/esm/common/decorators/autoInjectable.js.map +0 -1
  180. package/lib/esm/common/decorators/configuration.js.map +0 -1
  181. package/lib/esm/common/decorators/constant.js.map +0 -1
  182. package/lib/esm/common/decorators/controller.js.map +0 -1
  183. package/lib/esm/common/decorators/inject.js.map +0 -1
  184. package/lib/esm/common/decorators/injectable.js.map +0 -1
  185. package/lib/esm/common/decorators/intercept.js.map +0 -1
  186. package/lib/esm/common/decorators/interceptor.js.map +0 -1
  187. package/lib/esm/common/decorators/lazyInject.js.map +0 -1
  188. package/lib/esm/common/decorators/module.js.map +0 -1
  189. package/lib/esm/common/decorators/opts.js.map +0 -1
  190. package/lib/esm/common/decorators/overrideProvider.js.map +0 -1
  191. package/lib/esm/common/decorators/scope.js.map +0 -1
  192. package/lib/esm/common/decorators/service.js.map +0 -1
  193. package/lib/esm/common/decorators/useOpts.js.map +0 -1
  194. package/lib/esm/common/decorators/value.js.map +0 -1
  195. package/lib/esm/common/domain/Container.js.map +0 -1
  196. package/lib/esm/common/domain/ControllerProvider.js.map +0 -1
  197. package/lib/esm/common/domain/InjectablePropertyType.js.map +0 -1
  198. package/lib/esm/common/domain/LocalsContainer.js.map +0 -1
  199. package/lib/esm/common/domain/Provider.js.map +0 -1
  200. package/lib/esm/common/domain/ProviderScope.js.map +0 -1
  201. package/lib/esm/common/domain/ProviderType.js.map +0 -1
  202. package/lib/esm/common/errors/InjectionError.js.map +0 -1
  203. package/lib/esm/common/errors/InvalidPropertyTokenError.js.map +0 -1
  204. package/lib/esm/common/fn/configuration.js.map +0 -1
  205. package/lib/esm/common/fn/constant.js.map +0 -1
  206. package/lib/esm/common/fn/inject.js.map +0 -1
  207. package/lib/esm/common/fn/injectMany.js.map +0 -1
  208. package/lib/esm/common/fn/injectable.js.map +0 -1
  209. package/lib/esm/common/fn/injector.js.map +0 -1
  210. package/lib/esm/common/fn/lazyInject.js.map +0 -1
  211. package/lib/esm/common/fn/localsContainer.js.map +0 -1
  212. package/lib/esm/common/fn/logger.js.map +0 -1
  213. package/lib/esm/common/fn/refValue.js.map +0 -1
  214. package/lib/esm/common/index.js.map +0 -1
  215. package/lib/esm/common/interfaces/DIConfigurationOptions.js.map +0 -1
  216. package/lib/esm/common/interfaces/DILogger.js.map +0 -1
  217. package/lib/esm/common/interfaces/DILoggerOptions.js.map +0 -1
  218. package/lib/esm/common/interfaces/ImportTokenProviderOpts.js.map +0 -1
  219. package/lib/esm/common/interfaces/InterceptorContext.js.map +0 -1
  220. package/lib/esm/common/interfaces/InterceptorMethods.js.map +0 -1
  221. package/lib/esm/common/interfaces/InvokeOptions.js.map +0 -1
  222. package/lib/esm/common/interfaces/OnDestroy.js.map +0 -1
  223. package/lib/esm/common/interfaces/OnInit.js.map +0 -1
  224. package/lib/esm/common/interfaces/ProviderOpts.js.map +0 -1
  225. package/lib/esm/common/interfaces/RegistrySettings.js.map +0 -1
  226. package/lib/esm/common/interfaces/ResolvedInvokeOptions.js.map +0 -1
  227. package/lib/esm/common/interfaces/TokenProvider.js.map +0 -1
  228. package/lib/esm/common/interfaces/TokenRoute.js.map +0 -1
  229. package/lib/esm/common/registries/GlobalProviders.js.map +0 -1
  230. package/lib/esm/common/registries/ProviderRegistry.js.map +0 -1
  231. package/lib/esm/common/services/DIConfiguration.js.map +0 -1
  232. package/lib/esm/common/services/DILogger.js.map +0 -1
  233. package/lib/esm/common/services/InjectorService.js.map +0 -1
  234. package/lib/esm/common/utils/colors.js.map +0 -1
  235. package/lib/esm/common/utils/createContainer.js.map +0 -1
  236. package/lib/esm/common/utils/discoverHooks.js.map +0 -1
  237. package/lib/esm/common/utils/getConfiguration.js.map +0 -1
  238. package/lib/esm/common/utils/getConstructorDependencies.js.map +0 -1
  239. package/lib/esm/common/utils/providerBuilder.js.map +0 -1
  240. package/lib/esm/index.js.map +0 -1
  241. package/lib/esm/node/decorators/injectContext.js.map +0 -1
  242. package/lib/esm/node/domain/ContextLogger.js.map +0 -1
  243. package/lib/esm/node/domain/DIContext.js.map +0 -1
  244. package/lib/esm/node/fn/context.js.map +0 -1
  245. package/lib/esm/node/fn/contextLogger.js.map +0 -1
  246. package/lib/esm/node/index.js.map +0 -1
  247. package/lib/esm/node/interfaces/AlterRunInContext.js.map +0 -1
  248. package/lib/esm/node/services/DILogger.js.map +0 -1
  249. package/lib/esm/node/services/DITest.js.map +0 -1
  250. package/lib/esm/node/utils/asyncHookContext.js.map +0 -1
  251. package/lib/esm/node/utils/attachLogger.js.map +0 -1
  252. package/lib/esm/node/utils/setLoggerConfiguration.js.map +0 -1
  253. package/lib/esm/node/utils/setLoggerFormat.js.map +0 -1
  254. package/lib/esm/node/utils/setLoggerLevel.js.map +0 -1
  255. package/src/common/constants/constants.ts +0 -5
  256. package/src/common/decorators/autoInjectable.spec.ts +0 -135
  257. package/src/common/decorators/autoInjectable.ts +0 -60
  258. package/src/common/decorators/configuration.spec.ts +0 -45
  259. package/src/common/decorators/configuration.ts +0 -36
  260. package/src/common/decorators/constant.spec.ts +0 -67
  261. package/src/common/decorators/constant.ts +0 -73
  262. package/src/common/decorators/controller.spec.ts +0 -43
  263. package/src/common/decorators/controller.ts +0 -73
  264. package/src/common/decorators/inject.spec.ts +0 -298
  265. package/src/common/decorators/inject.ts +0 -150
  266. package/src/common/decorators/injectable.spec.ts +0 -43
  267. package/src/common/decorators/injectable.ts +0 -30
  268. package/src/common/decorators/intercept.spec.ts +0 -150
  269. package/src/common/decorators/intercept.ts +0 -89
  270. package/src/common/decorators/interceptor.ts +0 -17
  271. package/src/common/decorators/lazyInject.spec.ts +0 -53
  272. package/src/common/decorators/lazyInject.ts +0 -92
  273. package/src/common/decorators/module.ts +0 -52
  274. package/src/common/decorators/opts.ts +0 -51
  275. package/src/common/decorators/overrideProvider.spec.ts +0 -30
  276. package/src/common/decorators/overrideProvider.ts +0 -15
  277. package/src/common/decorators/scope.spec.ts +0 -25
  278. package/src/common/decorators/scope.ts +0 -13
  279. package/src/common/decorators/service.ts +0 -14
  280. package/src/common/decorators/useOpts.spec.ts +0 -90
  281. package/src/common/decorators/useOpts.ts +0 -64
  282. package/src/common/decorators/value.spec.ts +0 -59
  283. package/src/common/decorators/value.ts +0 -60
  284. package/src/common/domain/Container.spec.ts +0 -85
  285. package/src/common/domain/Container.ts +0 -80
  286. package/src/common/domain/ControllerProvider.spec.ts +0 -55
  287. package/src/common/domain/ControllerProvider.ts +0 -48
  288. package/src/common/domain/InjectablePropertyType.ts +0 -7
  289. package/src/common/domain/LocalsContainer.spec.ts +0 -20
  290. package/src/common/domain/LocalsContainer.ts +0 -11
  291. package/src/common/domain/Provider.spec.ts +0 -107
  292. package/src/common/domain/Provider.ts +0 -218
  293. package/src/common/domain/ProviderScope.ts +0 -5
  294. package/src/common/domain/ProviderType.ts +0 -8
  295. package/src/common/errors/InjectionError.spec.ts +0 -17
  296. package/src/common/errors/InjectionError.ts +0 -71
  297. package/src/common/errors/InvalidPropertyTokenError.ts +0 -14
  298. package/src/common/fn/configuration.spec.ts +0 -42
  299. package/src/common/fn/configuration.ts +0 -22
  300. package/src/common/fn/constant.spec.ts +0 -37
  301. package/src/common/fn/constant.ts +0 -7
  302. package/src/common/fn/inject.spec.ts +0 -54
  303. package/src/common/fn/inject.ts +0 -32
  304. package/src/common/fn/injectMany.ts +0 -16
  305. package/src/common/fn/injectable.spec.ts +0 -88
  306. package/src/common/fn/injectable.ts +0 -15
  307. package/src/common/fn/injector.ts +0 -26
  308. package/src/common/fn/lazyInject.spec.ts +0 -22
  309. package/src/common/fn/lazyInject.ts +0 -36
  310. package/src/common/fn/localsContainer.ts +0 -55
  311. package/src/common/fn/logger.ts +0 -8
  312. package/src/common/fn/refValue.spec.ts +0 -47
  313. package/src/common/fn/refValue.ts +0 -33
  314. package/src/common/index.ts +0 -64
  315. package/src/common/integration/async-factory.spec.ts +0 -60
  316. package/src/common/integration/di.spec.ts +0 -153
  317. package/src/common/integration/imports.spec.ts +0 -39
  318. package/src/common/integration/request.spec.ts +0 -79
  319. package/src/common/integration/singleton.spec.ts +0 -125
  320. package/src/common/interfaces/DIConfigurationOptions.ts +0 -29
  321. package/src/common/interfaces/DILogger.ts +0 -13
  322. package/src/common/interfaces/DILoggerOptions.ts +0 -54
  323. package/src/common/interfaces/ImportTokenProviderOpts.ts +0 -29
  324. package/src/common/interfaces/InterceptorContext.ts +0 -13
  325. package/src/common/interfaces/InterceptorMethods.ts +0 -5
  326. package/src/common/interfaces/InvokeOptions.ts +0 -28
  327. package/src/common/interfaces/OnDestroy.ts +0 -3
  328. package/src/common/interfaces/OnInit.ts +0 -3
  329. package/src/common/interfaces/ProviderOpts.ts +0 -57
  330. package/src/common/interfaces/RegistrySettings.ts +0 -11
  331. package/src/common/interfaces/ResolvedInvokeOptions.ts +0 -14
  332. package/src/common/interfaces/TokenProvider.ts +0 -8
  333. package/src/common/interfaces/TokenRoute.ts +0 -6
  334. package/src/common/registries/GlobalProviders.spec.ts +0 -94
  335. package/src/common/registries/GlobalProviders.ts +0 -132
  336. package/src/common/registries/ProviderRegistry.spec.ts +0 -36
  337. package/src/common/registries/ProviderRegistry.ts +0 -32
  338. package/src/common/services/DIConfiguration.spec.ts +0 -60
  339. package/src/common/services/DIConfiguration.ts +0 -142
  340. package/src/common/services/DILogger.spec.ts +0 -22
  341. package/src/common/services/DILogger.ts +0 -8
  342. package/src/common/services/InjectorService.spec.ts +0 -793
  343. package/src/common/services/InjectorService.ts +0 -612
  344. package/src/common/utils/colors.spec.ts +0 -9
  345. package/src/common/utils/colors.ts +0 -11
  346. package/src/common/utils/createContainer.spec.ts +0 -18
  347. package/src/common/utils/createContainer.ts +0 -14
  348. package/src/common/utils/discoverHooks.ts +0 -16
  349. package/src/common/utils/getConfiguration.spec.ts +0 -40
  350. package/src/common/utils/getConfiguration.ts +0 -21
  351. package/src/common/utils/getConstructorDependencies.ts +0 -9
  352. package/src/common/utils/providerBuilder.ts +0 -95
  353. package/src/index.ts +0 -2
  354. package/src/node/decorators/injectContext.spec.ts +0 -60
  355. package/src/node/decorators/injectContext.ts +0 -29
  356. package/src/node/domain/ContextLogger.spec.ts +0 -400
  357. package/src/node/domain/ContextLogger.ts +0 -155
  358. package/src/node/domain/DIContext.spec.ts +0 -105
  359. package/src/node/domain/DIContext.ts +0 -115
  360. package/src/node/fn/context.ts +0 -24
  361. package/src/node/fn/contextLogger.spec.ts +0 -47
  362. package/src/node/fn/contextLogger.ts +0 -9
  363. package/src/node/index.ts +0 -16
  364. package/src/node/integration/async-factory-invoke.spec.ts +0 -58
  365. package/src/node/integration/inject-context.spec.ts +0 -29
  366. package/src/node/integration/invoke-oninit.spec.ts +0 -25
  367. package/src/node/interfaces/AlterRunInContext.ts +0 -3
  368. package/src/node/services/DILogger.spec.ts +0 -24
  369. package/src/node/services/DILogger.ts +0 -6
  370. package/src/node/services/DITest.spec.ts +0 -109
  371. package/src/node/services/DITest.ts +0 -122
  372. package/src/node/utils/asyncHookContext.spec.ts +0 -147
  373. package/src/node/utils/asyncHookContext.ts +0 -48
  374. package/src/node/utils/attachLogger.spec.ts +0 -14
  375. package/src/node/utils/attachLogger.ts +0 -7
  376. package/src/node/utils/setLoggerConfiguration.spec.ts +0 -43
  377. package/src/node/utils/setLoggerConfiguration.ts +0 -7
  378. package/src/node/utils/setLoggerFormat.ts +0 -33
  379. package/src/node/utils/setLoggerLevel.ts +0 -12
  380. package/vite.config.mts +0 -45
  381. package/vitest.config.mts +0 -21
@@ -1,793 +0,0 @@
1
- import {$emit} from "@tsed/hooks";
2
-
3
- import {Configuration} from "../decorators/configuration.js";
4
- import {Inject} from "../decorators/inject.js";
5
- import {Injectable} from "../decorators/injectable.js";
6
- import {Container} from "../domain/Container.js";
7
- import {LocalsContainer} from "../domain/LocalsContainer.js";
8
- import {Provider} from "../domain/Provider.js";
9
- import {ProviderScope} from "../domain/ProviderScope.js";
10
- import {ProviderType} from "../domain/ProviderType.js";
11
- import {inject} from "../fn/inject.js";
12
- import {destroyInjector, injector} from "../fn/injector.js";
13
- import {registerProvider} from "../registries/ProviderRegistry.js";
14
- import {InjectorService} from "./InjectorService.js";
15
-
16
- vi.mock("@tsed/hooks", async (importOriginal) => {
17
- const mod = await importOriginal<typeof import("@tsed/hooks")>();
18
-
19
- return {
20
- ...mod,
21
- $emit: vi.fn()
22
- };
23
- });
24
-
25
- class Test {
26
- @Inject()
27
- prop: InjectorService;
28
-
29
- value: any;
30
- constant: any;
31
-
32
- constructor() {}
33
-
34
- test3(o: any) {
35
- return o + " called ";
36
- }
37
- }
38
-
39
- describe("InjectorService", () => {
40
- afterEach(() => destroyInjector());
41
-
42
- describe("has()", () => {
43
- it("should return true", () => {
44
- expect(injector().has(InjectorService)).toBe(true);
45
- });
46
-
47
- it("should return false", () => {
48
- expect(injector().has(Test)).toBe(false);
49
- });
50
- });
51
- describe("get()", () => {
52
- it("should return element", () => {
53
- expect(injector().get(InjectorService)).toBeInstanceOf(InjectorService);
54
- });
55
-
56
- it("should return Test", () => {
57
- expect(injector().get(Test)).toBeInstanceOf(Test);
58
- });
59
- });
60
- describe("getMany()", () => {
61
- it("should return all instance", () => {
62
- injector().addProvider("token", {
63
- type: ProviderType.VALUE,
64
- useValue: 1
65
- });
66
-
67
- expect(!!injector().getMany(ProviderType.VALUE).length).toEqual(true);
68
-
69
- injector().delete("token");
70
- });
71
- });
72
- describe("toArray()", () => {
73
- it("should return instances", () => {
74
- expect(injector().toArray()).toBeInstanceOf(Array);
75
- });
76
- });
77
- describe("invoke()", () => {
78
- describe("when we call invoke with rebuild options (SINGLETON)", () => {
79
- it("should invoke the provider from container", async () => {
80
- // GIVEN
81
- const token = class Test {};
82
-
83
- const provider = new Provider<any>(token);
84
- provider.scope = ProviderScope.SINGLETON;
85
- provider.deps = [InjectorService];
86
- provider.alias = "alias";
87
-
88
- const container = new Container();
89
- container.set(token, provider);
90
-
91
- await injector().load(container);
92
-
93
- vi.spyOn(injector() as any, "invokeToken");
94
- vi.spyOn(injector() as any, "resolve");
95
- vi.spyOn(injector(), "getProvider");
96
-
97
- const locals = new LocalsContainer();
98
-
99
- // WHEN
100
-
101
- const result1: any = inject(token, {locals});
102
- const result2: any = inject(token, {locals, rebuild: true});
103
-
104
- // THEN
105
- expect(result1 !== result2).toEqual(true);
106
- expect(injector().getProvider).toHaveBeenCalledWith(token);
107
- expect(injector().get("alias")).toBeInstanceOf(token);
108
-
109
- expect((injector() as any).invokeToken).toHaveBeenCalledWith(token, {locals, rebuild: true});
110
- expect(injector().resolve).toHaveBeenCalledWith(InjectorService, {
111
- locals,
112
- parent: token
113
- });
114
- });
115
- });
116
- describe("when provider is a REQUEST", () => {
117
- it("should invoke a request from local container", async () => {
118
- // GIVEN
119
- const token = class Test {};
120
-
121
- const provider = new Provider<any>(token);
122
- provider.scope = ProviderScope.REQUEST;
123
-
124
- const container = new Container();
125
- container.set(token, provider);
126
-
127
- await injector().load(container);
128
-
129
- vi.spyOn(injector() as any, "resolve");
130
- vi.spyOn(injector(), "get");
131
- vi.spyOn(injector(), "getProvider");
132
-
133
- const locals = new LocalsContainer(); // LocalContainer for the first request
134
- const locals2 = new LocalsContainer(); // LocalContainer for the second request
135
-
136
- // WHEN REQ1
137
- const result1: any = inject(token, {locals});
138
- const result2: any = inject(token, {locals});
139
-
140
- // WHEN REQ2
141
- const result3: any = inject(token, {locals: locals2});
142
-
143
- // THEN
144
- expect(result1).toEqual(result2);
145
- expect(result2 !== result3).toEqual(true);
146
-
147
- expect(injector().getProvider).toHaveBeenCalledWith(token);
148
- expect((injector() as any).resolve).toHaveBeenCalledWith(token, {locals});
149
- expect(locals.get(token)).toEqual(result1);
150
- expect(locals2.get(token)).toEqual(result3);
151
-
152
- expect(injector().get).not.toHaveBeenCalled();
153
- });
154
- });
155
- describe("when provider is a INSTANCE", () => {
156
- it("should invoke a new instance", async () => {
157
- // GIVEN
158
- const token = class Test {};
159
-
160
- const provider = new Provider<any>(token);
161
- provider.scope = ProviderScope.INSTANCE;
162
-
163
- const container = new Container();
164
- container.set(token, provider);
165
-
166
- await injector().load(container);
167
-
168
- vi.spyOn(injector() as any, "resolve");
169
- vi.spyOn(injector(), "get");
170
- vi.spyOn(injector(), "getProvider");
171
-
172
- const locals = new LocalsContainer(); // LocalContainer for the first request
173
-
174
- // WHEN REQ1
175
- const result1: any = inject(token, {locals});
176
- const result2: any = inject(token, {locals});
177
-
178
- // THEN
179
- expect(result1 !== result2).toEqual(true);
180
-
181
- expect(injector().getProvider).toHaveBeenCalledWith(token);
182
- expect((injector() as any).resolve).toHaveBeenCalledWith(token, {locals});
183
- expect(locals.has(token)).toEqual(false);
184
- expect(injector().get).not.toHaveBeenCalled();
185
-
186
- await injector().destroy();
187
- });
188
- });
189
- describe("when provider is a SINGLETON", () => {
190
- it("should invoke the provider from container", () => {
191
- // GIVEN
192
- const token = class Test {};
193
- const provider = new Provider<any>(token);
194
- provider.scope = ProviderScope.SINGLETON;
195
-
196
- injector().set(token, provider);
197
-
198
- // WHEN
199
- const result: any = inject(token);
200
-
201
- // THEN
202
- expect(result).toBeInstanceOf(token);
203
- expect($emit).toHaveBeenCalledWith("$beforeInvoke", token, [expect.any(Object)]);
204
- expect($emit).toHaveBeenCalledWith("$beforeInvoke:provider", [expect.any(Object)]);
205
- expect($emit).toHaveBeenCalledWith("$afterInvoke", token, [result, expect.any(Object)]);
206
- });
207
- it("should invoke the provider from container (2)", async () => {
208
- // GIVEN
209
- const token = class Test {};
210
-
211
- const provider = new Provider<any>(token);
212
- provider.scope = ProviderScope.SINGLETON;
213
-
214
- const container = new Container();
215
- container.set(token, provider);
216
-
217
- await injector().load(container);
218
-
219
- vi.spyOn(injector() as any, "invokeToken");
220
- vi.spyOn(injector(), "getProvider");
221
-
222
- const locals = new LocalsContainer();
223
-
224
- // WHEN
225
- const result1: any = inject(token, {locals});
226
- const result2: any = inject(token, {locals});
227
-
228
- // THEN
229
- expect(result1).toEqual(result2);
230
- expect((injector() as any).invokeToken).not.toHaveBeenCalled();
231
- });
232
- });
233
- describe("when provider is a Value (useValue)", () => {
234
- it("should invoke the provider from container (1)", async () => {
235
- // GIVEN
236
- const token = Symbol.for("TokenValue1");
237
-
238
- const provider = new Provider<any>(token);
239
- provider.scope = ProviderScope.SINGLETON;
240
- provider.useValue = "TEST";
241
-
242
- const container = new Container();
243
- container.set(token, provider);
244
-
245
- await injector().load(container);
246
-
247
- // WHEN
248
- const result: any = inject(token);
249
-
250
- // THEN
251
- expect(result).toEqual("TEST");
252
- });
253
- it("should invoke the provider from container (2)", async () => {
254
- // GIVEN
255
- const token = Symbol.for("TokenValue2");
256
-
257
- const provider = new Provider<any>(token);
258
- provider.scope = ProviderScope.SINGLETON;
259
- provider.useValue = () => "TEST";
260
-
261
- const container = new Container();
262
- container.set(token, provider);
263
-
264
- await injector().load(container);
265
-
266
- // WHEN
267
- const result: any = inject(token);
268
-
269
- // THEN
270
- expect(result).toEqual("TEST");
271
- });
272
- it("should invoke the provider from container with falsy value", async () => {
273
- // GIVEN
274
- const token = Symbol.for("TokenValue3");
275
-
276
- const provider = new Provider<any>(token);
277
- provider.scope = ProviderScope.SINGLETON;
278
- provider.useValue = null;
279
-
280
- const container = new Container();
281
- container.set(token, provider);
282
-
283
- await injector().load(container);
284
-
285
- // WHEN
286
- const result: any = inject(token);
287
-
288
- // THEN
289
- expect(result).toEqual(null);
290
- });
291
- });
292
- describe("when provider is a Factory (useFactory)", () => {
293
- it("should invoke the provider from container", async () => {
294
- // GIVEN
295
- const token = Symbol.for("TokenFactory");
296
-
297
- const provider = new Provider<any>(token);
298
- provider.scope = ProviderScope.SINGLETON;
299
- provider.useFactory = () => ({factory: "factory"});
300
-
301
- const container = new Container();
302
- container.set(token, provider);
303
-
304
- await injector().load(container);
305
-
306
- // WHEN
307
- const result: any = inject(token);
308
-
309
- // THEN
310
- expect(result).toEqual({factory: "factory"});
311
- });
312
- });
313
- describe("when provider is an AsyncFactory (useAsyncFactory)", () => {
314
- it("should invoke the provider from container", async () => {
315
- // GIVEN
316
- const tokenChild = Symbol.for("TokenChildFactory");
317
- const providerChild = new Provider<any>(tokenChild);
318
- providerChild.useAsyncFactory = (dep: any) => Promise.resolve("test async");
319
-
320
- const token = Symbol.for("TokenFactory");
321
- const provider = new Provider<any>(token);
322
- provider.deps = [tokenChild];
323
- provider.useAsyncFactory = (dep: any) => Promise.resolve({factory: dep + " factory"});
324
- provider.hooks = {
325
- $onDestroy: () => {}
326
- };
327
-
328
- const tokenSync = Symbol.for("TokenSyncFactory");
329
- const providerSync = new Provider<any>(tokenSync);
330
- providerSync.deps = [token];
331
- providerSync.hooks = {$onDestroy: vi.fn(), $onInit: vi.fn()};
332
- providerSync.useFactory = (asyncInstance: any) => asyncInstance.factory;
333
-
334
- const container = new Container();
335
- container.set(tokenChild, providerChild);
336
- container.set(token, provider);
337
- container.set(tokenSync, providerSync);
338
-
339
- await injector().load(container);
340
-
341
- // WHEN
342
- const result: any = inject(token);
343
- const result2: any = inject(tokenSync);
344
-
345
- // THEN
346
- expect(result).toEqual({factory: "test async factory"});
347
- expect(result2).toEqual("test async factory");
348
-
349
- await injector().emit("$onInit");
350
-
351
- expect(providerSync.hooks.$onInit).toHaveBeenCalledWith("test async factory");
352
- });
353
- it("should invoke the provider from container with nested async factory", async () => {
354
- // GIVEN
355
- const tokenChild = Symbol.for("TokenChildFactory");
356
- const providerChild = new Provider<any>(tokenChild);
357
- providerChild.useAsyncFactory = (dep: any) => Promise.resolve("test async");
358
-
359
- const token = Symbol.for("TokenFactory");
360
- const provider = new Provider<any>(token);
361
- provider.deps = [tokenChild];
362
- provider.useAsyncFactory = (dep: any) => Promise.resolve({factory: dep + " factory"});
363
-
364
- const token2 = Symbol.for("TokenFactory2");
365
- const provider2 = new Provider<any>(token2);
366
- provider2.deps = [token];
367
- provider2.useAsyncFactory = (dep: any) => {
368
- return Promise.resolve({factory: dep.factory + " factory2"});
369
- };
370
-
371
- const container = new Container();
372
- container.set(tokenChild, providerChild);
373
- container.set(token, provider);
374
- container.set(token2, provider2);
375
-
376
- await injector().load(container);
377
-
378
- // WHEN
379
- const result: any = inject(token2);
380
-
381
- // THEN
382
- expect(result).toEqual({factory: "test async factory factory2"});
383
- });
384
- });
385
- describe("when provider is an unknown provider", () => {
386
- it("should invoke the class from given parameter", () => {
387
- // GIVEN
388
- const token = class {};
389
-
390
- // WHEN
391
- const result: any = inject(token);
392
-
393
- // THEN
394
- expect(result).toBeInstanceOf(token);
395
- });
396
- });
397
- describe("when one of dependencies is undefined", () => {
398
- it("should throw InjectionError > UndefinedTokenError", () => {
399
- // GIVEN
400
- const token2 = class Ctrl {
401
- constructor() {}
402
- };
403
- const token3 = class Test {
404
- constructor(test: any) {}
405
- };
406
-
407
- const provider2 = new Provider<any>(token2);
408
- provider2.scope = ProviderScope.SINGLETON;
409
- provider2.type = ProviderType.CONTROLLER;
410
- provider2.useClass = token2;
411
-
412
- const provider3 = new Provider<any>(token3);
413
- provider3.scope = ProviderScope.SINGLETON;
414
- provider3.deps = [undefined] as never;
415
-
416
- injector().set(token2, provider2);
417
- injector().set(token3, provider3);
418
-
419
- // WHEN
420
- let actualError;
421
- try {
422
- inject(token3);
423
- } catch (er) {
424
- actualError = er;
425
- }
426
-
427
- // THEN
428
- expect(actualError.message).toContain(
429
- "Injection failed on Test\nOrigin: Unable to inject dependency. Given token is undefined. Could mean a circular dependency problem. Try to use @Inject(() => Token) to solve it."
430
- );
431
- });
432
- it("should throw InjectionError > Object", () => {
433
- // GIVEN
434
- const token2 = class Ctrl {
435
- constructor() {}
436
- };
437
- const token3 = class Test {
438
- constructor(test: Object) {}
439
- };
440
-
441
- const provider2 = new Provider<any>(token2);
442
- provider2.scope = ProviderScope.SINGLETON;
443
- provider2.type = ProviderType.CONTROLLER;
444
- provider2.useClass = token2;
445
-
446
- const provider3 = new Provider<any>(token3);
447
- provider3.scope = ProviderScope.SINGLETON;
448
- provider3.deps = [Object];
449
-
450
- injector().set(token2, provider2);
451
- injector().set(token3, provider3);
452
-
453
- // WHEN
454
- let actualError;
455
- try {
456
- inject(token3);
457
- } catch (er) {
458
- actualError = er;
459
- }
460
-
461
- // THEN
462
- expect(actualError.message).toContain("Injection failed on Test\nOrigin: Unable to inject dependency.");
463
- });
464
- it("should try to inject string token (optional)", () => {
465
- // GIVEN
466
-
467
- // WHEN
468
- const result = inject("token.not.found");
469
-
470
- // THEN
471
- expect(result).toEqual(undefined);
472
- });
473
- });
474
- describe("when error occur", () => {
475
- it("should throw InjectionError", () => {
476
- // GIVEN
477
- const token1 = Symbol.for("TokenValue");
478
- const token2 = Symbol.for("TokenFactory");
479
- const token3 = class Test {
480
- constructor(dep: any) {}
481
- };
482
-
483
- const provider1 = new Provider<any>(token1);
484
- provider1.scope = ProviderScope.SINGLETON;
485
- provider1.useValue = () => undefined; // should throw error because instance is undefined
486
-
487
- const provider2 = new Provider<any>(token2);
488
- provider2.scope = ProviderScope.SINGLETON;
489
- provider2.deps = [token1];
490
- provider2.useFactory = () => ({});
491
-
492
- const provider3 = new Provider<any>(token3);
493
- provider3.scope = ProviderScope.SINGLETON;
494
- provider3.deps = [token2];
495
-
496
- injector().set(token1, provider1);
497
- injector().set(token2, provider2);
498
- injector().set(token3, provider3);
499
-
500
- // WHEN
501
- let actualError;
502
- try {
503
- inject(token3);
504
- } catch (er) {
505
- actualError = er;
506
- }
507
-
508
- // THEN
509
- expect(actualError.message).toEqual(
510
- "Injection failed on Test > TokenFactory > TokenValue\nOrigin: Unable to create new instance from undefined value. Check your provider declaration for TokenValue"
511
- );
512
- });
513
- });
514
- describe("when provider has Provider as dependencies", () => {
515
- it("should inject Provider", () => {
516
- // GIVEN
517
-
518
- const token = Symbol.for("TokenProvider1");
519
- injector().add(token, {
520
- deps: [Provider],
521
- configuration: {
522
- test: "test"
523
- },
524
- useFactory(provider: any) {
525
- return {to: provider};
526
- }
527
- });
528
-
529
- // WHEN
530
- const instance: any = inject(token)!;
531
-
532
- // THEN
533
- expect(instance).toEqual({to: injector().getProvider(token)});
534
- });
535
- });
536
- describe("when provider has Configuration as dependencies", () => {
537
- it("should inject Provider", () => {
538
- // GIVEN
539
-
540
- const token = Symbol.for("TokenProvider1");
541
- injector().add(token, {
542
- deps: [Configuration],
543
- useFactory(settings: any) {
544
- return {to: settings};
545
- }
546
- });
547
-
548
- // WHEN
549
- const instance: any = inject(token)!;
550
-
551
- // THEN
552
- expect(instance).toEqual({to: injector().settings});
553
- });
554
- });
555
- });
556
- describe("resolveConfiguration()", () => {
557
- it("should getAll configuration from each providers", () => {
558
- // GIVEN
559
-
560
- injector().settings.set({
561
- scopes: {
562
- [ProviderType.VALUE]: ProviderScope.SINGLETON
563
- }
564
- });
565
-
566
- expect(injector().settings.get("scopes")).toEqual({
567
- [ProviderType.VALUE]: ProviderScope.SINGLETON
568
- });
569
-
570
- injector().add(Symbol.for("TOKEN1"), {
571
- configuration: {
572
- custom: "config",
573
- scopes: {
574
- provider_custom: ProviderScope.SINGLETON
575
- }
576
- }
577
- });
578
-
579
- injector().add(Symbol.for("TOKEN2"), {
580
- configuration: {
581
- scopes: {
582
- provider_custom_2: ProviderScope.SINGLETON
583
- }
584
- }
585
- });
586
-
587
- // WHEN
588
- injector().resolveConfiguration();
589
- // should getAll only once the configuration
590
- injector().resolveConfiguration();
591
-
592
- // THEN
593
- expect(injector().settings.get<string>("custom")).toEqual("config");
594
- expect(injector().settings.get<any>("scopes")).toEqual({
595
- provider_custom_2: "singleton",
596
- provider_custom: "singleton",
597
- value: "singleton"
598
- });
599
- });
600
- it("should getAll configuration from each providers (with resolvers)", () => {
601
- // GIVEN
602
-
603
- injector().add(Symbol.for("TOKEN1"), {
604
- configuration: {
605
- custom: {
606
- config: "1"
607
- }
608
- }
609
- });
610
-
611
- injector().add(Symbol.for("TOKEN2"), {
612
- configuration: {
613
- custom: {
614
- config2: "1"
615
- }
616
- }
617
- });
618
-
619
- // WHEN
620
- injector().resolveConfiguration();
621
-
622
- // THEN
623
- expect(injector().settings.get("custom")).toEqual({config: "1", config2: "1"});
624
- });
625
- });
626
- describe("alter()", () => {
627
- it("should alter value", () => {
628
- @Injectable()
629
- class Test {
630
- $alterValue(value: any) {
631
- return "alteredValue";
632
- }
633
- }
634
-
635
- vi.spyOn(Test.prototype, "$alterValue");
636
-
637
- // GIVEN
638
-
639
- inject<Test>(Test);
640
-
641
- const service = injector().get<Test>(Test)!;
642
-
643
- const value = injector().alter("$alterValue", "value");
644
-
645
- expect(service.$alterValue).toHaveBeenCalledWith("value");
646
- expect(value).toEqual("alteredValue");
647
- });
648
- it("should alter value (factory)", () => {
649
- registerProvider({
650
- token: "TOKEN",
651
- useFactory: () => {
652
- return {};
653
- },
654
- hooks: {
655
- $alterValue(instance: any, value: any) {
656
- return "alteredValue";
657
- }
658
- }
659
- });
660
-
661
- // GIVEN
662
-
663
- inject<any>("TOKEN");
664
-
665
- const value = injector().alter("$alterValue", "value");
666
-
667
- expect(value).toEqual("alteredValue");
668
- });
669
- });
670
- describe("alterAsync()", () => {
671
- it("should alter value", async () => {
672
- @Injectable()
673
- class Test {
674
- $alterValue(value: any) {
675
- return Promise.resolve(value + ":alteredValue");
676
- }
677
- }
678
-
679
- vi.spyOn(Test.prototype, "$alterValue");
680
-
681
- // GIVEN
682
-
683
- inject<Test>(Test);
684
-
685
- const value = await injector().alterAsync("$alterValue", "value");
686
-
687
- expect(value).toEqual("value:alteredValue");
688
- });
689
- });
690
- describe("imports", () => {
691
- it("should getAll all provider and override by configuration a provider (use)", async () => {
692
- @Injectable()
693
- class TestService {
694
- get() {
695
- return "hello";
696
- }
697
- }
698
-
699
- injector().settings.set("imports", [
700
- {
701
- token: TestService,
702
- use: {
703
- get: vi.fn().mockReturnValue("world")
704
- }
705
- }
706
- ]);
707
-
708
- await injector().load();
709
-
710
- const result = injector().get<TestService>(TestService)!.get();
711
- expect(result).toEqual("world");
712
- });
713
- it("should getAll all provider and override by configuration a provider (useClass)", async () => {
714
- @Injectable()
715
- class TestService {
716
- get() {
717
- return "hello";
718
- }
719
- }
720
-
721
- @Injectable()
722
- class FsTestService {
723
- get() {
724
- return "fs";
725
- }
726
- }
727
-
728
- injector().settings.set("imports", [
729
- {
730
- token: TestService,
731
- useClass: FsTestService
732
- }
733
- ]);
734
-
735
- await injector().load();
736
-
737
- const result = injector().get<TestService>(TestService)!.get();
738
- expect(result).toEqual("fs");
739
- });
740
- it("should getAll all provider and override by configuration a provider (useFactory)", async () => {
741
- @Injectable()
742
- class TestService {
743
- get() {
744
- return "hello";
745
- }
746
- }
747
-
748
- injector().settings.set("imports", [
749
- {
750
- token: TestService,
751
- useFactory: () => {
752
- return {
753
- get() {
754
- return "world";
755
- }
756
- };
757
- }
758
- }
759
- ]);
760
-
761
- await injector().load();
762
-
763
- const result = injector().get<TestService>(TestService)!.get();
764
- expect(result).toEqual("world");
765
- });
766
- it("should load all provider and override by configuration a provider (useAsyncFactory)", async () => {
767
- @Injectable()
768
- class TestService {
769
- get() {
770
- return "hello";
771
- }
772
- }
773
-
774
- injector().settings.set("imports", [
775
- {
776
- token: TestService,
777
- useAsyncFactory: () => {
778
- return Promise.resolve({
779
- get() {
780
- return "world";
781
- }
782
- });
783
- }
784
- }
785
- ]);
786
-
787
- await injector().load();
788
-
789
- const result = injector().get<TestService>(TestService)!.get();
790
- expect(result).toEqual("world");
791
- });
792
- });
793
- });