@tsed/di 8.11.1 → 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,612 +0,0 @@
1
- import {classOf} from "@tsed/core/utils/classOf.js";
2
- import {deepClone} from "@tsed/core/utils/deepClone.js";
3
- import {deepMerge} from "@tsed/core/utils/deepMerge.js";
4
- import {isArray} from "@tsed/core/utils/isArray.js";
5
- import {isClass} from "@tsed/core/utils/isClass.js";
6
- import {isFunction} from "@tsed/core/utils/isFunction.js";
7
- import {isInheritedFrom} from "@tsed/core/utils/isInheritedFrom.js";
8
- import {isObject} from "@tsed/core/utils/isObject.js";
9
- import {isPromise} from "@tsed/core/utils/isPromise.js";
10
- import {nameOf} from "@tsed/core/utils/nameOf.js";
11
- import {$alter, $asyncAlter, $asyncEmit, $emit, $off, $on} from "@tsed/hooks";
12
-
13
- import {DI_INVOKE_OPTIONS, DI_USE_PARAM_OPTIONS} from "../constants/constants.js";
14
- import {Container} from "../domain/Container.js";
15
- import {LocalsContainer} from "../domain/LocalsContainer.js";
16
- import {Provider} from "../domain/Provider.js";
17
- import {ProviderScope} from "../domain/ProviderScope.js";
18
- import {InjectionError} from "../errors/InjectionError.js";
19
- import type {DILogger} from "../interfaces/DILogger.js";
20
- import type {ImportTokenProviderOpts} from "../interfaces/ImportTokenProviderOpts.js";
21
- import type {InvokeOptions} from "../interfaces/InvokeOptions.js";
22
- import type {ResolvedInvokeOptions} from "../interfaces/ResolvedInvokeOptions.js";
23
- import type {TokenProvider} from "../interfaces/TokenProvider.js";
24
- import {GlobalProviders} from "../registries/GlobalProviders.js";
25
- import {createContainer} from "../utils/createContainer.js";
26
- import {getConstructorDependencies} from "../utils/getConstructorDependencies.js";
27
- import {DIConfiguration} from "./DIConfiguration.js";
28
-
29
- const EXCLUDED_CONFIGURATION_KEYS = ["mount", "imports"];
30
-
31
- /**
32
- * This service contain all services collected by `@Service` or services declared manually with `InjectorService.factory()` or `InjectorService.service()`.
33
- *
34
- * ### Example:
35
- *
36
- * ```typescript
37
- * import {InjectorService} from "@tsed/di";
38
- *
39
- * // Import the services (all services are decorated with @Service()";
40
- * import MyService1 from "./services/service1.js";
41
- * import MyService2 from "./services/service2.js";
42
- * import MyService3 from "./services/service3.js";
43
- *
44
- * // When all services are imported, you can load InjectorService.
45
- *
46
- * await injector().load();
47
- *
48
- * const myService1 = injector.get<MyService1>(MyService1);
49
- * ```
50
- */
51
- export class InjectorService extends Container {
52
- public logger: DILogger = console;
53
- private resolvedConfiguration: boolean = false;
54
- #cache = new LocalsContainer();
55
- #loaded: boolean = false;
56
-
57
- constructor() {
58
- super();
59
- this.#cache.set(InjectorService, this);
60
- this.#cache.set(DIConfiguration, new DIConfiguration());
61
- }
62
-
63
- get settings(): DIConfiguration {
64
- return this.#cache.get(DIConfiguration);
65
- }
66
-
67
- set settings(settings: DIConfiguration) {
68
- this.#cache.set(DIConfiguration, settings);
69
- }
70
-
71
- isLoaded() {
72
- return this.#loaded;
73
- }
74
-
75
- /**
76
- * Return a list of instance build by the injector.
77
- */
78
- public toArray(): any[] {
79
- return [...this.#cache.values()];
80
- }
81
-
82
- /**
83
- * Get a service or factory already constructed from his symbol or class.
84
- *
85
- * #### Example
86
- *
87
- * ```typescript
88
- * import {InjectorService} from "@tsed/di";
89
- * import MyService from "./services.js";
90
- *
91
- * class OtherService {
92
- * constructor(injectorService: InjectorService) {
93
- * const myService = injectorService.get<MyService>(MyService);
94
- * }
95
- * }
96
- * ```
97
- *
98
- * @param token The class or symbol registered in InjectorService.
99
- * @param options
100
- */
101
- get<T = any>(token: TokenProvider<T>, options?: Partial<InvokeOptions>): T {
102
- if (!this.has(token)) {
103
- return this.resolve(token, options);
104
- }
105
-
106
- return this.#cache.get(token);
107
- }
108
-
109
- /**
110
- * Return all instance of the same provider type
111
- */
112
- getMany<Type = any>(type: any, options?: Partial<InvokeOptions>): Type[] {
113
- return this.getProviders(type).map((provider) => {
114
- return this.resolve<Type>(provider.token, options);
115
- });
116
- }
117
-
118
- /**
119
- * The has() method returns a boolean indicating whether an element with the specified key exists or not.
120
- */
121
- has(token: TokenProvider): boolean {
122
- return this.#cache.get(token) !== undefined;
123
- }
124
-
125
- /**
126
- * Declare an alias for a given token.
127
- */
128
- alias(token: TokenProvider, alias: TokenProvider) {
129
- this.#cache.set(alias, this.#cache.get(token));
130
-
131
- return this;
132
- }
133
-
134
- /**
135
- * Resolve the token depending on his provider configuration.
136
- *
137
- * If the token isn't cached, the injector will invoke the provider and cache the result.
138
- *
139
- * #### Example
140
- *
141
- * ```typescript
142
- * import {InjectorService} from "@tsed/di";
143
- * import MyService from "./services.js";
144
- *
145
- * class OtherService {
146
- * constructor(injectorService: InjectorService) {
147
- * const myService = injectorService.invoke<MyService>(MyService);
148
- * }
149
- * }
150
- * ```
151
- *
152
- * @param token The injectable class to invoke. Class parameters are injected according constructor signature.
153
- * @param options {InvokeOptions} Optional options to invoke the class.
154
- * @returns {Type} The class constructed.
155
- */
156
- public resolve<Type = any>(token: TokenProvider<Type>, options: Partial<InvokeOptions> = {}): Type {
157
- let instance: any = options.locals ? options.locals.get(token) : undefined;
158
-
159
- if (instance !== undefined) {
160
- return instance;
161
- }
162
-
163
- if (token === DI_USE_PARAM_OPTIONS) {
164
- return options.useOpts as Type;
165
- }
166
-
167
- instance = !options.rebuild ? this.#cache.get(token) : undefined;
168
-
169
- if (instance != undefined) {
170
- return instance;
171
- }
172
-
173
- const provider = this.ensureProvider(token);
174
-
175
- // maybe not necessary
176
- if (!provider || options.rebuild) {
177
- instance = this.invokeToken(token, options);
178
-
179
- if (provider) {
180
- return this.setToCache(provider!, instance);
181
- }
182
-
183
- return instance;
184
- }
185
-
186
- instance = this.invokeToken(token, options);
187
-
188
- switch (provider.scope) {
189
- case ProviderScope.SINGLETON:
190
- if (!options.rebuild) {
191
- this.registerHooks(provider, options);
192
- }
193
-
194
- return this.setToCache(provider, instance);
195
- case ProviderScope.REQUEST:
196
- if (options.locals) {
197
- options.locals.set(provider.token, instance);
198
-
199
- this.registerHooks(provider, options);
200
- }
201
-
202
- return instance;
203
- }
204
-
205
- return instance;
206
- }
207
-
208
- /**
209
- * Resolve the token depending on his provider configuration.
210
- *
211
- * If the token isn't cached, the injector will invoke the provider and cache the result.
212
- *
213
- * #### Example
214
- *
215
- * ```typescript
216
- * import {InjectorService} from "@tsed/di";
217
- * import MyService from "./services.js";
218
- *
219
- * class OtherService {
220
- * constructor(injectorService: InjectorService) {
221
- * const myService = injectorService.invoke<MyService>(MyService);
222
- * }
223
- * }
224
- * ```
225
- *
226
- * @param token The injectable class to invoke. Class parameters are injected according constructor signature.
227
- * @param options {InvokeOptions} Optional options to invoke the class.
228
- * @returns {Type} The class constructed.
229
- * @alias InjectorService.resolve
230
- */
231
- public invoke<Type = any>(token: TokenProvider<Type>, options: Partial<InvokeOptions> = {}): Type {
232
- return this.resolve(token, options);
233
- }
234
-
235
- /**
236
- * Build only providers which are asynchronous.
237
- */
238
- async loadAsync() {
239
- for (const [, provider] of this) {
240
- if (!this.has(provider.token) && provider.isAsync()) {
241
- await this.resolve(provider.token);
242
- }
243
- }
244
- }
245
-
246
- /**
247
- * Build only providers which are synchronous.
248
- */
249
- loadSync() {
250
- for (const [, provider] of this) {
251
- // TODO try to lazy provider instead initiate all providers (&& provider.hasRegisteredHooks())
252
- if (!this.has(provider.token) && provider.scope === ProviderScope.SINGLETON) {
253
- this.resolve(provider.token);
254
- }
255
- }
256
- }
257
-
258
- /**
259
- * Build all providers from given container (or GlobalProviders) and emit `$onInit` event.
260
- *
261
- * @param container
262
- */
263
- async load(container: Container = createContainer()) {
264
- // avoid provider registration in the GlobalContainer during the loading phase
265
- // using injectable() or providerBuilder()
266
- this.#loaded = true;
267
-
268
- await $asyncEmit("$beforeInit");
269
-
270
- await this.bootstrap(container);
271
-
272
- // build async and sync provider
273
- await this.loadAsync();
274
-
275
- // load sync provider
276
- this.loadSync();
277
-
278
- await $asyncEmit("$onInit");
279
- }
280
-
281
- /**
282
- * Load all configurations registered on providers via @Configuration decorator.
283
- * It inspects for each provider some fields like imports, mount, etc. to resolve the configuration.
284
- */
285
- async resolveConfiguration() {
286
- if (this.resolvedConfiguration) {
287
- return;
288
- }
289
- const mergedConfiguration = new Map();
290
-
291
- super.forEach((provider) => {
292
- if (provider.configuration && provider.type !== "server:module") {
293
- Object.entries(provider.configuration).forEach(([key, value]) => {
294
- if (!EXCLUDED_CONFIGURATION_KEYS.includes(key)) {
295
- value = mergedConfiguration.has(key) ? deepMerge(mergedConfiguration.get(key), value) : deepClone(value);
296
- mergedConfiguration.set(key, value);
297
- }
298
- });
299
- }
300
- });
301
-
302
- mergedConfiguration.forEach((value, key) => {
303
- this.settings.set(key, deepMerge(value, this.settings.get(key)));
304
- });
305
-
306
- await $asyncEmit("$afterResolveConfiguration", this.settings);
307
-
308
- this.resolvedConfiguration = true;
309
- }
310
-
311
- /**
312
- * Emit an event to all service. See service [lifecycle hooks](/docs/hooks.md#lifecycle-hooks).
313
- * @param eventName The event name to emit at all services.
314
- * @param args List of the parameters to give to each service.
315
- * @returns A list of promises.
316
- * @deprecated use $asyncEmit instead
317
- */
318
- public emit(eventName: string, ...args: unknown[]) {
319
- return $asyncEmit(eventName, args);
320
- }
321
-
322
- /**
323
- * Alter value attached to an event.
324
- * @param eventName
325
- * @param value
326
- * @param args
327
- * @deprecated use $alter instead
328
- */
329
- public alter<T = any>(eventName: string, value: any, ...args: any[]): T {
330
- return $alter(eventName, value, args);
331
- }
332
-
333
- /**
334
- * Alter value attached to an event asynchronously.
335
- * @param eventName
336
- * @param value
337
- * @param args
338
- * @deprecated use $asyncAlter instead
339
- */
340
- public alterAsync<T = any>(eventName: string, value: any, ...args: any[]): Promise<T> {
341
- return $asyncAlter(eventName, value, args);
342
- }
343
-
344
- /**
345
- * Destroy the injector and all services.
346
- */
347
- async destroy() {
348
- await $asyncEmit("$onDestroy");
349
- this.#cache.forEach((_, token) => {
350
- $off(token);
351
- });
352
- }
353
-
354
- /**
355
- * Bootstrap injector from container, resolve configuration and providers.
356
- *
357
- * @param container
358
- */
359
- protected async bootstrap(container: Container = createContainer()) {
360
- // Clone all providers in the container
361
- this.addProviders(container);
362
-
363
- // Resolve all configuration
364
- await this.resolveConfiguration();
365
-
366
- // allow mocking or changing provider instance before loading injector
367
- this.resolveImportsProviders();
368
-
369
- return this;
370
- }
371
-
372
- /**
373
- * Ensure that a provider is added to the container.
374
- * @protected
375
- */
376
- protected ensureProvider(token: TokenProvider, force: true): Provider;
377
- protected ensureProvider(token: TokenProvider, force: false): Provider | undefined;
378
- protected ensureProvider(token: TokenProvider): Provider | undefined;
379
- protected ensureProvider(token: TokenProvider, force = false): Provider | undefined {
380
- if (!this.hasProvider(token) && (GlobalProviders.has(token) || force)) {
381
- this.addProvider(token);
382
- }
383
-
384
- return this.getProvider(token)!;
385
- }
386
-
387
- /**
388
- * Invoke a class method and inject service.
389
- *
390
- * #### IInjectableMethod options
391
- *
392
- * * **target**: Optional. The class instance.
393
- * * **methodName**: `string` Optional. The method name.
394
- * * **designParamTypes**: `any[]` Optional. List of injectable types.
395
- * * **locals**: `Map<Function, any>` Optional. If preset then any argument Class are read from this object first, before the `InjectorService` is consulted.
396
- *
397
- * #### Example
398
- *
399
- * @param target
400
- * @param options
401
- * @private
402
- */
403
- protected invokeToken<T>(target: TokenProvider, options: Partial<InvokeOptions> = {}): T | Promise<T> {
404
- const resolvedOpts = this.mapInvokeOptions(target, options);
405
-
406
- if (!resolvedOpts) {
407
- return undefined as T;
408
- }
409
-
410
- const {token, deps, construct, imports, provider} = resolvedOpts;
411
-
412
- $emit("$beforeInvoke", token, [resolvedOpts]);
413
- $emit(`$beforeInvoke:${String(provider.type)}`, [resolvedOpts]);
414
-
415
- let instance: any;
416
- let currentDependency: any = false;
417
-
418
- try {
419
- const invokeDependency =
420
- (parent?: any) =>
421
- (token: TokenProvider | [TokenProvider], index: number): any => {
422
- currentDependency = {token, index, deps};
423
-
424
- if (isArray(token)) {
425
- return this.getMany(token[0], options);
426
- }
427
-
428
- return isInheritedFrom(token, Provider, 1)
429
- ? provider
430
- : this.resolve(token, {
431
- parent,
432
- locals: options.locals,
433
- useOpts: provider?.getArgOpts(index) || options.useOpts
434
- });
435
- };
436
-
437
- // Invoke manually imported providers
438
- imports.forEach(invokeDependency());
439
-
440
- // Inject dependencies
441
- const services = deps.map(invokeDependency(token));
442
-
443
- currentDependency = false;
444
-
445
- instance = construct(services);
446
- } catch (error) {
447
- InjectionError.throwInjectorError(token, currentDependency, error);
448
- }
449
-
450
- if (instance === undefined) {
451
- throw new InjectionError(
452
- token,
453
- `Unable to create new instance from undefined value. Check your provider declaration for ${nameOf(token)}`
454
- );
455
- }
456
-
457
- if (instance && isClass(classOf(instance))) {
458
- Reflect.defineProperty(instance, DI_INVOKE_OPTIONS, {
459
- get: () => ({rebuild: options.rebuild, locals: options.locals})
460
- });
461
- }
462
-
463
- $emit("$afterInvoke", token, [instance, resolvedOpts]);
464
-
465
- return instance;
466
- }
467
-
468
- private resolveImportsProviders() {
469
- this.settings.imports = this.settings.imports
470
- ?.filter((meta) => isObject(meta) && "token" in meta && meta.token !== InjectorService)
471
- .map((meta) => {
472
- if (isObject(meta) && "token" in meta) {
473
- const {token, ...props} = meta;
474
-
475
- const provider = this.ensureProvider(token, true);
476
-
477
- if (provider) {
478
- provider.useValue = undefined;
479
- provider.useAsyncFactory = undefined;
480
- provider.useFactory = undefined;
481
-
482
- if ("useClass" in props) {
483
- provider.useClass = props.useClass as TokenProvider;
484
- return;
485
- }
486
-
487
- if ("useFactory" in props) {
488
- provider.useFactory = props.useFactory as never;
489
- return;
490
- }
491
-
492
- if ("useAsyncFactory" in props) {
493
- provider.useAsyncFactory = props.useAsyncFactory as never;
494
- return;
495
- }
496
-
497
- if ("use" in props) {
498
- provider.useValue = props.use as unknown;
499
- return;
500
- }
501
- }
502
- }
503
-
504
- return meta;
505
- })
506
- .filter(Boolean) as unknown as (TokenProvider | ImportTokenProviderOpts)[];
507
- }
508
-
509
- /**
510
- * Create options to invoke a provider or class.
511
- * @param token
512
- * @param options
513
- */
514
- private mapInvokeOptions(token: TokenProvider, options: Partial<InvokeOptions>): ResolvedInvokeOptions | false {
515
- const locals = options.locals || new LocalsContainer();
516
-
517
- options.locals = locals;
518
-
519
- let imports: (TokenProvider | [TokenProvider])[] | undefined = options.imports;
520
- let deps: TokenProvider[] | undefined = options.deps;
521
- let construct;
522
-
523
- if (!token || token === Object) {
524
- throw new Error("Given token is undefined. Could mean a circular dependency problem. Try to use @Inject(() => Token) to solve it.");
525
- }
526
-
527
- let provider: Provider;
528
-
529
- if (!this.hasProvider(token)) {
530
- provider = new Provider(token);
531
- } else {
532
- provider = this.getProvider(token)!;
533
- }
534
-
535
- deps = deps || provider.deps;
536
- imports = imports || provider.imports;
537
-
538
- if (provider.useValue !== undefined) {
539
- construct = () => (isFunction(provider.useValue) ? provider.useValue() : provider.useValue);
540
- } else if (provider.useFactory) {
541
- construct = (deps: any[]) => provider.useFactory!(...deps);
542
- } else if (provider.useAsyncFactory) {
543
- construct = async (deps: any[]) => {
544
- deps = await Promise.all(deps);
545
- return provider.useAsyncFactory!(...deps);
546
- };
547
- } else if (provider.useClass) {
548
- // useClass
549
- deps = deps || getConstructorDependencies(provider.useClass);
550
- construct = (deps: TokenProvider[]) => new provider.useClass(...deps);
551
- } else {
552
- return false;
553
- }
554
-
555
- return {
556
- token,
557
- deps: deps! || [],
558
- imports: imports || [],
559
- construct,
560
- provider,
561
- locals
562
- };
563
- }
564
-
565
- private registerHooks(provider: Provider, options: Partial<InvokeOptions>) {
566
- if (provider.hooks) {
567
- if (provider.scope === ProviderScope.REQUEST) {
568
- if (options.locals && provider.hooks?.$onDestroy) {
569
- const {locals} = options;
570
-
571
- options.locals.hooks.on("$onDestroy", (...args: unknown[]) => {
572
- return provider.hooks?.$onDestroy?.(locals.get(provider.token), ...args);
573
- });
574
- }
575
-
576
- return;
577
- }
578
-
579
- Object.entries(provider.hooks).forEach(([event, cb]) => {
580
- const callback = (...args: any[]) => {
581
- return cb(this.#cache.get(provider.token), ...args);
582
- };
583
-
584
- $on(event, provider.token, callback);
585
- });
586
- }
587
- }
588
-
589
- private setToCache(provider: Provider, instance: any) {
590
- const set = (instance: any) => {
591
- this.#cache.set(provider.token, instance);
592
- provider?.alias && this.alias(provider.token, provider.alias);
593
- };
594
-
595
- if ("isAsync" in provider && !provider.isAsync() && !isPromise(instance)) {
596
- set(instance);
597
-
598
- return instance;
599
- }
600
-
601
- // store promise to lock token in cache
602
- set(instance);
603
-
604
- instance = instance.then((instance: any) => {
605
- set(instance);
606
-
607
- return instance;
608
- });
609
-
610
- return instance;
611
- }
612
- }
@@ -1,9 +0,0 @@
1
- import {colors} from "./colors.js";
2
-
3
- describe("colors", () => {
4
- it("should call colors", () => {
5
- colors.green("text");
6
- colors.yellow("text");
7
- colors.red("text");
8
- });
9
- });
@@ -1,11 +0,0 @@
1
- type ColorTextFn = (text: string) => string;
2
-
3
- // istanbul ignore next
4
- const colorIfAllowed = (colorFn: ColorTextFn) => (text: string) =>
5
- !process.env.NO_COLOR && process.env.NODE_ENV !== "production" ? colorFn(text) : text;
6
-
7
- const red = colorIfAllowed((text: string) => `\x1B[31m${text}\x1B[39m`);
8
- const yellow = colorIfAllowed((text: string) => `\x1B[33m${text}\x1B[39m`);
9
- const green = colorIfAllowed((text: string) => `\x1B[32m${text}\x1B[39m`);
10
-
11
- export const colors = {red, yellow, green};
@@ -1,18 +0,0 @@
1
- import {Module} from "../decorators/module.js";
2
- import {Container} from "../domain/Container.js";
3
- import {createContainer} from "./createContainer.js";
4
-
5
- describe("createContainer", () => {
6
- it("should createContainer", () => {
7
- expect(createContainer()).toBeInstanceOf(Container);
8
- });
9
-
10
- it("should createContainer without rootModule", () => {
11
- @Module()
12
- class MyModule {}
13
-
14
- const container = createContainer(MyModule);
15
-
16
- expect(container.has(MyModule)).toEqual(false);
17
- });
18
- });
@@ -1,14 +0,0 @@
1
- import {Type} from "@tsed/core/types/Type.js";
2
-
3
- import {Container} from "../domain/Container.js";
4
- import {GlobalProviders} from "../registries/GlobalProviders.js";
5
-
6
- export function createContainer(rootModule?: Type<any>) {
7
- const container = new Container(GlobalProviders.entries());
8
-
9
- if (rootModule) {
10
- container.delete(rootModule);
11
- }
12
-
13
- return container;
14
- }
@@ -1,16 +0,0 @@
1
- import {type AbstractType, type Type} from "@tsed/core/types/Type.js";
2
- import {methodsOf} from "@tsed/core/utils/methodsOf.js";
3
-
4
- export function discoverHooks(token: Type | AbstractType<any>) {
5
- return methodsOf(token).reduce((hooks, {propertyKey}) => {
6
- if (String(propertyKey).startsWith("$")) {
7
- const listener = (instance: any, ...args: any[]) => instance?.[propertyKey](...args);
8
-
9
- return {
10
- ...hooks,
11
- [propertyKey]: listener
12
- };
13
- }
14
- return hooks;
15
- }, {} as any);
16
- }