@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,150 +0,0 @@
1
- import {DecoratorTypes} from "@tsed/core/types/DecoratorTypes.js";
2
- import {Metadata} from "@tsed/core/types/Metadata.js";
3
- import {Store} from "@tsed/core/types/Store.js";
4
- import {type Type} from "@tsed/core/types/Type.js";
5
- import {catchError} from "@tsed/core/utils/catchError.js";
6
- import {decoratorTypeOf} from "@tsed/core/utils/decoratorTypeOf.js";
7
- import {isPromise} from "@tsed/core/utils/isPromise.js";
8
-
9
- import {DI_INJECTABLE_PROPS, DI_INVOKE_OPTIONS, DI_USE_OPTIONS} from "../constants/constants.js";
10
- import {InvalidPropertyTokenError} from "../errors/InvalidPropertyTokenError.js";
11
- import {inject} from "../fn/inject.js";
12
- import {injectMany} from "../fn/injectMany.js";
13
- import type {InvokeOptions} from "../interfaces/InvokeOptions.js";
14
- import {TokenProvider} from "../interfaces/TokenProvider.js";
15
- import {getConstructorDependencies, setConstructorDependencies} from "../utils/getConstructorDependencies.js";
16
-
17
- function setToken(
18
- token: TokenProvider,
19
- {
20
- target,
21
- propertyKey,
22
- parameterIndex
23
- }: {
24
- target: any;
25
- propertyKey: string | symbol | undefined;
26
- parameterIndex: number;
27
- }
28
- ) {
29
- const paramTypes = getConstructorDependencies(target, propertyKey);
30
- const type = paramTypes[parameterIndex];
31
-
32
- paramTypes[parameterIndex] = type === Array ? [token] : token;
33
-
34
- Metadata.setParamTypes(target, propertyKey!, paramTypes);
35
- setConstructorDependencies(target, paramTypes);
36
- }
37
-
38
- function getTokenType(token: TokenProvider | (() => TokenProvider) | undefined, target: any, propertyKey: string | symbol) {
39
- const useType = token || Metadata.getType(target, propertyKey);
40
-
41
- if (useType === Object) {
42
- throw new InvalidPropertyTokenError(target, String(propertyKey));
43
- }
44
-
45
- return useType;
46
- }
47
-
48
- export type TransformInjectedProviderCB<T, Klass = any> = (
49
- instance: T,
50
- {target, propertyKey}: {self: Klass; target: Type<Klass>; propertyKey: symbol | string}
51
- ) => unknown;
52
-
53
- export interface BindInjectablePropertyOpts<T = any> {
54
- token?: TokenProvider;
55
- useOpts?: Record<string, unknown>;
56
- transform?: TransformInjectedProviderCB<T>;
57
- }
58
-
59
- function bindInjectableProperty<T = any>(
60
- target: any,
61
- propertyKey: string | symbol,
62
- {token, transform = (o) => o, useOpts}: BindInjectablePropertyOpts<T>
63
- ) {
64
- const symbol = Symbol();
65
-
66
- if (!target[DI_INJECTABLE_PROPS]) {
67
- Reflect.defineProperty(target, DI_INJECTABLE_PROPS, {
68
- value: new Set(),
69
- enumerable: false,
70
- configurable: false
71
- });
72
- }
73
-
74
- target[DI_INJECTABLE_PROPS].add(propertyKey);
75
-
76
- catchError(() => Reflect.deleteProperty(target, propertyKey));
77
- Reflect.defineProperty(target, propertyKey, {
78
- get() {
79
- const useType = getTokenType(token, target, propertyKey!);
80
- const originalType = Metadata.getType(target, propertyKey);
81
-
82
- const invokeOpts: Partial<InvokeOptions> = {
83
- rebuild: !!this[DI_INVOKE_OPTIONS]?.rebuild,
84
- locals: this[DI_INVOKE_OPTIONS]?.locals,
85
- useOpts: useOpts || Store.from(target, propertyKey).get(DI_USE_OPTIONS)
86
- };
87
-
88
- if (this[symbol] === undefined) {
89
- this[symbol] = originalType === Array ? injectMany(token as string, invokeOpts) : inject(useType, invokeOpts);
90
- }
91
-
92
- [].concat(this[symbol]).forEach((instance: any, index) => {
93
- if (isPromise(this[symbol])) {
94
- instance.then((result: any) => {
95
- this[symbol]![index] = result;
96
- if (originalType !== Array) {
97
- this[symbol] = result;
98
- }
99
- });
100
- }
101
- });
102
-
103
- return transform(this[symbol], {self: this, target, propertyKey});
104
- }
105
- });
106
- }
107
-
108
- /**
109
- * Inject a provider to another provider.
110
- *
111
- * Use this decorator to inject a custom provider on constructor parameter or property.
112
- *
113
- * ```typescript
114
- * @Injectable()
115
- * export class MyService {
116
- * @Inject(CONNECTION)
117
- * connection: CONNECTION;
118
- * }
119
- * ```
120
- *
121
- * @param token A token provider or token provider group
122
- * @param transform
123
- * @returns {Function}
124
- * @decorator
125
- */
126
- export function Inject<T = any>(token?: TokenProvider<T> | (() => TokenProvider<T>), transform?: TransformInjectedProviderCB<T>): any;
127
- export function Inject<T = any>(
128
- token?: TokenProvider<T> | (() => TokenProvider<T>),
129
- opts?: Partial<Omit<BindInjectablePropertyOpts<T>, "token">>
130
- ): any;
131
- export function Inject<T = any>(
132
- token?: TokenProvider<T> | (() => TokenProvider<T>),
133
- opts: TransformInjectedProviderCB<T> | Partial<Omit<BindInjectablePropertyOpts<T>, "token">> = {}
134
- ) {
135
- opts = typeof opts === "function" ? {transform: opts} : opts;
136
-
137
- return (target: any, propertyKey: string | symbol | undefined, index?: number) => {
138
- const bindingType = decoratorTypeOf([target, propertyKey, index]);
139
-
140
- switch (bindingType) {
141
- case DecoratorTypes.PARAM_CTOR:
142
- if (token) {
143
- setToken(token, {target, propertyKey, parameterIndex: index!});
144
- }
145
- break;
146
- case DecoratorTypes.PROP:
147
- bindInjectableProperty(target, propertyKey!, {...opts, token});
148
- }
149
- };
150
- }
@@ -1,43 +0,0 @@
1
- import {GlobalProviders} from "../registries/GlobalProviders.js";
2
- import {Injectable} from "./injectable.js";
3
-
4
- describe("@Injectable()", () => {
5
- afterEach(() => {
6
- vi.resetAllMocks();
7
- });
8
-
9
- it("should call `registerProvider` setting `token` according to the target class", () => {
10
- // GIVEN
11
- class Test {}
12
-
13
- // WHEN
14
- Injectable()(Test);
15
-
16
- // THEN
17
- expect(GlobalProviders.get(Test)?.useClass).toEqual(Test);
18
- });
19
-
20
- it("should call `registerProvider` passing an additional options", () => {
21
- // GIVEN
22
- class Test {}
23
-
24
- // WHEN
25
- Injectable({options: "options"})(Test);
26
-
27
- // THEN
28
- expect(GlobalProviders.get(Test)?.useClass).toEqual(Test);
29
- expect(GlobalProviders.get(Test)?.options).toEqual("options");
30
- });
31
-
32
- it("should override `token`", () => {
33
- // GIVEN
34
- class Test {}
35
- const token = "custom";
36
-
37
- // WHEN
38
- Injectable({token})(Test);
39
-
40
- // THEN
41
- expect(GlobalProviders.get("custom")?.useClass).toEqual(Test);
42
- });
43
- });
@@ -1,30 +0,0 @@
1
- import {injectable} from "../fn/injectable.js";
2
- import type {ProviderOpts} from "../interfaces/ProviderOpts.js";
3
-
4
- /**
5
- * The decorators `@Injectable()` declare a new service can be injected in other service, controller, interceptor, etc.. on there `constructor`.
6
- * All classes annotated with `@Injectable()` are built one time, excepted if you change the default provider configuration.
7
- *
8
- * ::: tip
9
- * `@Injectable()` use the `reflect-metadata` to collect and inject the built provided to other services.
10
- * :::
11
- *
12
- * ### Options
13
- *
14
- * - type (@@ProviderType@@ or `string`): Kind of provider. (Default: `ProviderType.PROVIDER`)
15
- * - scope (@@ProviderScope@@): Kind of provider. (Default: `ProviderScope.SINGLETON`)
16
- * - token (@@TokenProvider@@): An injection token (Note: This option override default metadata generated by Typescript).
17
- * - deps (`Type<any>`): List of class or provider which will be injected to the constructor (Note: This options override default metadata generated by Typescript).
18
- *
19
- * @returns {Function}
20
- * @decorator
21
- */
22
- export function Injectable(options: Partial<ProviderOpts> = {}): ClassDecorator {
23
- return (target: any) => {
24
- const opts = {
25
- ...options,
26
- ...(options.token ? {useClass: target} : {token: target})
27
- };
28
- injectable(opts.token, opts);
29
- };
30
- }
@@ -1,150 +0,0 @@
1
- import {catchError, classOf, nameOf} from "@tsed/core";
2
-
3
- import {DITest} from "../../node/index.js";
4
- import {InterceptorContext} from "../interfaces/InterceptorContext.js";
5
- import {InterceptorMethods} from "../interfaces/InterceptorMethods.js";
6
- import {getInterceptorOptions, Intercept} from "./intercept.js";
7
- import {Interceptor} from "./interceptor.js";
8
- import {Service} from "./service.js";
9
-
10
- @Interceptor()
11
- class MyInterceptor implements InterceptorMethods {
12
- intercept(context: InterceptorContext<any>) {
13
- const r = typeof context.args[0] === "string" ? undefined : new Error(`Error message`);
14
- const retValue = context.next(r);
15
-
16
- expect(nameOf(context.target)).toContain("Service");
17
-
18
- return `${retValue} - ${context.options || ""} - intercepted 1`;
19
- }
20
- }
21
-
22
- @Interceptor()
23
- class MyInterceptor2 implements InterceptorMethods {
24
- intercept(context: InterceptorContext<any>) {
25
- const r = typeof context.args[0] === "string" ? undefined : new Error(`Error message`);
26
- const retValue = context.next(r);
27
-
28
- return `${retValue} - ${context.options || ""} - intercepted 2`;
29
- }
30
- }
31
-
32
- @Service()
33
- class ServiceTest {
34
- @Intercept(MyInterceptor, "options data")
35
- exec(param: string) {
36
- return `Original data - ${param}`;
37
- }
38
-
39
- @Intercept(MyInterceptor, "options data")
40
- @Intercept(MyInterceptor2, "options data")
41
- chained(param: string) {
42
- return `Chained - ${param}`;
43
- }
44
-
45
- @Intercept(MyInterceptor2, "options data")
46
- @Intercept(MyInterceptor, "options data")
47
- reverseChained(param: string) {
48
- return `Chained - ${param}`;
49
- }
50
- }
51
-
52
- @Service()
53
- @Intercept(MyInterceptor, "options data")
54
- class ServiceTest2 {
55
- exec(param: string) {
56
- return `Original data - ${param}`;
57
- }
58
- }
59
-
60
- describe("@Intercept", () => {
61
- beforeEach(() => DITest.create());
62
- afterEach(() => DITest.reset());
63
-
64
- describe("when the decorator is used on a method", () => {
65
- it("should intercept the method", async () => {
66
- // GIVEN
67
- const serviceTest = await DITest.invoke<ServiceTest>(ServiceTest)!;
68
-
69
- // WHEN
70
- const result = serviceTest.exec("param data");
71
-
72
- expect(getInterceptorOptions(ServiceTest, "exec")).toEqual("options data");
73
-
74
- // THEN
75
- expect(result).toEqual("Original data - param data - options data - intercepted 1");
76
- });
77
- it("should chained interceptor", async () => {
78
- // GIVEN
79
- const serviceTest = await DITest.invoke<ServiceTest>(ServiceTest)!;
80
-
81
- // WHEN
82
- const result = serviceTest.chained("param data");
83
-
84
- expect(getInterceptorOptions(ServiceTest, "chained")).toEqual("options data");
85
-
86
- // THEN
87
- expect(result).toEqual("Chained - param data - options data - intercepted 2 - options data - intercepted 1");
88
- });
89
- it("should chained interceptor (reversed)", async () => {
90
- // GIVEN
91
- const serviceTest = await DITest.invoke<ServiceTest>(ServiceTest)!;
92
-
93
- // WHEN
94
- const result = serviceTest.reverseChained("param data");
95
-
96
- expect(getInterceptorOptions(ServiceTest, "reverseChained")).toEqual("options data");
97
-
98
- // THEN
99
- expect(result).toEqual("Chained - param data - options data - intercepted 1 - options data - intercepted 2");
100
- });
101
- it("should intercept the method and mock interceptor", async () => {
102
- // GIVEN
103
- const serviceTest = await DITest.invoke<ServiceTest>(ServiceTest, [
104
- {
105
- token: MyInterceptor,
106
- use: {
107
- intercept: vi.fn().mockReturnValue("intercepted")
108
- }
109
- }
110
- ]);
111
-
112
- // WHEN
113
- const result = serviceTest.exec("param data");
114
-
115
- // THEN
116
- expect(result).toEqual("intercepted");
117
- });
118
- it("should intercept the method and throw error", async () => {
119
- // GIVEN
120
- const serviceTest = await DITest.invoke<ServiceTest>(ServiceTest)!;
121
-
122
- // WHEN
123
- let actualError = catchError(() => serviceTest.exec({} as any));
124
-
125
- // THEN
126
- expect(actualError?.message).toEqual("Error message");
127
- });
128
- });
129
- describe("when the decorator is used on a class", () => {
130
- it("should intercept the method", async () => {
131
- // GIVEN
132
- const serviceTest = await DITest.invoke<ServiceTest2>(ServiceTest2)!;
133
-
134
- // WHEN
135
- const result = serviceTest.exec("param data");
136
-
137
- // THEN
138
- expect(result).toEqual("Original data - param data - options data - intercepted 1");
139
- });
140
- it("should intercept the method and throw error", async () => {
141
- // GIVEN
142
- const serviceTest = await DITest.invoke<ServiceTest2>(ServiceTest2)!;
143
-
144
- // WHEN
145
- let actualError = catchError(() => serviceTest.exec({} as any));
146
- // THEN
147
- expect(actualError?.message).toEqual("Error message");
148
- });
149
- });
150
- });
@@ -1,89 +0,0 @@
1
- import {DecoratorParameters} from "@tsed/core/types/DecoratorParameters.js";
2
- import {DecoratorTypes} from "@tsed/core/types/DecoratorTypes.js";
3
- import {Store} from "@tsed/core/types/Store.js";
4
- import {Type} from "@tsed/core/types/Type.js";
5
- import {classOf} from "@tsed/core/utils/classOf.js";
6
- import {decorateMethodsOf} from "@tsed/core/utils/decorateMethodsOf.js";
7
- import {decoratorTypeOf} from "@tsed/core/utils/decoratorTypeOf.js";
8
- import {nameOf} from "@tsed/core/utils/nameOf.js";
9
-
10
- import {DI_INTERCEPTOR_OPTIONS, DI_INVOKE_OPTIONS} from "../constants/constants.js";
11
- import {inject} from "../fn/inject.js";
12
- import type {InterceptorContext} from "../interfaces/InterceptorContext.js";
13
- import type {InterceptorMethods} from "../interfaces/InterceptorMethods.js";
14
- import type {InvokeOptions} from "../interfaces/InvokeOptions.js";
15
- import type {TokenProvider} from "../interfaces/TokenProvider.js";
16
-
17
- export function getInterceptorOptions<T>(target: Type<any>, propertyKey: string | symbol) {
18
- return Store.fromMethod(target, propertyKey).get(DI_INTERCEPTOR_OPTIONS) as T;
19
- }
20
-
21
- export function bindIntercept(target: any, propertyKey: string | symbol, token: TokenProvider, options: Record<string, unknown>) {
22
- const klass = classOf(target);
23
- const descriptor = Reflect.getOwnPropertyDescriptor(klass.prototype, propertyKey);
24
- const originalMethod = descriptor!.value;
25
- const symbol = Symbol();
26
-
27
- Store.fromMethod(klass, propertyKey).set(DI_INTERCEPTOR_OPTIONS, options);
28
-
29
- function newMethod(...args: any[]) {
30
- const next = (err?: Error) => {
31
- if (!err) {
32
- return originalMethod.apply(this, args);
33
- }
34
-
35
- throw err;
36
- };
37
-
38
- const context: InterceptorContext<any> = {
39
- target: klass,
40
- propertyKey,
41
- args,
42
- options,
43
- next
44
- };
45
-
46
- const invokeOpts: Partial<InvokeOptions> = {
47
- rebuild: !!this[DI_INVOKE_OPTIONS]?.rebuild,
48
- locals: this[DI_INVOKE_OPTIONS]?.locals
49
- };
50
-
51
- this[symbol] = this[symbol] || inject(token, invokeOpts)!;
52
-
53
- return this[symbol].intercept!(
54
- {
55
- ...context,
56
- options
57
- },
58
- next
59
- );
60
- }
61
-
62
- descriptor!.value = newMethod;
63
-
64
- Reflect.deleteProperty(klass.prototype, propertyKey);
65
- Reflect.defineProperty(klass.prototype, propertyKey, descriptor!);
66
-
67
- return descriptor;
68
- }
69
-
70
- /**
71
- * Attaches interceptor to method call and executes the before and after methods
72
- *
73
- * @param interceptor
74
- * @param options
75
- * @decorator
76
- */
77
- export function Intercept<T extends InterceptorMethods>(interceptor: Type<T>, options?: any): any {
78
- return (...args: DecoratorParameters) => {
79
- const [target, propertyKey] = args;
80
- const type = decoratorTypeOf(args);
81
- switch (type) {
82
- case DecoratorTypes.CLASS:
83
- decorateMethodsOf(target, Intercept(interceptor, options));
84
- break;
85
- case DecoratorTypes.METHOD:
86
- return bindIntercept(target, propertyKey, interceptor, options);
87
- }
88
- };
89
- }
@@ -1,17 +0,0 @@
1
- import {ProviderType} from "../domain/ProviderType.js";
2
- import {Injectable} from "./injectable.js";
3
-
4
- /**
5
- * The decorators `@Interceptor()` declare a new service can be injected in other service or controller on there `constructor`.
6
- * All services annotated with `@Interceptor()` are constructed one time.
7
- *
8
- * > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.
9
- *
10
- * @returns {Function}
11
- * @decorator
12
- */
13
- export function Interceptor(): Function {
14
- return Injectable({
15
- type: ProviderType.INTERCEPTOR
16
- });
17
- }
@@ -1,53 +0,0 @@
1
- import {catchAsyncError, classOf, nameOf} from "@tsed/core";
2
-
3
- import {inject} from "../fn/inject.js";
4
- import {injector} from "../fn/injector.js";
5
- import type {MyLazyModule} from "./__mock__/lazy.module.js";
6
- import {Injectable} from "./injectable.js";
7
- import {LazyInject, OptionalLazyInject} from "./lazyInject.js";
8
-
9
- describe("LazyInject", () => {
10
- it("should lazy load module (import)", async () => {
11
- @Injectable()
12
- class MyInjectable {
13
- @LazyInject("MyLazyModule", () => import("./__mock__/lazy.import.module.js"))
14
- lazy: Promise<MyLazyModule>;
15
- }
16
-
17
- const service = inject(MyInjectable);
18
- const nbProviders = injector().getProviders().length;
19
-
20
- const lazyService = await service.lazy;
21
-
22
- expect(nameOf(classOf(lazyService))).toEqual("MyLazyModule");
23
- expect(nbProviders).not.toEqual(injector().getProviders().length);
24
- });
25
-
26
- it("should throw an error when the module doesn't exists", async () => {
27
- @Injectable()
28
- class MyInjectable {
29
- // @ts-ignore
30
- @LazyInject("Lazy", () => import("lazy-module"), {})
31
- lazy?: Promise<MyLazyModule>;
32
- }
33
-
34
- const service = inject<MyInjectable>(MyInjectable);
35
- const error = await catchAsyncError(() => service.lazy);
36
-
37
- expect(error?.message).toContain("'lazy-module' imported from");
38
- });
39
-
40
- it("should lazy load optionally a module", async () => {
41
- @Injectable()
42
- class MyInjectable {
43
- // @ts-ignore
44
- @OptionalLazyInject("default", () => import("lazy-module-optional"))
45
- lazy?: Promise<MyLazyModule>;
46
- }
47
-
48
- const service = inject(MyInjectable);
49
- const lazyService = await service.lazy;
50
-
51
- expect(lazyService).toEqual(undefined);
52
- });
53
- });
@@ -1,92 +0,0 @@
1
- import {catchError} from "@tsed/core/utils/catchError.js";
2
- import {isFunction} from "@tsed/core/utils/isFunction.js";
3
-
4
- import {lazyInject, optionalLazyInject} from "../fn/lazyInject.js";
5
-
6
- function mapOptions(args: any[], optional = false) {
7
- function wrap(key: string, resolver: any) {
8
- return async () => {
9
- try {
10
- const {[key]: token} = await resolver();
11
-
12
- return {default: token};
13
- } catch (er) {
14
- if (!optional) {
15
- throw er;
16
- }
17
-
18
- return;
19
- }
20
- };
21
- }
22
-
23
- if (isFunction(args[0])) {
24
- return wrap("default", args[0]);
25
- }
26
-
27
- return wrap(args[0], args[1]);
28
- }
29
-
30
- /**
31
- * Lazy load a provider from his package and invoke only when the provider is used
32
- *
33
- * ```typescript
34
- * import type {PlatformException} from "@tsed/platform-exceptions";
35
- *
36
- * @Injectable()
37
- * export class MyService {
38
- * @LazyInject(() => import("@tsed/platform-exceptions"))
39
- * exceptions: Promise<PlatformException>;
40
- * }
41
- * ```
42
- *
43
- * @param key - The named export to import from the module.
44
- * @param resolver - A function that returns a promise resolving to the module.
45
- * @returns {Function}
46
- * @decorator
47
- */
48
- export function LazyInject(resolver: () => Promise<{default: unknown}>): PropertyDecorator;
49
- export function LazyInject(key: string, resolver: () => Promise<{default: unknown}>): PropertyDecorator;
50
- export function LazyInject(...args: any[]): PropertyDecorator {
51
- let resolver = mapOptions(args);
52
-
53
- return (target: any, propertyKey: string | symbol): any | void => {
54
- catchError(() => Reflect.deleteProperty(target, propertyKey));
55
- Reflect.defineProperty(target, propertyKey, {
56
- async get() {
57
- return lazyInject<any>(resolver as any);
58
- }
59
- });
60
- };
61
- }
62
-
63
- /**
64
- * Optionally Lazy load a provider from his package and invoke only when the provider is used
65
- *
66
- * ```typescript
67
- * import type {PlatformException} from "@tsed/platform-exceptions";
68
- *
69
- * @Injectable()
70
- * export class MyService {
71
- * @OptionalLazyInject(() => import("@tsed/platform-exceptions"))
72
- * exceptions: Promise<PlatformException>;
73
- * }
74
- * ```
75
- * @param key - The named export to import from the module.
76
- * @param resolver - A function that returns a promise resolving to the module.
77
- * @decorator
78
- */
79
- export function OptionalLazyInject(resolver: () => Promise<{default: unknown}>): PropertyDecorator;
80
- export function OptionalLazyInject(key: string, resolver: () => Promise<{default: unknown}>): PropertyDecorator;
81
- export function OptionalLazyInject(...args: any[]): PropertyDecorator {
82
- const resolver = mapOptions(args, true);
83
-
84
- return (target: any, propertyKey: string | symbol): any | void => {
85
- catchError(() => Reflect.deleteProperty(target, propertyKey));
86
- Reflect.defineProperty(target, propertyKey, {
87
- async get() {
88
- return optionalLazyInject(resolver as any);
89
- }
90
- });
91
- };
92
- }
@@ -1,52 +0,0 @@
1
- import {useDecorators} from "@tsed/core/utils/useDecorators.js";
2
-
3
- import {ProviderScope} from "../domain/ProviderScope.js";
4
- import {ProviderType} from "../domain/ProviderType.js";
5
- import {TokenProvider} from "../interfaces/TokenProvider.js";
6
- import {Configuration} from "./configuration.js";
7
- import {Injectable} from "./injectable.js";
8
-
9
- export interface ModuleOptions extends Omit<TsED.Configuration, "scopes"> {
10
- /**
11
- * Provider scope
12
- */
13
- scope?: ProviderScope;
14
- /**
15
- * Providers must be initialized before building this module
16
- */
17
- imports?: TokenProvider[];
18
- /**
19
- * Explicit token must be injected in the constructor
20
- */
21
- deps?: TokenProvider[];
22
-
23
- /**
24
- * Additional properties are stored as provider configuration.
25
- */
26
- [key: string]: any;
27
- }
28
-
29
- /**
30
- * Declare a new Ts.ED module
31
- *
32
- * ## Options
33
- * - imports: List of Provider which must be built by injector before invoking the module
34
- * - deps: List of provider must be injected to the module constructor (explicit declaration)
35
- *
36
- * @param options
37
- * @decorator
38
- */
39
- export function Module(options: Partial<ModuleOptions> = {}) {
40
- const {scopes, imports, deps, scope, ...configuration} = options;
41
-
42
- return useDecorators(
43
- Configuration(configuration),
44
- Injectable({
45
- type: ProviderType.MODULE,
46
- scope: ProviderScope.SINGLETON,
47
- imports,
48
- deps,
49
- injectable: false
50
- })
51
- );
52
- }