@tsed/di 7.83.3 → 8.0.0-alpha.10

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 (289) hide show
  1. package/lib/browser/di.umd.min.js +1 -1
  2. package/lib/browser/di.umd.min.js.map +1 -1
  3. package/lib/esm/common/constants/constants.js +5 -3
  4. package/lib/esm/common/constants/constants.js.map +1 -1
  5. package/lib/esm/common/decorators/autoInjectable.js +23 -3
  6. package/lib/esm/common/decorators/autoInjectable.js.map +1 -1
  7. package/lib/esm/common/decorators/configuration.js.map +1 -1
  8. package/lib/esm/common/decorators/constant.js +28 -11
  9. package/lib/esm/common/decorators/constant.js.map +1 -1
  10. package/lib/esm/common/decorators/controller.js.map +1 -1
  11. package/lib/esm/common/decorators/inject.js +63 -73
  12. package/lib/esm/common/decorators/inject.js.map +1 -1
  13. package/lib/esm/common/decorators/intercept.js +40 -13
  14. package/lib/esm/common/decorators/intercept.js.map +1 -1
  15. package/lib/esm/common/decorators/lazyInject.js +15 -15
  16. package/lib/esm/common/decorators/lazyInject.js.map +1 -1
  17. package/lib/esm/common/decorators/module.js +1 -1
  18. package/lib/esm/common/decorators/module.js.map +1 -1
  19. package/lib/esm/common/decorators/opts.js +2 -2
  20. package/lib/esm/common/decorators/opts.js.map +1 -1
  21. package/lib/esm/common/decorators/overrideProvider.js.map +1 -1
  22. package/lib/esm/common/decorators/scope.js.map +1 -1
  23. package/lib/esm/common/decorators/useOpts.js +3 -7
  24. package/lib/esm/common/decorators/useOpts.js.map +1 -1
  25. package/lib/esm/common/decorators/value.js +17 -11
  26. package/lib/esm/common/decorators/value.js.map +1 -1
  27. package/lib/esm/common/domain/Container.js +3 -3
  28. package/lib/esm/common/domain/Container.js.map +1 -1
  29. package/lib/esm/common/domain/LocalsContainer.js.map +1 -1
  30. package/lib/esm/common/domain/Provider.js +1 -1
  31. package/lib/esm/common/domain/Provider.js.map +1 -1
  32. package/lib/esm/common/errors/InjectionError.js.map +1 -1
  33. package/lib/esm/common/index.js +0 -2
  34. package/lib/esm/common/index.js.map +1 -1
  35. package/lib/esm/common/registries/GlobalProviders.js +7 -7
  36. package/lib/esm/common/registries/GlobalProviders.js.map +1 -1
  37. package/lib/esm/common/registries/ProviderRegistry.js.map +1 -1
  38. package/lib/esm/common/services/DIConfiguration.js.map +1 -1
  39. package/lib/esm/common/services/InjectorService.js +50 -167
  40. package/lib/esm/common/services/InjectorService.js.map +1 -1
  41. package/lib/esm/common/utils/createContainer.js.map +1 -1
  42. package/lib/esm/common/utils/resolveControllers.js +1 -1
  43. package/lib/esm/common/utils/resolveControllers.js.map +1 -1
  44. package/lib/esm/node/decorators/injectContext.js +14 -5
  45. package/lib/esm/node/decorators/injectContext.js.map +1 -1
  46. package/lib/esm/node/domain/ContextLogger.js +2 -2
  47. package/lib/esm/node/domain/ContextLogger.js.map +1 -1
  48. package/lib/esm/node/domain/DIContext.js.map +1 -1
  49. package/lib/esm/node/services/DILogger.js.map +1 -1
  50. package/lib/esm/node/services/DITest.js +10 -5
  51. package/lib/esm/node/services/DITest.js.map +1 -1
  52. package/lib/esm/node/utils/asyncHookContext.js +3 -2
  53. package/lib/esm/node/utils/asyncHookContext.js.map +1 -1
  54. package/lib/esm/node/utils/setLoggerFormat.js.map +1 -1
  55. package/lib/esm/node/utils/setLoggerLevel.js.map +1 -1
  56. package/lib/types/common/constants/constants.d.ts +5 -3
  57. package/lib/types/common/decorators/constant.d.ts +4 -1
  58. package/lib/types/common/decorators/inject.d.ts +17 -4
  59. package/lib/types/common/decorators/intercept.d.ts +3 -0
  60. package/lib/types/common/decorators/module.d.ts +1 -1
  61. package/lib/types/common/decorators/value.d.ts +2 -1
  62. package/lib/types/common/domain/Container.d.ts +4 -4
  63. package/lib/types/common/domain/Provider.d.ts +6 -6
  64. package/lib/types/common/index.d.ts +0 -2
  65. package/lib/types/common/interfaces/ImportTokenProviderOpts.d.ts +2 -2
  66. package/lib/types/common/interfaces/InterceptorContext.d.ts +1 -1
  67. package/lib/types/common/interfaces/InvokeOptions.d.ts +8 -2
  68. package/lib/types/common/interfaces/ProviderOpts.d.ts +2 -2
  69. package/lib/types/common/interfaces/RegistrySettings.d.ts +2 -1
  70. package/lib/types/common/interfaces/ResolvedInvokeOptions.d.ts +1 -1
  71. package/lib/types/common/interfaces/TokenProvider.d.ts +2 -6
  72. package/lib/types/common/registries/GlobalProviders.d.ts +2 -2
  73. package/lib/types/common/services/InjectorService.d.ts +30 -54
  74. package/lib/types/node/decorators/injectContext.d.ts +2 -1
  75. package/lib/types/node/domain/ContextLogger.d.ts +3 -3
  76. package/lib/types/node/domain/DIContext.d.ts +1 -1
  77. package/lib/types/node/services/DITest.d.ts +1 -1
  78. package/lib/types/node/utils/asyncHookContext.d.ts +4 -3
  79. package/package.json +21 -18
  80. package/lib/cjs/common/constants/constants.js +0 -7
  81. package/lib/cjs/common/constants/constants.js.map +0 -1
  82. package/lib/cjs/common/decorators/autoInjectable.js +0 -18
  83. package/lib/cjs/common/decorators/autoInjectable.js.map +0 -1
  84. package/lib/cjs/common/decorators/configuration.js +0 -24
  85. package/lib/cjs/common/decorators/configuration.js.map +0 -1
  86. package/lib/cjs/common/decorators/constant.js +0 -55
  87. package/lib/cjs/common/decorators/constant.js.map +0 -1
  88. package/lib/cjs/common/decorators/controller.js +0 -53
  89. package/lib/cjs/common/decorators/controller.js.map +0 -1
  90. package/lib/cjs/common/decorators/inject.js +0 -93
  91. package/lib/cjs/common/decorators/inject.js.map +0 -1
  92. package/lib/cjs/common/decorators/injectable.js +0 -32
  93. package/lib/cjs/common/decorators/injectable.js.map +0 -1
  94. package/lib/cjs/common/decorators/intercept.js +0 -36
  95. package/lib/cjs/common/decorators/intercept.js.map +0 -1
  96. package/lib/cjs/common/decorators/interceptor.js +0 -21
  97. package/lib/cjs/common/decorators/interceptor.js.map +0 -1
  98. package/lib/cjs/common/decorators/lazyInject.js +0 -71
  99. package/lib/cjs/common/decorators/lazyInject.js.map +0 -1
  100. package/lib/cjs/common/decorators/module.js +0 -32
  101. package/lib/cjs/common/decorators/module.js.map +0 -1
  102. package/lib/cjs/common/decorators/opts.js +0 -54
  103. package/lib/cjs/common/decorators/opts.js.map +0 -1
  104. package/lib/cjs/common/decorators/overrideProvider.js +0 -17
  105. package/lib/cjs/common/decorators/overrideProvider.js.map +0 -1
  106. package/lib/cjs/common/decorators/scope.js +0 -16
  107. package/lib/cjs/common/decorators/scope.js.map +0 -1
  108. package/lib/cjs/common/decorators/service.js +0 -18
  109. package/lib/cjs/common/decorators/service.js.map +0 -1
  110. package/lib/cjs/common/decorators/useOpts.js +0 -65
  111. package/lib/cjs/common/decorators/useOpts.js.map +0 -1
  112. package/lib/cjs/common/decorators/value.js +0 -55
  113. package/lib/cjs/common/decorators/value.js.map +0 -1
  114. package/lib/cjs/common/domain/Container.js +0 -72
  115. package/lib/cjs/common/domain/Container.js.map +0 -1
  116. package/lib/cjs/common/domain/ControllerProvider.js +0 -36
  117. package/lib/cjs/common/domain/ControllerProvider.js.map +0 -1
  118. package/lib/cjs/common/domain/InjectablePropertyType.js +0 -12
  119. package/lib/cjs/common/domain/InjectablePropertyType.js.map +0 -1
  120. package/lib/cjs/common/domain/LocalsContainer.js +0 -15
  121. package/lib/cjs/common/domain/LocalsContainer.js.map +0 -1
  122. package/lib/cjs/common/domain/Provider.js +0 -134
  123. package/lib/cjs/common/domain/Provider.js.map +0 -1
  124. package/lib/cjs/common/domain/ProviderScope.js +0 -10
  125. package/lib/cjs/common/domain/ProviderScope.js.map +0 -1
  126. package/lib/cjs/common/domain/ProviderType.js +0 -15
  127. package/lib/cjs/common/domain/ProviderType.js.map +0 -1
  128. package/lib/cjs/common/errors/InjectionError.js +0 -58
  129. package/lib/cjs/common/errors/InjectionError.js.map +0 -1
  130. package/lib/cjs/common/errors/InvalidPropertyTokenError.js +0 -12
  131. package/lib/cjs/common/errors/InvalidPropertyTokenError.js.map +0 -1
  132. package/lib/cjs/common/errors/UndefinedTokenError.js +0 -11
  133. package/lib/cjs/common/errors/UndefinedTokenError.js.map +0 -1
  134. package/lib/cjs/common/index.js +0 -60
  135. package/lib/cjs/common/index.js.map +0 -1
  136. package/lib/cjs/common/interfaces/DIConfigurationOptions.js +0 -3
  137. package/lib/cjs/common/interfaces/DIConfigurationOptions.js.map +0 -1
  138. package/lib/cjs/common/interfaces/DILogger.js +0 -3
  139. package/lib/cjs/common/interfaces/DILogger.js.map +0 -1
  140. package/lib/cjs/common/interfaces/DILoggerOptions.js +0 -3
  141. package/lib/cjs/common/interfaces/DILoggerOptions.js.map +0 -1
  142. package/lib/cjs/common/interfaces/DIResolver.js +0 -3
  143. package/lib/cjs/common/interfaces/DIResolver.js.map +0 -1
  144. package/lib/cjs/common/interfaces/ImportTokenProviderOpts.js +0 -3
  145. package/lib/cjs/common/interfaces/ImportTokenProviderOpts.js.map +0 -1
  146. package/lib/cjs/common/interfaces/InjectableProperties.js +0 -3
  147. package/lib/cjs/common/interfaces/InjectableProperties.js.map +0 -1
  148. package/lib/cjs/common/interfaces/InterceptorContext.js +0 -3
  149. package/lib/cjs/common/interfaces/InterceptorContext.js.map +0 -1
  150. package/lib/cjs/common/interfaces/InterceptorMethods.js +0 -3
  151. package/lib/cjs/common/interfaces/InterceptorMethods.js.map +0 -1
  152. package/lib/cjs/common/interfaces/InvokeOptions.js +0 -3
  153. package/lib/cjs/common/interfaces/InvokeOptions.js.map +0 -1
  154. package/lib/cjs/common/interfaces/OnDestroy.js +0 -3
  155. package/lib/cjs/common/interfaces/OnDestroy.js.map +0 -1
  156. package/lib/cjs/common/interfaces/OnInit.js +0 -3
  157. package/lib/cjs/common/interfaces/OnInit.js.map +0 -1
  158. package/lib/cjs/common/interfaces/ProviderOpts.js +0 -3
  159. package/lib/cjs/common/interfaces/ProviderOpts.js.map +0 -1
  160. package/lib/cjs/common/interfaces/RegistrySettings.js +0 -3
  161. package/lib/cjs/common/interfaces/RegistrySettings.js.map +0 -1
  162. package/lib/cjs/common/interfaces/ResolvedInvokeOptions.js +0 -3
  163. package/lib/cjs/common/interfaces/ResolvedInvokeOptions.js.map +0 -1
  164. package/lib/cjs/common/interfaces/TokenProvider.js +0 -3
  165. package/lib/cjs/common/interfaces/TokenProvider.js.map +0 -1
  166. package/lib/cjs/common/interfaces/TokenRoute.js +0 -3
  167. package/lib/cjs/common/interfaces/TokenRoute.js.map +0 -1
  168. package/lib/cjs/common/registries/GlobalProviders.js +0 -117
  169. package/lib/cjs/common/registries/GlobalProviders.js.map +0 -1
  170. package/lib/cjs/common/registries/ProviderRegistry.js +0 -86
  171. package/lib/cjs/common/registries/ProviderRegistry.js.map +0 -1
  172. package/lib/cjs/common/services/DIConfiguration.js +0 -142
  173. package/lib/cjs/common/services/DIConfiguration.js.map +0 -1
  174. package/lib/cjs/common/services/DILogger.js +0 -14
  175. package/lib/cjs/common/services/DILogger.js.map +0 -1
  176. package/lib/cjs/common/services/InjectorService.js +0 -653
  177. package/lib/cjs/common/services/InjectorService.js.map +0 -1
  178. package/lib/cjs/common/utils/colors.js +0 -10
  179. package/lib/cjs/common/utils/colors.js.map +0 -1
  180. package/lib/cjs/common/utils/createContainer.js +0 -14
  181. package/lib/cjs/common/utils/createContainer.js.map +0 -1
  182. package/lib/cjs/common/utils/getConfiguration.js +0 -23
  183. package/lib/cjs/common/utils/getConfiguration.js.map +0 -1
  184. package/lib/cjs/common/utils/getConstructorDependencies.js +0 -13
  185. package/lib/cjs/common/utils/getConstructorDependencies.js.map +0 -1
  186. package/lib/cjs/common/utils/resolveControllers.js +0 -47
  187. package/lib/cjs/common/utils/resolveControllers.js.map +0 -1
  188. package/lib/cjs/index.js +0 -6
  189. package/lib/cjs/index.js.map +0 -1
  190. package/lib/cjs/node/decorators/injectContext.js +0 -30
  191. package/lib/cjs/node/decorators/injectContext.js.map +0 -1
  192. package/lib/cjs/node/domain/ContextLogger.js +0 -99
  193. package/lib/cjs/node/domain/ContextLogger.js.map +0 -1
  194. package/lib/cjs/node/domain/DIContext.js +0 -102
  195. package/lib/cjs/node/domain/DIContext.js.map +0 -1
  196. package/lib/cjs/node/index.js +0 -18
  197. package/lib/cjs/node/index.js.map +0 -1
  198. package/lib/cjs/node/interfaces/AlterRunInContext.js +0 -3
  199. package/lib/cjs/node/interfaces/AlterRunInContext.js.map +0 -1
  200. package/lib/cjs/node/services/DILogger.js +0 -12
  201. package/lib/cjs/node/services/DILogger.js.map +0 -1
  202. package/lib/cjs/node/services/DITest.js +0 -121
  203. package/lib/cjs/node/services/DITest.js.map +0 -1
  204. package/lib/cjs/node/utils/asyncHookContext.js +0 -42
  205. package/lib/cjs/node/utils/asyncHookContext.js.map +0 -1
  206. package/lib/cjs/node/utils/attachLogger.js +0 -10
  207. package/lib/cjs/node/utils/attachLogger.js.map +0 -1
  208. package/lib/cjs/node/utils/setLoggerConfiguration.js +0 -11
  209. package/lib/cjs/node/utils/setLoggerConfiguration.js.map +0 -1
  210. package/lib/cjs/node/utils/setLoggerFormat.js +0 -33
  211. package/lib/cjs/node/utils/setLoggerFormat.js.map +0 -1
  212. package/lib/cjs/node/utils/setLoggerLevel.js +0 -15
  213. package/lib/cjs/node/utils/setLoggerLevel.js.map +0 -1
  214. package/lib/cjs/package.json +0 -3
  215. package/lib/esm/common/errors/UndefinedTokenError.js +0 -7
  216. package/lib/esm/common/errors/UndefinedTokenError.js.map +0 -1
  217. package/lib/esm/common/interfaces/InjectableProperties.js +0 -2
  218. package/lib/esm/common/interfaces/InjectableProperties.js.map +0 -1
  219. package/lib/esm/package.json +0 -3
  220. package/lib/types/common/errors/UndefinedTokenError.d.ts +0 -4
  221. package/lib/types/common/interfaces/InjectableProperties.d.ts +0 -25
  222. package/lib/types-esm/common/constants/constants.d.ts +0 -3
  223. package/lib/types-esm/common/decorators/autoInjectable.d.ts +0 -1
  224. package/lib/types-esm/common/decorators/configuration.d.ts +0 -8
  225. package/lib/types-esm/common/decorators/constant.d.ts +0 -36
  226. package/lib/types-esm/common/decorators/controller.d.ts +0 -42
  227. package/lib/types-esm/common/decorators/inject.d.ts +0 -22
  228. package/lib/types-esm/common/decorators/injectable.d.ts +0 -20
  229. package/lib/types-esm/common/decorators/intercept.d.ts +0 -10
  230. package/lib/types-esm/common/decorators/interceptor.d.ts +0 -10
  231. package/lib/types-esm/common/decorators/lazyInject.d.ts +0 -43
  232. package/lib/types-esm/common/decorators/module.d.ts +0 -37
  233. package/lib/types-esm/common/decorators/opts.d.ts +0 -41
  234. package/lib/types-esm/common/decorators/overrideProvider.d.ts +0 -8
  235. package/lib/types-esm/common/decorators/scope.d.ts +0 -8
  236. package/lib/types-esm/common/decorators/service.d.ts +0 -10
  237. package/lib/types-esm/common/decorators/useOpts.d.ts +0 -42
  238. package/lib/types-esm/common/decorators/value.d.ts +0 -36
  239. package/lib/types-esm/common/domain/Container.d.ts +0 -43
  240. package/lib/types-esm/common/domain/ControllerProvider.d.ts +0 -17
  241. package/lib/types-esm/common/domain/InjectablePropertyType.d.ts +0 -7
  242. package/lib/types-esm/common/domain/LocalsContainer.d.ts +0 -6
  243. package/lib/types-esm/common/domain/Provider.d.ts +0 -71
  244. package/lib/types-esm/common/domain/ProviderScope.d.ts +0 -5
  245. package/lib/types-esm/common/domain/ProviderType.d.ts +0 -10
  246. package/lib/types-esm/common/errors/InjectionError.d.ts +0 -8
  247. package/lib/types-esm/common/errors/InvalidPropertyTokenError.d.ts +0 -4
  248. package/lib/types-esm/common/errors/UndefinedTokenError.d.ts +0 -4
  249. package/lib/types-esm/common/index.d.ts +0 -56
  250. package/lib/types-esm/common/interfaces/DIConfigurationOptions.d.ts +0 -29
  251. package/lib/types-esm/common/interfaces/DILogger.d.ts +0 -8
  252. package/lib/types-esm/common/interfaces/DILoggerOptions.d.ts +0 -53
  253. package/lib/types-esm/common/interfaces/DIResolver.d.ts +0 -5
  254. package/lib/types-esm/common/interfaces/ImportTokenProviderOpts.d.ts +0 -19
  255. package/lib/types-esm/common/interfaces/InjectableProperties.d.ts +0 -25
  256. package/lib/types-esm/common/interfaces/InterceptorContext.d.ts +0 -11
  257. package/lib/types-esm/common/interfaces/InterceptorMethods.d.ts +0 -4
  258. package/lib/types-esm/common/interfaces/InvokeOptions.d.ts +0 -24
  259. package/lib/types-esm/common/interfaces/OnDestroy.d.ts +0 -3
  260. package/lib/types-esm/common/interfaces/OnInit.d.ts +0 -3
  261. package/lib/types-esm/common/interfaces/ProviderOpts.d.ts +0 -59
  262. package/lib/types-esm/common/interfaces/RegistrySettings.d.ts +0 -20
  263. package/lib/types-esm/common/interfaces/ResolvedInvokeOptions.d.ts +0 -12
  264. package/lib/types-esm/common/interfaces/TokenProvider.d.ts +0 -6
  265. package/lib/types-esm/common/interfaces/TokenRoute.d.ts +0 -5
  266. package/lib/types-esm/common/registries/GlobalProviders.d.ts +0 -58
  267. package/lib/types-esm/common/registries/ProviderRegistry.d.ts +0 -58
  268. package/lib/types-esm/common/services/DIConfiguration.d.ts +0 -57
  269. package/lib/types-esm/common/services/DILogger.d.ts +0 -3
  270. package/lib/types-esm/common/services/InjectorService.d.ts +0 -227
  271. package/lib/types-esm/common/utils/colors.d.ts +0 -5
  272. package/lib/types-esm/common/utils/createContainer.d.ts +0 -3
  273. package/lib/types-esm/common/utils/getConfiguration.d.ts +0 -3
  274. package/lib/types-esm/common/utils/getConstructorDependencies.d.ts +0 -2
  275. package/lib/types-esm/common/utils/resolveControllers.d.ts +0 -12
  276. package/lib/types-esm/index.d.ts +0 -2
  277. package/lib/types-esm/node/decorators/injectContext.d.ts +0 -15
  278. package/lib/types-esm/node/domain/ContextLogger.d.ts +0 -37
  279. package/lib/types-esm/node/domain/DIContext.d.ts +0 -61
  280. package/lib/types-esm/node/index.d.ts +0 -14
  281. package/lib/types-esm/node/interfaces/AlterRunInContext.d.ts +0 -3
  282. package/lib/types-esm/node/services/DILogger.d.ts +0 -1
  283. package/lib/types-esm/node/services/DITest.d.ts +0 -37
  284. package/lib/types-esm/node/utils/asyncHookContext.d.ts +0 -14
  285. package/lib/types-esm/node/utils/attachLogger.d.ts +0 -2
  286. package/lib/types-esm/node/utils/setLoggerConfiguration.d.ts +0 -2
  287. package/lib/types-esm/node/utils/setLoggerFormat.d.ts +0 -6
  288. package/lib/types-esm/node/utils/setLoggerLevel.d.ts +0 -6
  289. /package/{webpack.config.js → webpack.config.cjs} +0 -0
@@ -1,653 +0,0 @@
1
- "use strict";
2
- var InjectorService_1;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.InjectorService = void 0;
5
- const tslib_1 = require("tslib");
6
- const core_1 = require("@tsed/core");
7
- const constants_js_1 = require("../constants/constants.js");
8
- const configuration_js_1 = require("../decorators/configuration.js");
9
- const injectable_js_1 = require("../decorators/injectable.js");
10
- const Container_js_1 = require("../domain/Container.js");
11
- const InjectablePropertyType_js_1 = require("../domain/InjectablePropertyType.js");
12
- const LocalsContainer_js_1 = require("../domain/LocalsContainer.js");
13
- const Provider_js_1 = require("../domain/Provider.js");
14
- const ProviderScope_js_1 = require("../domain/ProviderScope.js");
15
- const InjectionError_js_1 = require("../errors/InjectionError.js");
16
- const UndefinedTokenError_js_1 = require("../errors/UndefinedTokenError.js");
17
- const GlobalProviders_js_1 = require("../registries/GlobalProviders.js");
18
- const createContainer_js_1 = require("../utils/createContainer.js");
19
- const getConstructorDependencies_js_1 = require("../utils/getConstructorDependencies.js");
20
- const resolveControllers_js_1 = require("../utils/resolveControllers.js");
21
- const DIConfiguration_js_1 = require("./DIConfiguration.js");
22
- let globalInjector;
23
- /**
24
- * This service contain all services collected by `@Service` or services declared manually with `InjectorService.factory()` or `InjectorService.service()`.
25
- *
26
- * ### Example:
27
- *
28
- * ```typescript
29
- * import {InjectorService} from "@tsed/di";
30
- *
31
- * // Import the services (all services are decorated with @Service()";
32
- * import MyService1 from "./services/service1.js";
33
- * import MyService2 from "./services/service2.js";
34
- * import MyService3 from "./services/service3.js";
35
- *
36
- * // When all services are imported, you can load InjectorService.
37
- * const injector = new InjectorService()
38
- *
39
- * await injector.load();
40
- *
41
- * const myService1 = injector.get<MyService1>(MyServcice1);
42
- * ```
43
- */
44
- let InjectorService = InjectorService_1 = class InjectorService extends Container_js_1.Container {
45
- #cache;
46
- #hooks;
47
- constructor() {
48
- super();
49
- this.settings = new DIConfiguration_js_1.DIConfiguration();
50
- this.logger = console;
51
- this.resolvedConfiguration = false;
52
- this.#cache = new LocalsContainer_js_1.LocalsContainer();
53
- this.#hooks = new core_1.Hooks();
54
- this.#cache.set(InjectorService_1, this);
55
- globalInjector = this;
56
- }
57
- get resolvers() {
58
- return this.settings.resolvers;
59
- }
60
- get scopes() {
61
- return this.settings.scopes || {};
62
- }
63
- static resolveAutoInjectableArgs(token, locals, args) {
64
- if (!globalInjector) {
65
- throw new Error("InjectorService instance is not created yet.");
66
- }
67
- const deps = (0, getConstructorDependencies_js_1.getConstructorDependencies)(token);
68
- const list = [];
69
- const length = Math.max(deps.length, args.length);
70
- for (let i = 0; i < length; i++) {
71
- if (args[i] !== undefined) {
72
- list.push(args[i]);
73
- }
74
- else {
75
- const value = deps[i];
76
- const instance = (0, core_1.isArray)(value)
77
- ? globalInjector.getMany(value[0], locals, { parent: token })
78
- : globalInjector.invoke(value, locals, { parent: token });
79
- list.push(instance);
80
- }
81
- }
82
- return list;
83
- }
84
- static bind(instance, locals) {
85
- globalInjector.bindInjectableProperties(instance, locals, {});
86
- }
87
- /**
88
- * Retrieve default scope for a given provider.
89
- * @param provider
90
- */
91
- scopeOf(provider) {
92
- return provider.scope || this.scopes[provider.type] || ProviderScope_js_1.ProviderScope.SINGLETON;
93
- }
94
- /**
95
- * Return a list of instance build by the injector.
96
- */
97
- toArray() {
98
- return [...this.#cache.values()];
99
- }
100
- /**
101
- * Get a service or factory already constructed from his symbol or class.
102
- *
103
- * #### Example
104
- *
105
- * ```typescript
106
- * import {InjectorService} from "@tsed/di";
107
- * import MyService from "./services.js";
108
- *
109
- * class OtherService {
110
- * constructor(injectorService: InjectorService) {
111
- * const myService = injectorService.get<MyService>(MyService);
112
- * }
113
- * }
114
- * ```
115
- *
116
- * @param token The class or symbol registered in InjectorService.
117
- * @param options
118
- * @returns {boolean}
119
- */
120
- get(token, options = {}) {
121
- const instance = this.getInstance(token);
122
- if (instance !== undefined) {
123
- return instance;
124
- }
125
- if (!this.hasProvider(token)) {
126
- for (const resolver of this.resolvers) {
127
- const result = resolver.get(token, options);
128
- if (result !== undefined) {
129
- return result;
130
- }
131
- }
132
- }
133
- }
134
- /**
135
- * Return all instance of the same provider type
136
- * @param type
137
- * @param locals
138
- * @param options
139
- */
140
- getMany(type, locals, options) {
141
- return this.getProviders(type).map((provider) => this.invoke(provider.token, locals, options));
142
- }
143
- /**
144
- * The has() method returns a boolean indicating whether an element with the specified key exists or not.
145
- * @returns {boolean}
146
- * @param token
147
- */
148
- has(token) {
149
- return this.#cache.get(token) !== undefined;
150
- }
151
- alias(token, alias) {
152
- this.#cache.set(alias, this.#cache.get(token));
153
- return this;
154
- }
155
- /**
156
- * Invoke the class and inject all services that required by the class constructor.
157
- *
158
- * #### Example
159
- *
160
- * ```typescript
161
- * import {InjectorService} from "@tsed/di";
162
- * import MyService from "./services.js";
163
- *
164
- * class OtherService {
165
- * constructor(injectorService: InjectorService) {
166
- * const myService = injectorService.invoke<MyService>(MyService);
167
- * }
168
- * }
169
- * ```
170
- *
171
- * @param token The injectable class to invoke. Class parameters are injected according constructor signature.
172
- * @param locals Optional object. If preset then any argument Class are read from this object first, before the `InjectorService` is consulted.
173
- * @param options
174
- * @returns {Type} The class constructed.
175
- */
176
- invoke(token, locals, options = {}) {
177
- let instance = locals ? locals.get(token) : undefined;
178
- if (instance !== undefined) {
179
- return instance;
180
- }
181
- if (token === configuration_js_1.Configuration) {
182
- return this.settings;
183
- }
184
- instance = !options.rebuild ? this.getInstance(token) : undefined;
185
- if (instance != undefined) {
186
- return instance;
187
- }
188
- if (token === constants_js_1.DI_PARAM_OPTIONS) {
189
- return {};
190
- }
191
- const provider = this.ensureProvider(token);
192
- const set = (instance) => {
193
- this.#cache.set(token, instance);
194
- provider?.alias && this.alias(token, provider.alias);
195
- };
196
- if (!provider || options.rebuild) {
197
- instance = this.resolve(token, locals, options);
198
- if (this.hasProvider(token)) {
199
- set(instance);
200
- }
201
- return instance;
202
- }
203
- instance = this.resolve(token, locals, options);
204
- switch (this.scopeOf(provider)) {
205
- case ProviderScope_js_1.ProviderScope.SINGLETON:
206
- if (provider.hooks && !options.rebuild) {
207
- this.registerHooks(provider, instance);
208
- }
209
- if (!provider.isAsync() || !(0, core_1.isPromise)(instance)) {
210
- set(instance);
211
- return instance;
212
- }
213
- // store promise to lock token in cache
214
- set(instance);
215
- instance = instance.then((instance) => {
216
- set(instance);
217
- return instance;
218
- });
219
- return instance;
220
- case ProviderScope_js_1.ProviderScope.REQUEST:
221
- if (locals) {
222
- locals.set(token, instance);
223
- if (provider.hooks && provider.hooks.$onDestroy) {
224
- locals.hooks.on("$onDestroy", (...args) => provider.hooks.$onDestroy(instance, ...args));
225
- }
226
- }
227
- return instance;
228
- }
229
- return instance;
230
- }
231
- /**
232
- * Build only providers which are asynchronous.
233
- */
234
- async loadAsync() {
235
- for (const [, provider] of this) {
236
- if (!this.has(provider.token) && provider.isAsync()) {
237
- await this.invoke(provider.token);
238
- }
239
- }
240
- }
241
- loadSync() {
242
- for (const [, provider] of this) {
243
- if (!this.has(provider.token) && this.scopeOf(provider) === ProviderScope_js_1.ProviderScope.SINGLETON) {
244
- this.invoke(provider.token);
245
- }
246
- }
247
- }
248
- /**
249
- * Boostrap injector from container and resolve configuration.
250
- *
251
- * @param container
252
- */
253
- bootstrap(container = (0, createContainer_js_1.createContainer)()) {
254
- // Clone all providers in the container
255
- this.addProviders(container);
256
- // Resolve all configuration
257
- this.resolveConfiguration();
258
- // allow mocking or changing provider instance before loading injector
259
- this.resolveImportsProviders();
260
- return this;
261
- }
262
- /**
263
- * Load injector from a given module
264
- * @param rootModule
265
- */
266
- loadModule(rootModule) {
267
- this.settings.routes = this.settings.routes.concat((0, resolveControllers_js_1.resolveControllers)(this.settings));
268
- const container = (0, createContainer_js_1.createContainer)();
269
- container.delete(rootModule);
270
- container.addProvider(rootModule, {
271
- type: "server:module",
272
- scope: ProviderScope_js_1.ProviderScope.SINGLETON
273
- });
274
- return this.load(container);
275
- }
276
- /**
277
- * Build all providers from given container (or GlobalProviders) and emit `$onInit` event.
278
- *
279
- * @param container
280
- */
281
- async load(container = (0, createContainer_js_1.createContainer)()) {
282
- this.bootstrap(container);
283
- // build async and sync provider
284
- await this.loadAsync();
285
- // load sync provider
286
- this.loadSync();
287
- await this.emit("$beforeInit");
288
- await this.emit("$onInit");
289
- }
290
- /**
291
- * Load all configurations registered on providers
292
- */
293
- resolveConfiguration() {
294
- if (this.resolvedConfiguration) {
295
- return;
296
- }
297
- const mergedConfiguration = new Map();
298
- super.forEach((provider) => {
299
- if (provider.configuration && provider.type !== "server:module") {
300
- Object.entries(provider.configuration).forEach(([key, value]) => {
301
- if (!["resolvers", "mount", "imports"].includes(key)) {
302
- value = mergedConfiguration.has(key) ? (0, core_1.deepMerge)(mergedConfiguration.get(key), value) : (0, core_1.deepClone)(value);
303
- mergedConfiguration.set(key, value);
304
- }
305
- });
306
- }
307
- if (provider.resolvers) {
308
- this.settings.resolvers = this.settings.resolvers.concat(provider.resolvers);
309
- }
310
- });
311
- mergedConfiguration.forEach((value, key) => {
312
- this.settings.set(key, (0, core_1.deepMerge)(value, this.settings.get(key)));
313
- });
314
- this.resolvedConfiguration = true;
315
- }
316
- /**
317
- *
318
- * @param instance
319
- * @param locals
320
- * @param options
321
- */
322
- bindInjectableProperties(instance, locals, options) {
323
- const properties = (0, core_1.ancestorsOf)((0, core_1.classOf)(instance)).reduce((properties, target) => {
324
- const store = core_1.Store.from(target);
325
- return {
326
- ...properties,
327
- ...(store.get(constants_js_1.INJECTABLE_PROP) || {})
328
- };
329
- }, {});
330
- Object.values(properties).forEach((definition) => {
331
- switch (definition.bindingType) {
332
- case InjectablePropertyType_js_1.InjectablePropertyType.PROPERTY:
333
- this.bindProperty(instance, definition, locals, options);
334
- break;
335
- case InjectablePropertyType_js_1.InjectablePropertyType.CONSTANT:
336
- this.bindConstant(instance, definition);
337
- break;
338
- case InjectablePropertyType_js_1.InjectablePropertyType.VALUE:
339
- this.bindValue(instance, definition);
340
- break;
341
- case InjectablePropertyType_js_1.InjectablePropertyType.INTERCEPTOR:
342
- this.bindInterceptor(instance, definition);
343
- break;
344
- }
345
- });
346
- }
347
- /**
348
- * Create an injectable property.
349
- *
350
- * @param instance
351
- * @param {string} propertyKey
352
- * @param {any} useType
353
- * @param resolver
354
- * @param options
355
- * @param locals
356
- * @param invokeOptions
357
- */
358
- bindProperty(instance, { propertyKey, resolver, options = {} }, locals, invokeOptions) {
359
- let get;
360
- get = resolver(this, locals, { ...invokeOptions, options });
361
- (0, core_1.catchError)(() => Reflect.deleteProperty(instance, propertyKey));
362
- (0, core_1.catchError)(() => Reflect.defineProperty(instance, propertyKey, {
363
- get,
364
- enumerable: true,
365
- configurable: true
366
- }));
367
- }
368
- /**
369
- *
370
- * @param instance
371
- * @param {string} propertyKey
372
- * @param {any} useType
373
- */
374
- bindValue(instance, { propertyKey, expression, defaultValue }) {
375
- const descriptor = {
376
- get: () => this.settings.get(expression) || defaultValue,
377
- set: (value) => this.settings.set(expression, value),
378
- enumerable: true,
379
- configurable: true
380
- };
381
- (0, core_1.catchError)(() => Reflect.deleteProperty(instance, propertyKey));
382
- (0, core_1.catchError)(() => Reflect.defineProperty(instance, propertyKey, descriptor));
383
- }
384
- /**
385
- *
386
- * @param instance
387
- * @param {string} propertyKey
388
- * @param {any} useType
389
- */
390
- bindConstant(instance, { propertyKey, expression, defaultValue }) {
391
- let bean;
392
- const get = () => {
393
- if (bean !== undefined) {
394
- return bean;
395
- }
396
- const value = this.settings.get(expression, defaultValue);
397
- bean = Object.freeze((0, core_1.deepClone)(value));
398
- return bean;
399
- };
400
- const descriptor = {
401
- get,
402
- enumerable: true,
403
- configurable: true
404
- };
405
- (0, core_1.catchError)(() => Reflect.deleteProperty(instance, propertyKey));
406
- (0, core_1.catchError)(() => Object.defineProperty(instance, propertyKey, descriptor));
407
- }
408
- /**
409
- *
410
- * @param instance
411
- * @param propertyKey
412
- * @param useType
413
- * @param options
414
- */
415
- bindInterceptor(instance, { propertyKey, useType, options }) {
416
- const target = (0, core_1.classOf)(instance);
417
- const originalMethod = instance[propertyKey];
418
- instance[propertyKey] = (...args) => {
419
- const next = (err) => {
420
- if (!err) {
421
- return originalMethod.apply(instance, args);
422
- }
423
- throw err;
424
- };
425
- const context = {
426
- target,
427
- propertyKey,
428
- args,
429
- options,
430
- next
431
- };
432
- const interceptor = this.get(useType);
433
- return interceptor.intercept({
434
- ...context,
435
- options
436
- }, next);
437
- };
438
- }
439
- async lazyInvoke(token) {
440
- let instance = this.getInstance(token);
441
- if (!instance) {
442
- instance = await this.invoke(token);
443
- if ((0, core_1.isFunction)(instance?.$onInit)) {
444
- await instance.$onInit();
445
- }
446
- }
447
- return instance;
448
- }
449
- /**
450
- * Emit an event to all service. See service [lifecycle hooks](/docs/services.md#lifecycle-hooks).
451
- * @param eventName The event name to emit at all services.
452
- * @param args List of the parameters to give to each service.
453
- * @returns {Promise<any[]>} A list of promises.
454
- */
455
- emit(eventName, ...args) {
456
- return this.#hooks.asyncEmit(eventName, args);
457
- }
458
- /**
459
- * @param eventName
460
- * @param value
461
- * @param args
462
- */
463
- alter(eventName, value, ...args) {
464
- return this.#hooks.alter(eventName, value, args);
465
- }
466
- /**
467
- * @param eventName
468
- * @param value
469
- * @param args
470
- */
471
- alterAsync(eventName, value, ...args) {
472
- return this.#hooks.asyncAlter(eventName, value, args);
473
- }
474
- async destroy() {
475
- await this.emit("$onDestroy");
476
- globalInjector = undefined;
477
- }
478
- ensureProvider(token, force = false) {
479
- if (!this.hasProvider(token) && (GlobalProviders_js_1.GlobalProviders.has(token) || force)) {
480
- this.addProvider(token);
481
- }
482
- return this.getProvider(token);
483
- }
484
- getInstance(token) {
485
- return this.#cache.get(token);
486
- }
487
- /**
488
- * Invoke a class method and inject service.
489
- *
490
- * #### IInjectableMethod options
491
- *
492
- * * **target**: Optional. The class instance.
493
- * * **methodName**: `string` Optional. The method name.
494
- * * **designParamTypes**: `any[]` Optional. List of injectable types.
495
- * * **locals**: `Map<Function, any>` Optional. If preset then any argument Class are read from this object first, before the `InjectorService` is consulted.
496
- *
497
- * #### Example
498
- *
499
- * @param target
500
- * @param locals
501
- * @param options
502
- * @private
503
- */
504
- resolve(target, locals = new LocalsContainer_js_1.LocalsContainer(), options = {}) {
505
- const resolvedOpts = this.mapInvokeOptions(target, locals, options);
506
- if (!resolvedOpts) {
507
- return undefined;
508
- }
509
- const { token, deps, construct, imports, provider } = resolvedOpts;
510
- if (provider) {
511
- GlobalProviders_js_1.GlobalProviders.onInvoke(provider, locals, { ...resolvedOpts, injector: this });
512
- }
513
- let instance;
514
- let currentDependency = false;
515
- try {
516
- const invokeDependency = (parent) => (token, index) => {
517
- currentDependency = { token, index, deps };
518
- if (token !== constants_js_1.DI_PARAM_OPTIONS) {
519
- const options = provider?.store?.get(`${constants_js_1.DI_PARAM_OPTIONS}:${index}`);
520
- locals.set(constants_js_1.DI_PARAM_OPTIONS, options || {});
521
- }
522
- if ((0, core_1.isArray)(token)) {
523
- return this.getMany(token[0], locals, options);
524
- }
525
- return (0, core_1.isInheritedFrom)(token, Provider_js_1.Provider, 1) ? provider : this.invoke(token, locals, { parent });
526
- };
527
- // Invoke manually imported providers
528
- imports.forEach(invokeDependency());
529
- // Inject dependencies
530
- const services = deps.map(invokeDependency(token));
531
- currentDependency = false;
532
- instance = construct(services);
533
- }
534
- catch (error) {
535
- InjectionError_js_1.InjectionError.throwInjectorError(token, currentDependency, error);
536
- }
537
- if (instance === undefined) {
538
- throw new InjectionError_js_1.InjectionError(token, `Unable to create new instance from undefined value. Check your provider declaration for ${(0, core_1.nameOf)(token)}`);
539
- }
540
- if (instance && (0, core_1.isClass)((0, core_1.classOf)(instance))) {
541
- this.bindInjectableProperties(instance, locals, options);
542
- }
543
- return instance;
544
- }
545
- resolveImportsProviders() {
546
- this.settings.imports = this.settings.imports
547
- ?.filter((meta) => meta.token !== InjectorService_1)
548
- .map((meta) => {
549
- if ("token" in meta) {
550
- const { token, ...props } = meta;
551
- const provider = this.ensureProvider(token, true);
552
- if (provider) {
553
- provider.useValue = undefined;
554
- provider.useAsyncFactory = undefined;
555
- provider.useFactory = undefined;
556
- if ("useClass" in props) {
557
- provider.useClass = props.useClass;
558
- return;
559
- }
560
- if ("useFactory" in props) {
561
- provider.useFactory = props.useFactory;
562
- return;
563
- }
564
- if ("useAsyncFactory" in props) {
565
- provider.useAsyncFactory = props.useAsyncFactory;
566
- return;
567
- }
568
- if ("use" in props) {
569
- provider.useValue = props.use;
570
- return;
571
- }
572
- }
573
- }
574
- return meta;
575
- })
576
- .filter(Boolean);
577
- }
578
- /**
579
- * Create options to invoke a provider or class.
580
- * @param token
581
- * @param locals
582
- * @param options
583
- */
584
- mapInvokeOptions(token, locals, options) {
585
- let imports = options.imports;
586
- let deps = options.deps;
587
- let scope = options.scope;
588
- let construct;
589
- if (!token || token === Object) {
590
- throw new UndefinedTokenError_js_1.UndefinedTokenError();
591
- }
592
- let provider;
593
- if (!this.hasProvider(token)) {
594
- provider = new Provider_js_1.Provider(token);
595
- this.resolvers.forEach((resolver) => {
596
- const result = resolver.get(token, locals.get(constants_js_1.DI_PARAM_OPTIONS));
597
- if (result !== undefined) {
598
- provider.useFactory = () => result;
599
- }
600
- });
601
- }
602
- else {
603
- provider = this.getProvider(token);
604
- }
605
- scope = scope || this.scopeOf(provider);
606
- deps = deps || provider.deps;
607
- imports = imports || provider.imports;
608
- if (provider.useValue !== undefined) {
609
- construct = () => ((0, core_1.isFunction)(provider.useValue) ? provider.useValue() : provider.useValue);
610
- }
611
- else if (provider.useFactory) {
612
- construct = (deps) => provider.useFactory(...deps);
613
- }
614
- else if (provider.useAsyncFactory) {
615
- construct = async (deps) => {
616
- deps = await Promise.all(deps);
617
- return provider.useAsyncFactory(...deps);
618
- };
619
- }
620
- else if (provider.useClass) {
621
- // useClass
622
- deps = deps || (0, getConstructorDependencies_js_1.getConstructorDependencies)(provider.useClass);
623
- construct = (deps) => new provider.useClass(...deps);
624
- }
625
- else {
626
- return false;
627
- }
628
- return {
629
- token,
630
- scope: scope || core_1.Store.from(token).get("scope") || ProviderScope_js_1.ProviderScope.SINGLETON,
631
- deps: deps || [],
632
- imports: imports || [],
633
- construct,
634
- provider
635
- };
636
- }
637
- registerHooks(provider, instance) {
638
- if (provider.hooks) {
639
- Object.entries(provider.hooks).forEach(([event, cb]) => {
640
- const callback = (...args) => cb(this.get(provider.token) || instance, ...args);
641
- this.#hooks.on(event, callback);
642
- });
643
- }
644
- }
645
- };
646
- InjectorService = InjectorService_1 = tslib_1.__decorate([
647
- (0, injectable_js_1.Injectable)({
648
- scope: ProviderScope_js_1.ProviderScope.SINGLETON
649
- }),
650
- tslib_1.__metadata("design:paramtypes", [])
651
- ], InjectorService);
652
- exports.InjectorService = InjectorService;
653
- //# sourceMappingURL=InjectorService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InjectorService.js","sourceRoot":"","sources":["../../../../src/common/services/InjectorService.ts"],"names":[],"mappings":"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"}