ts-ioc-container 13.2.4 → 14.0.0

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 (307) hide show
  1. package/cjm/automock/AutoMockedContainer.d.ts +13 -0
  2. package/cjm/{features/mock/MockedServiceLocator.js → automock/AutoMockedContainer.js} +17 -16
  3. package/cjm/automock/AutoMockedContainer.js.map +1 -0
  4. package/cjm/automock/IMockRepository.d.ts +3 -0
  5. package/cjm/{features/mock → automock}/IMockRepository.js +0 -0
  6. package/cjm/automock/IMockRepository.js.map +1 -0
  7. package/cjm/core/IInjector.d.ts +3 -3
  8. package/cjm/core/container/Container.d.ts +25 -0
  9. package/cjm/core/{ServiceLocator.js → container/Container.js} +37 -40
  10. package/cjm/core/container/Container.js.map +1 -0
  11. package/cjm/core/container/ContainerDisposedError.d.ts +5 -0
  12. package/cjm/{errors/NoRegistrationKeysProvided.js → core/container/ContainerDisposedError.js} +15 -10
  13. package/cjm/core/container/ContainerDisposedError.js.map +1 -0
  14. package/cjm/core/container/EmptyContainer.d.ts +10 -0
  15. package/cjm/core/container/EmptyContainer.js +30 -0
  16. package/cjm/core/container/EmptyContainer.js.map +1 -0
  17. package/cjm/core/container/IContainer.d.ts +13 -0
  18. package/cjm/{features → core}/container/IContainer.js +0 -0
  19. package/cjm/core/container/IContainer.js.map +1 -0
  20. package/cjm/core/container/IContainerHook.d.ts +6 -0
  21. package/cjm/core/{IInstanceHook.js → container/IContainerHook.js} +4 -4
  22. package/cjm/core/container/IContainerHook.js.map +1 -0
  23. package/cjm/core/provider/IProvider.d.ts +9 -5
  24. package/cjm/core/provider/IProvider.js +5 -0
  25. package/cjm/core/provider/IProvider.js.map +1 -1
  26. package/cjm/{features/container → core/provider}/IProvidersMetadataCollector.d.ts +2 -2
  27. package/cjm/{features/container → core/provider}/IProvidersMetadataCollector.js +0 -0
  28. package/cjm/core/provider/IProvidersMetadataCollector.js.map +1 -0
  29. package/cjm/core/provider/Provider.d.ts +9 -4
  30. package/cjm/core/provider/Provider.js +28 -4
  31. package/cjm/core/provider/Provider.js.map +1 -1
  32. package/cjm/core/provider/ProviderDecorator.d.ts +6 -4
  33. package/cjm/core/provider/ProviderDecorator.js +8 -2
  34. package/cjm/core/provider/ProviderDecorator.js.map +1 -1
  35. package/cjm/core/provider/ProviderHasNoKeyError.d.ts +4 -0
  36. package/cjm/{errors/LocatorDisposedError.js → core/provider/ProviderHasNoKeyError.js} +9 -9
  37. package/cjm/core/provider/ProviderHasNoKeyError.js.map +1 -0
  38. package/{esm/errors → cjm/core/provider}/ProviderNotFoundError.d.ts +1 -1
  39. package/cjm/{errors → core/provider}/ProviderNotFoundError.js +2 -2
  40. package/cjm/core/provider/ProviderNotFoundError.js.map +1 -0
  41. package/cjm/core/provider/ProviderRepo.d.ts +8 -0
  42. package/cjm/core/{ProviderRepo.js → provider/ProviderRepo.js} +22 -7
  43. package/cjm/core/provider/ProviderRepo.js.map +1 -0
  44. package/cjm/{features/container → core/provider}/ProvidersMetadataCollector.d.ts +1 -1
  45. package/cjm/{features/container → core/provider}/ProvidersMetadataCollector.js +2 -2
  46. package/cjm/core/provider/ProvidersMetadataCollector.js.map +1 -0
  47. package/cjm/{errors → core/utils}/MethodNotImplementedError.d.ts +0 -0
  48. package/cjm/{errors → core/utils}/MethodNotImplementedError.js +0 -0
  49. package/cjm/core/utils/MethodNotImplementedError.js.map +1 -0
  50. package/cjm/{helpers/utils.d.ts → core/utils/others.d.ts} +0 -0
  51. package/cjm/{helpers/utils.js → core/utils/others.js} +1 -1
  52. package/cjm/core/utils/others.js.map +1 -0
  53. package/cjm/{helpers → core/utils}/types.d.ts +0 -0
  54. package/cjm/{helpers → core/utils}/types.js +0 -0
  55. package/cjm/core/utils/types.js.map +1 -0
  56. package/{esm/features/instanceHook/InstanceHook.d.ts → cjm/hooks/ContainerHook.d.ts} +3 -3
  57. package/cjm/{features/instanceHook/InstanceHook.js → hooks/ContainerHook.js} +13 -13
  58. package/cjm/hooks/ContainerHook.js.map +1 -0
  59. package/cjm/hooks/IMethodsMetadataCollector.d.ts +5 -0
  60. package/cjm/{features/instanceHook/decorators.js → hooks/IMethodsMetadataCollector.js} +1 -1
  61. package/cjm/hooks/IMethodsMetadataCollector.js.map +1 -0
  62. package/cjm/{features/instanceHook → hooks}/MethodsMetadataCollector.d.ts +0 -0
  63. package/cjm/{features/instanceHook → hooks}/MethodsMetadataCollector.js +0 -0
  64. package/cjm/hooks/MethodsMetadataCollector.js.map +1 -0
  65. package/cjm/index.d.ts +40 -29
  66. package/cjm/index.js +91 -39
  67. package/cjm/index.js.map +1 -1
  68. package/cjm/injectors/ProxyInjector.d.ts +7 -0
  69. package/cjm/{features/injectors → injectors}/ProxyInjector.js +2 -2
  70. package/cjm/injectors/ProxyInjector.js.map +1 -0
  71. package/cjm/injectors/SimpleInjector.d.ts +6 -0
  72. package/cjm/{features/injectors → injectors}/SimpleInjector.js +2 -2
  73. package/cjm/injectors/SimpleInjector.js.map +1 -0
  74. package/cjm/providers/ArgsProvider.d.ts +13 -0
  75. package/cjm/{core/provider → providers}/ArgsProvider.js +14 -4
  76. package/cjm/providers/ArgsProvider.js.map +1 -0
  77. package/cjm/providers/LevelProvider.d.ts +11 -0
  78. package/cjm/{features/providers → providers}/LevelProvider.js +12 -2
  79. package/cjm/providers/LevelProvider.js.map +1 -0
  80. package/cjm/providers/ProviderBuilder.d.ts +15 -0
  81. package/cjm/{features/container → providers}/ProviderBuilder.js +8 -31
  82. package/cjm/providers/ProviderBuilder.js.map +1 -0
  83. package/cjm/providers/SingletonProvider.d.ts +13 -0
  84. package/cjm/{features/providers → providers}/SingletonProvider.js +13 -5
  85. package/cjm/providers/SingletonProvider.js.map +1 -0
  86. package/cjm/providers/TaggedProvider.d.ts +11 -0
  87. package/cjm/providers/TaggedProvider.js +80 -0
  88. package/cjm/providers/TaggedProvider.js.map +1 -0
  89. package/esm/automock/AutoMockedContainer.d.ts +13 -0
  90. package/esm/{features/mock/MockedServiceLocator.js → automock/AutoMockedContainer.js} +9 -8
  91. package/esm/automock/AutoMockedContainer.js.map +1 -0
  92. package/esm/automock/IMockRepository.d.ts +3 -0
  93. package/esm/{features/mock → automock}/IMockRepository.js +0 -0
  94. package/esm/automock/IMockRepository.js.map +1 -0
  95. package/esm/core/IInjector.d.ts +3 -3
  96. package/esm/core/container/Container.d.ts +25 -0
  97. package/esm/core/{ServiceLocator.js → container/Container.js} +22 -25
  98. package/esm/core/container/Container.js.map +1 -0
  99. package/esm/core/container/ContainerDisposedError.d.ts +5 -0
  100. package/esm/core/container/ContainerDisposedError.js +13 -0
  101. package/esm/core/container/ContainerDisposedError.js.map +1 -0
  102. package/esm/core/container/EmptyContainer.d.ts +10 -0
  103. package/esm/core/container/EmptyContainer.js +23 -0
  104. package/esm/core/container/EmptyContainer.js.map +1 -0
  105. package/esm/core/container/IContainer.d.ts +13 -0
  106. package/esm/{features → core}/container/IContainer.js +0 -0
  107. package/esm/core/container/IContainer.js.map +1 -0
  108. package/esm/core/container/IContainerHook.d.ts +6 -0
  109. package/esm/core/{IInstanceHook.js → container/IContainerHook.js} +2 -2
  110. package/esm/core/container/IContainerHook.js.map +1 -0
  111. package/esm/core/provider/IProvider.d.ts +9 -5
  112. package/esm/core/provider/IProvider.js +3 -1
  113. package/esm/core/provider/IProvider.js.map +1 -1
  114. package/esm/{features/container → core/provider}/IProvidersMetadataCollector.d.ts +2 -2
  115. package/esm/{features/container → core/provider}/IProvidersMetadataCollector.js +0 -0
  116. package/esm/core/provider/IProvidersMetadataCollector.js.map +1 -0
  117. package/esm/core/provider/Provider.d.ts +9 -4
  118. package/esm/core/provider/Provider.js +22 -3
  119. package/esm/core/provider/Provider.js.map +1 -1
  120. package/esm/core/provider/ProviderDecorator.d.ts +6 -4
  121. package/esm/core/provider/ProviderDecorator.js +8 -2
  122. package/esm/core/provider/ProviderDecorator.js.map +1 -1
  123. package/esm/core/provider/ProviderHasNoKeyError.d.ts +4 -0
  124. package/esm/core/provider/ProviderHasNoKeyError.js +8 -0
  125. package/esm/core/provider/ProviderHasNoKeyError.js.map +1 -0
  126. package/{cjm/errors → esm/core/provider}/ProviderNotFoundError.d.ts +1 -1
  127. package/esm/{errors → core/provider}/ProviderNotFoundError.js +2 -2
  128. package/esm/core/provider/ProviderNotFoundError.js.map +1 -0
  129. package/esm/core/provider/ProviderRepo.d.ts +8 -0
  130. package/esm/core/provider/ProviderRepo.js +25 -0
  131. package/esm/core/provider/ProviderRepo.js.map +1 -0
  132. package/esm/{features/container → core/provider}/ProvidersMetadataCollector.d.ts +1 -1
  133. package/esm/{features/container → core/provider}/ProvidersMetadataCollector.js +1 -1
  134. package/esm/core/provider/ProvidersMetadataCollector.js.map +1 -0
  135. package/esm/{errors → core/utils}/MethodNotImplementedError.d.ts +0 -0
  136. package/esm/{errors → core/utils}/MethodNotImplementedError.js +0 -0
  137. package/esm/core/utils/MethodNotImplementedError.js.map +1 -0
  138. package/esm/{helpers/utils.d.ts → core/utils/others.d.ts} +0 -0
  139. package/esm/{helpers/utils.js → core/utils/others.js} +1 -1
  140. package/esm/core/utils/others.js.map +1 -0
  141. package/esm/{helpers → core/utils}/types.d.ts +0 -0
  142. package/esm/{helpers → core/utils}/types.js +0 -0
  143. package/esm/core/utils/types.js.map +1 -0
  144. package/{cjm/features/instanceHook/InstanceHook.d.ts → esm/hooks/ContainerHook.d.ts} +3 -3
  145. package/esm/{features/instanceHook/InstanceHook.js → hooks/ContainerHook.js} +4 -4
  146. package/esm/hooks/ContainerHook.js.map +1 -0
  147. package/esm/hooks/IMethodsMetadataCollector.d.ts +5 -0
  148. package/esm/{features/instanceHook/decorators.js → hooks/IMethodsMetadataCollector.js} +1 -1
  149. package/esm/hooks/IMethodsMetadataCollector.js.map +1 -0
  150. package/esm/{features/instanceHook → hooks}/MethodsMetadataCollector.d.ts +0 -0
  151. package/esm/{features/instanceHook → hooks}/MethodsMetadataCollector.js +0 -0
  152. package/esm/hooks/MethodsMetadataCollector.js.map +1 -0
  153. package/esm/index.d.ts +40 -29
  154. package/esm/index.js +38 -18
  155. package/esm/index.js.map +1 -1
  156. package/esm/injectors/ProxyInjector.d.ts +7 -0
  157. package/esm/{features/injectors → injectors}/ProxyInjector.js +2 -2
  158. package/esm/injectors/ProxyInjector.js.map +1 -0
  159. package/esm/injectors/SimpleInjector.d.ts +6 -0
  160. package/esm/injectors/SimpleInjector.js +6 -0
  161. package/esm/injectors/SimpleInjector.js.map +1 -0
  162. package/esm/providers/ArgsProvider.d.ts +13 -0
  163. package/esm/providers/ArgsProvider.js +20 -0
  164. package/esm/providers/ArgsProvider.js.map +1 -0
  165. package/esm/providers/LevelProvider.d.ts +11 -0
  166. package/esm/{features/providers → providers}/LevelProvider.js +6 -1
  167. package/esm/providers/LevelProvider.js.map +1 -0
  168. package/esm/providers/ProviderBuilder.d.ts +15 -0
  169. package/esm/providers/ProviderBuilder.js +40 -0
  170. package/esm/providers/ProviderBuilder.js.map +1 -0
  171. package/esm/providers/SingletonProvider.d.ts +13 -0
  172. package/esm/providers/SingletonProvider.js +29 -0
  173. package/esm/providers/SingletonProvider.js.map +1 -0
  174. package/esm/providers/TaggedProvider.d.ts +11 -0
  175. package/esm/{features/providers → providers}/TaggedProvider.js +6 -1
  176. package/esm/providers/TaggedProvider.js.map +1 -0
  177. package/package.json +4 -4
  178. package/cjm/core/EmptyServiceLocator.d.ts +0 -12
  179. package/cjm/core/EmptyServiceLocator.js +0 -33
  180. package/cjm/core/EmptyServiceLocator.js.map +0 -1
  181. package/cjm/core/IInstanceHook.d.ts +0 -7
  182. package/cjm/core/IInstanceHook.js.map +0 -1
  183. package/cjm/core/IServiceLocator.d.ts +0 -15
  184. package/cjm/core/IServiceLocator.js +0 -8
  185. package/cjm/core/IServiceLocator.js.map +0 -1
  186. package/cjm/core/ProviderRepo.d.ts +0 -9
  187. package/cjm/core/ProviderRepo.js.map +0 -1
  188. package/cjm/core/ServiceLocator.d.ts +0 -25
  189. package/cjm/core/ServiceLocator.js.map +0 -1
  190. package/cjm/core/provider/ArgsProvider.d.ts +0 -11
  191. package/cjm/core/provider/ArgsProvider.js.map +0 -1
  192. package/cjm/errors/LocatorDisposedError.d.ts +0 -4
  193. package/cjm/errors/LocatorDisposedError.js.map +0 -1
  194. package/cjm/errors/MethodNotImplementedError.js.map +0 -1
  195. package/cjm/errors/NoRegistrationKeysProvided.d.ts +0 -4
  196. package/cjm/errors/NoRegistrationKeysProvided.js.map +0 -1
  197. package/cjm/errors/ProviderNotFoundError.js.map +0 -1
  198. package/cjm/features/container/Container.d.ts +0 -16
  199. package/cjm/features/container/Container.js +0 -62
  200. package/cjm/features/container/Container.js.map +0 -1
  201. package/cjm/features/container/ContainerProvider.d.ts +0 -9
  202. package/cjm/features/container/ContainerProvider.js +0 -44
  203. package/cjm/features/container/ContainerProvider.js.map +0 -1
  204. package/cjm/features/container/IContainer.d.ts +0 -8
  205. package/cjm/features/container/IContainer.js.map +0 -1
  206. package/cjm/features/container/IContainerProvider.d.ts +0 -4
  207. package/cjm/features/container/IContainerProvider.js +0 -3
  208. package/cjm/features/container/IContainerProvider.js.map +0 -1
  209. package/cjm/features/container/IProvidersMetadataCollector.js.map +0 -1
  210. package/cjm/features/container/ProviderBuilder.d.ts +0 -23
  211. package/cjm/features/container/ProviderBuilder.js.map +0 -1
  212. package/cjm/features/container/ProvidersMetadataCollector.js.map +0 -1
  213. package/cjm/features/container/decorators.d.ts +0 -9
  214. package/cjm/features/container/decorators.js +0 -91
  215. package/cjm/features/container/decorators.js.map +0 -1
  216. package/cjm/features/injectors/ProxyInjector.d.ts +0 -6
  217. package/cjm/features/injectors/ProxyInjector.js.map +0 -1
  218. package/cjm/features/injectors/SimpleInjector.d.ts +0 -6
  219. package/cjm/features/injectors/SimpleInjector.js.map +0 -1
  220. package/cjm/features/instanceHook/IMethodsMetadataCollector.d.ts +0 -4
  221. package/cjm/features/instanceHook/IMethodsMetadataCollector.js +0 -3
  222. package/cjm/features/instanceHook/IMethodsMetadataCollector.js.map +0 -1
  223. package/cjm/features/instanceHook/InstanceHook.js.map +0 -1
  224. package/cjm/features/instanceHook/MethodsMetadataCollector.js.map +0 -1
  225. package/cjm/features/instanceHook/decorators.d.ts +0 -2
  226. package/cjm/features/instanceHook/decorators.js.map +0 -1
  227. package/cjm/features/mock/IMockRepository.d.ts +0 -4
  228. package/cjm/features/mock/IMockRepository.js.map +0 -1
  229. package/cjm/features/mock/MockedServiceLocator.d.ts +0 -13
  230. package/cjm/features/mock/MockedServiceLocator.js.map +0 -1
  231. package/cjm/features/providers/LevelProvider.d.ts +0 -9
  232. package/cjm/features/providers/LevelProvider.js.map +0 -1
  233. package/cjm/features/providers/SingletonProvider.d.ts +0 -11
  234. package/cjm/features/providers/SingletonProvider.js.map +0 -1
  235. package/cjm/features/providers/TaggedProvider.d.ts +0 -9
  236. package/cjm/features/providers/TaggedProvider.js +0 -38
  237. package/cjm/features/providers/TaggedProvider.js.map +0 -1
  238. package/cjm/helpers/types.js.map +0 -1
  239. package/cjm/helpers/utils.js.map +0 -1
  240. package/esm/core/EmptyServiceLocator.d.ts +0 -12
  241. package/esm/core/EmptyServiceLocator.js +0 -26
  242. package/esm/core/EmptyServiceLocator.js.map +0 -1
  243. package/esm/core/IInstanceHook.d.ts +0 -7
  244. package/esm/core/IInstanceHook.js.map +0 -1
  245. package/esm/core/IServiceLocator.d.ts +0 -15
  246. package/esm/core/IServiceLocator.js +0 -4
  247. package/esm/core/IServiceLocator.js.map +0 -1
  248. package/esm/core/ProviderRepo.d.ts +0 -9
  249. package/esm/core/ProviderRepo.js +0 -21
  250. package/esm/core/ProviderRepo.js.map +0 -1
  251. package/esm/core/ServiceLocator.d.ts +0 -25
  252. package/esm/core/ServiceLocator.js.map +0 -1
  253. package/esm/core/provider/ArgsProvider.d.ts +0 -11
  254. package/esm/core/provider/ArgsProvider.js +0 -15
  255. package/esm/core/provider/ArgsProvider.js.map +0 -1
  256. package/esm/errors/LocatorDisposedError.d.ts +0 -4
  257. package/esm/errors/LocatorDisposedError.js +0 -8
  258. package/esm/errors/LocatorDisposedError.js.map +0 -1
  259. package/esm/errors/MethodNotImplementedError.js.map +0 -1
  260. package/esm/errors/NoRegistrationKeysProvided.d.ts +0 -4
  261. package/esm/errors/NoRegistrationKeysProvided.js +0 -8
  262. package/esm/errors/NoRegistrationKeysProvided.js.map +0 -1
  263. package/esm/errors/ProviderNotFoundError.js.map +0 -1
  264. package/esm/features/container/Container.d.ts +0 -16
  265. package/esm/features/container/Container.js +0 -27
  266. package/esm/features/container/Container.js.map +0 -1
  267. package/esm/features/container/ContainerProvider.d.ts +0 -9
  268. package/esm/features/container/ContainerProvider.js +0 -16
  269. package/esm/features/container/ContainerProvider.js.map +0 -1
  270. package/esm/features/container/IContainer.d.ts +0 -8
  271. package/esm/features/container/IContainer.js.map +0 -1
  272. package/esm/features/container/IContainerProvider.d.ts +0 -4
  273. package/esm/features/container/IContainerProvider.js +0 -2
  274. package/esm/features/container/IContainerProvider.js.map +0 -1
  275. package/esm/features/container/IProvidersMetadataCollector.js.map +0 -1
  276. package/esm/features/container/ProviderBuilder.d.ts +0 -23
  277. package/esm/features/container/ProviderBuilder.js +0 -55
  278. package/esm/features/container/ProviderBuilder.js.map +0 -1
  279. package/esm/features/container/ProvidersMetadataCollector.js.map +0 -1
  280. package/esm/features/container/decorators.d.ts +0 -9
  281. package/esm/features/container/decorators.js +0 -26
  282. package/esm/features/container/decorators.js.map +0 -1
  283. package/esm/features/injectors/ProxyInjector.d.ts +0 -6
  284. package/esm/features/injectors/ProxyInjector.js.map +0 -1
  285. package/esm/features/injectors/SimpleInjector.d.ts +0 -6
  286. package/esm/features/injectors/SimpleInjector.js +0 -6
  287. package/esm/features/injectors/SimpleInjector.js.map +0 -1
  288. package/esm/features/instanceHook/IMethodsMetadataCollector.d.ts +0 -4
  289. package/esm/features/instanceHook/IMethodsMetadataCollector.js +0 -2
  290. package/esm/features/instanceHook/IMethodsMetadataCollector.js.map +0 -1
  291. package/esm/features/instanceHook/InstanceHook.js.map +0 -1
  292. package/esm/features/instanceHook/MethodsMetadataCollector.js.map +0 -1
  293. package/esm/features/instanceHook/decorators.d.ts +0 -2
  294. package/esm/features/instanceHook/decorators.js.map +0 -1
  295. package/esm/features/mock/IMockRepository.d.ts +0 -4
  296. package/esm/features/mock/IMockRepository.js.map +0 -1
  297. package/esm/features/mock/MockedServiceLocator.d.ts +0 -13
  298. package/esm/features/mock/MockedServiceLocator.js.map +0 -1
  299. package/esm/features/providers/LevelProvider.d.ts +0 -9
  300. package/esm/features/providers/LevelProvider.js.map +0 -1
  301. package/esm/features/providers/SingletonProvider.d.ts +0 -11
  302. package/esm/features/providers/SingletonProvider.js +0 -24
  303. package/esm/features/providers/SingletonProvider.js.map +0 -1
  304. package/esm/features/providers/TaggedProvider.d.ts +0 -9
  305. package/esm/features/providers/TaggedProvider.js.map +0 -1
  306. package/esm/helpers/types.js.map +0 -1
  307. package/esm/helpers/utils.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ import { IContainer, IContainerHook, InjectionToken, IProvider, Tag } from '../index';
2
+ import { IMockRepository } from './IMockRepository';
3
+ export declare class AutoMockedContainer implements IContainer {
4
+ private decorated;
5
+ private mockRepository;
6
+ constructor(decorated: IContainer, mockRepository: IMockRepository);
7
+ createScope(tags?: Tag[], parent?: IContainer): IContainer;
8
+ resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
9
+ dispose(): void;
10
+ getProviders(): IProvider<unknown>[];
11
+ register(provider: IProvider<unknown>): this;
12
+ setHook(hook: IContainerHook): this;
13
+ }
@@ -25,18 +25,18 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.MockedServiceLocator = void 0;
29
- var index_1 = require("../../index");
30
- var MockedServiceLocator = /** @class */ (function () {
31
- function MockedServiceLocator(decorated, mockRepository) {
28
+ exports.AutoMockedContainer = void 0;
29
+ var index_1 = require("../index");
30
+ var AutoMockedContainer = /** @class */ (function () {
31
+ function AutoMockedContainer(decorated, mockRepository) {
32
32
  this.decorated = decorated;
33
33
  this.mockRepository = mockRepository;
34
34
  }
35
- MockedServiceLocator.prototype.createScope = function (tags, parent) {
35
+ AutoMockedContainer.prototype.createScope = function (tags, parent) {
36
36
  if (parent === void 0) { parent = this; }
37
- return new MockedServiceLocator(this.decorated.createScope(tags, parent), this.mockRepository);
37
+ return new AutoMockedContainer(this.decorated.createScope(tags, parent), this.mockRepository);
38
38
  };
39
- MockedServiceLocator.prototype.resolve = function (key) {
39
+ AutoMockedContainer.prototype.resolve = function (key) {
40
40
  var _a;
41
41
  var args = [];
42
42
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -52,20 +52,21 @@ var MockedServiceLocator = /** @class */ (function () {
52
52
  throw e;
53
53
  }
54
54
  };
55
- MockedServiceLocator.prototype.dispose = function () {
55
+ AutoMockedContainer.prototype.dispose = function () {
56
56
  this.mockRepository.dispose();
57
57
  };
58
- MockedServiceLocator.prototype.entries = function () {
59
- return this.decorated.entries();
58
+ AutoMockedContainer.prototype.getProviders = function () {
59
+ return this.decorated.getProviders();
60
60
  };
61
- MockedServiceLocator.prototype.register = function (key, provider) {
62
- this.decorated.register(key, provider);
61
+ AutoMockedContainer.prototype.register = function (provider) {
62
+ this.decorated.register(provider);
63
+ return this;
63
64
  };
64
- MockedServiceLocator.prototype.setHook = function (hook) {
65
+ AutoMockedContainer.prototype.setHook = function (hook) {
65
66
  this.decorated.setHook(hook);
66
67
  return this;
67
68
  };
68
- return MockedServiceLocator;
69
+ return AutoMockedContainer;
69
70
  }());
70
- exports.MockedServiceLocator = MockedServiceLocator;
71
- //# sourceMappingURL=MockedServiceLocator.js.map
71
+ exports.AutoMockedContainer = AutoMockedContainer;
72
+ //# sourceMappingURL=AutoMockedContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoMockedContainer.js","sourceRoot":"","sources":["../../lib/automock/AutoMockedContainer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAA6G;AAG7G;IACI,6BAAoB,SAAqB,EAAU,cAA+B;QAA9D,cAAS,GAAT,SAAS,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAiB;IAAG,CAAC;IAEtF,yCAAW,GAAX,UAAY,IAAY,EAAE,MAAyB;QAAzB,uBAAA,EAAA,aAAyB;QAC/C,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,CAAC;IAED,qCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI;YACA,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,GAAG,UAAK,IAAI,WAAE;SAC/C;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,6BAAqB,EAAE;gBACpC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC;aAC9C;YAED,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAED,qCAAO,GAAP;QACI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,0CAAY,GAAZ;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,sCAAQ,GAAR,UAAS,QAA4B;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAO,GAAP,UAAQ,IAAoB;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,0BAAC;AAAD,CAAC,AApCD,IAoCC;AApCY,kDAAmB"}
@@ -0,0 +1,3 @@
1
+ import { IDisposable, Resolveable } from '../index';
2
+ export interface IMockRepository extends IDisposable, Resolveable {
3
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMockRepository.js","sourceRoot":"","sources":["../../lib/automock/IMockRepository.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
- import { constructor } from '../helpers/types';
2
- import { IServiceLocator } from './IServiceLocator';
1
+ import { constructor } from './utils/types';
2
+ import { IContainer } from './container/IContainer';
3
3
  export interface IInjector {
4
- resolve<T>(locator: IServiceLocator, value: constructor<T>, ...deps: any[]): T;
4
+ resolve<T>(container: IContainer, value: constructor<T>, ...deps: any[]): T;
5
5
  }
@@ -0,0 +1,25 @@
1
+ import { InjectionToken, IContainer } from './IContainer';
2
+ import { IInjector } from '../IInjector';
3
+ import { IProvider, ScopeOptions, Tag } from '../provider/IProvider';
4
+ import { IContainerHook } from './IContainerHook';
5
+ export declare class Container implements IContainer, ScopeOptions {
6
+ private readonly injector;
7
+ private readonly providers;
8
+ private parent;
9
+ level: number;
10
+ tags: Tag[];
11
+ private hook;
12
+ private isDisposed;
13
+ constructor(injector: IInjector);
14
+ setParent(parent: IContainer): this;
15
+ setTags(tags: Tag[]): this;
16
+ setLevel(level?: number): this;
17
+ setHook(hook: IContainerHook): this;
18
+ register(provider: IProvider<unknown>): this;
19
+ resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
20
+ createScope(tags?: Tag[], parent?: IContainer): Container;
21
+ getProviders(): IProvider<unknown>[];
22
+ dispose(): void;
23
+ map<T extends IContainer>(transform: (l: IContainer) => T): T;
24
+ private validateContainer;
25
+ }
@@ -36,51 +36,52 @@ var __values = (this && this.__values) || function(o) {
36
36
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.ServiceLocator = void 0;
40
- var IServiceLocator_1 = require("./IServiceLocator");
41
- var EmptyServiceLocator_1 = require("./EmptyServiceLocator");
42
- var IInstanceHook_1 = require("./IInstanceHook");
43
- var ProviderRepo_1 = require("./ProviderRepo");
44
- var LocatorDisposedError_1 = require("../errors/LocatorDisposedError");
45
- var ServiceLocator = /** @class */ (function () {
46
- function ServiceLocator(injector) {
39
+ exports.Container = void 0;
40
+ var IProvider_1 = require("../provider/IProvider");
41
+ var EmptyContainer_1 = require("./EmptyContainer");
42
+ var IContainerHook_1 = require("./IContainerHook");
43
+ var ProviderRepo_1 = require("../provider/ProviderRepo");
44
+ var ContainerDisposedError_1 = require("./ContainerDisposedError");
45
+ var Container = /** @class */ (function () {
46
+ function Container(injector) {
47
47
  this.injector = injector;
48
48
  this.providers = new ProviderRepo_1.ProviderRepo();
49
- this.parent = new EmptyServiceLocator_1.EmptyServiceLocator();
49
+ this.parent = new EmptyContainer_1.EmptyContainer();
50
50
  this.level = 0;
51
51
  this.tags = [];
52
- this.hook = IInstanceHook_1.emptyHook;
52
+ this.hook = IContainerHook_1.emptyHook;
53
53
  this.isDisposed = false;
54
54
  }
55
- ServiceLocator.prototype.setParent = function (parent) {
55
+ Container.prototype.setParent = function (parent) {
56
56
  this.parent = parent;
57
57
  return this;
58
58
  };
59
- ServiceLocator.prototype.setTags = function (tags) {
59
+ Container.prototype.setTags = function (tags) {
60
60
  this.tags = tags;
61
61
  return this;
62
62
  };
63
- ServiceLocator.prototype.setLevel = function (level) {
63
+ Container.prototype.setLevel = function (level) {
64
64
  if (level === void 0) { level = 0; }
65
65
  this.level = level;
66
66
  return this;
67
67
  };
68
- ServiceLocator.prototype.setHook = function (hook) {
68
+ Container.prototype.setHook = function (hook) {
69
69
  this.hook = hook;
70
70
  return this;
71
71
  };
72
- ServiceLocator.prototype.register = function (key, provider) {
73
- this.validateLocator();
74
- this.providers.set(key, provider);
72
+ Container.prototype.register = function (provider) {
73
+ this.validateContainer();
74
+ this.providers.add(provider);
75
+ return this;
75
76
  };
76
- ServiceLocator.prototype.resolve = function (key) {
77
+ Container.prototype.resolve = function (key) {
77
78
  var _a, _b;
78
79
  var args = [];
79
80
  for (var _i = 1; _i < arguments.length; _i++) {
80
81
  args[_i - 1] = arguments[_i];
81
82
  }
82
- this.validateLocator();
83
- if ((0, IServiceLocator_1.isProviderKey)(key)) {
83
+ this.validateContainer();
84
+ if ((0, IProvider_1.isProviderKey)(key)) {
84
85
  var provider = this.providers.get(key);
85
86
  return (provider === null || provider === void 0 ? void 0 : provider.isValid(this))
86
87
  ? this.hook.resolve(provider.resolve.apply(provider, __spreadArray([this], __read(args), false)))
@@ -88,22 +89,20 @@ var ServiceLocator = /** @class */ (function () {
88
89
  }
89
90
  return this.hook.resolve((_b = this.injector).resolve.apply(_b, __spreadArray([this, key], __read(args), false)));
90
91
  };
91
- ServiceLocator.prototype.createScope = function (tags, parent) {
92
+ Container.prototype.createScope = function (tags, parent) {
92
93
  var e_1, _a;
93
94
  if (tags === void 0) { tags = []; }
94
95
  if (parent === void 0) { parent = this; }
95
- this.validateLocator();
96
- var scope = new ServiceLocator(this.injector)
96
+ this.validateContainer();
97
+ var scope = new Container(this.injector)
97
98
  .setParent(parent)
98
99
  .setLevel(this.level + 1)
99
100
  .setTags(tags)
100
101
  .setHook(this.hook.clone());
101
102
  try {
102
- for (var _b = __values(parent.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
103
- var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
104
- if (provider.isValid(scope)) {
105
- scope.register(key, provider.clone());
106
- }
103
+ for (var _b = __values(parent.getProviders().filter(function (p) { return p.isValid(scope); })), _c = _b.next(); !_c.done; _c = _b.next()) {
104
+ var provider = _c.value;
105
+ scope.register(provider.clone());
107
106
  }
108
107
  }
109
108
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -115,25 +114,23 @@ var ServiceLocator = /** @class */ (function () {
115
114
  }
116
115
  return scope;
117
116
  };
118
- ServiceLocator.prototype.entries = function () {
119
- return Array.from(new Map(__spreadArray(__spreadArray([], __read(this.parent.entries()), false), __read(this.providers.entries()), false)).entries());
117
+ Container.prototype.getProviders = function () {
118
+ return this.providers.merge(this.parent.getProviders());
120
119
  };
121
- ServiceLocator.prototype.dispose = function () {
120
+ Container.prototype.dispose = function () {
122
121
  this.isDisposed = true;
123
- this.parent = new EmptyServiceLocator_1.EmptyServiceLocator();
122
+ this.parent = new EmptyContainer_1.EmptyContainer();
124
123
  this.providers.dispose();
125
124
  this.hook.dispose();
126
125
  };
127
- ServiceLocator.prototype.map = function (transform) {
126
+ Container.prototype.map = function (transform) {
128
127
  this.parent = transform(this.parent);
129
128
  return transform(this);
130
129
  };
131
- ServiceLocator.prototype.validateLocator = function () {
132
- if (this.isDisposed) {
133
- throw new LocatorDisposedError_1.LocatorDisposedError("Locator is already disposed");
134
- }
130
+ Container.prototype.validateContainer = function () {
131
+ ContainerDisposedError_1.ContainerDisposedError.assert(!this.isDisposed, 'Container is already disposed');
135
132
  };
136
- return ServiceLocator;
133
+ return Container;
137
134
  }());
138
- exports.ServiceLocator = ServiceLocator;
139
- //# sourceMappingURL=ServiceLocator.js.map
135
+ exports.Container = Container;
136
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/core/container/Container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class ContainerDisposedError extends Error {
2
+ static assert(isTrue: boolean, failMessage: string): void;
3
+ name: string;
4
+ constructor(message: string);
5
+ }
@@ -15,16 +15,21 @@ var __extends = (this && this.__extends) || (function () {
15
15
  };
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.NoRegistrationKeysProvided = void 0;
19
- var NoRegistrationKeysProvided = /** @class */ (function (_super) {
20
- __extends(NoRegistrationKeysProvided, _super);
21
- function NoRegistrationKeysProvided() {
22
- var _this = _super.call(this, "Pls provide registration keys for current provider") || this;
23
- _this.name = 'NoRegistrationKeysProvided';
24
- Object.setPrototypeOf(_this, NoRegistrationKeysProvided.prototype);
18
+ exports.ContainerDisposedError = void 0;
19
+ var ContainerDisposedError = /** @class */ (function (_super) {
20
+ __extends(ContainerDisposedError, _super);
21
+ function ContainerDisposedError(message) {
22
+ var _this = _super.call(this, message) || this;
23
+ _this.name = 'ContainerDisposedError';
24
+ Object.setPrototypeOf(_this, ContainerDisposedError.prototype);
25
25
  return _this;
26
26
  }
27
- return NoRegistrationKeysProvided;
27
+ ContainerDisposedError.assert = function (isTrue, failMessage) {
28
+ if (!isTrue) {
29
+ throw new ContainerDisposedError(failMessage);
30
+ }
31
+ };
32
+ return ContainerDisposedError;
28
33
  }(Error));
29
- exports.NoRegistrationKeysProvided = NoRegistrationKeysProvided;
30
- //# sourceMappingURL=NoRegistrationKeysProvided.js.map
34
+ exports.ContainerDisposedError = ContainerDisposedError;
35
+ //# sourceMappingURL=ContainerDisposedError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContainerDisposedError.js","sourceRoot":"","sources":["../../../lib/core/container/ContainerDisposedError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAA4C,0CAAK;IAQ7C,gCAAY,OAAe;QAA3B,YACI,kBAAM,OAAO,CAAC,SAGjB;QAND,UAAI,GAAG,wBAAwB,CAAC;QAK5B,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;;IAClE,CAAC;IAXM,6BAAM,GAAb,UAAc,MAAe,EAAE,WAAmB;QAC9C,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,sBAAsB,CAAC,WAAW,CAAC,CAAC;SACjD;IACL,CAAC;IAQL,6BAAC;AAAD,CAAC,AAbD,CAA4C,KAAK,GAahD;AAbY,wDAAsB"}
@@ -0,0 +1,10 @@
1
+ import { InjectionToken, IContainer } from './IContainer';
2
+ import { IProvider } from '../provider/IProvider';
3
+ export declare class EmptyContainer implements IContainer {
4
+ createScope(): IContainer;
5
+ dispose(): void;
6
+ register(): this;
7
+ resolve<T>(key: InjectionToken<T>): T;
8
+ getProviders(): IProvider<unknown>[];
9
+ setHook(): this;
10
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmptyContainer = void 0;
4
+ var MethodNotImplementedError_1 = require("../utils/MethodNotImplementedError");
5
+ var ProviderNotFoundError_1 = require("../provider/ProviderNotFoundError");
6
+ var EmptyContainer = /** @class */ (function () {
7
+ function EmptyContainer() {
8
+ }
9
+ EmptyContainer.prototype.createScope = function () {
10
+ throw new MethodNotImplementedError_1.MethodNotImplementedError();
11
+ };
12
+ EmptyContainer.prototype.dispose = function () {
13
+ throw new MethodNotImplementedError_1.MethodNotImplementedError();
14
+ };
15
+ EmptyContainer.prototype.register = function () {
16
+ return this;
17
+ };
18
+ EmptyContainer.prototype.resolve = function (key) {
19
+ throw new ProviderNotFoundError_1.ProviderNotFoundError("Cannot find " + key.toString());
20
+ };
21
+ EmptyContainer.prototype.getProviders = function () {
22
+ return [];
23
+ };
24
+ EmptyContainer.prototype.setHook = function () {
25
+ throw new MethodNotImplementedError_1.MethodNotImplementedError();
26
+ };
27
+ return EmptyContainer;
28
+ }());
29
+ exports.EmptyContainer = EmptyContainer;
30
+ //# sourceMappingURL=EmptyContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../lib/core/container/EmptyContainer.ts"],"names":[],"mappings":";;;AACA,gFAA+E;AAC/E,2EAA0E;AAG1E;IAAA;IAwBA,CAAC;IAvBG,oCAAW,GAAX;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAQ,GAAR;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;QAC7B,MAAM,IAAI,6CAAqB,CAAC,iBAAe,GAAG,CAAC,QAAQ,EAAI,CAAC,CAAC;IACrE,CAAC;IAED,qCAAY,GAAZ;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,gCAAO,GAAP;QACI,MAAM,IAAI,qDAAyB,EAAE,CAAC;IAC1C,CAAC;IACL,qBAAC;AAAD,CAAC,AAxBD,IAwBC;AAxBY,wCAAc"}
@@ -0,0 +1,13 @@
1
+ import { IProvider, ProviderKey, Tag } from '../provider/IProvider';
2
+ import { constructor, IDisposable } from '../utils/types';
3
+ import { IContainerHook } from './IContainerHook';
4
+ export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
5
+ export interface Resolveable {
6
+ resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
7
+ }
8
+ export interface IContainer extends IDisposable, Resolveable {
9
+ createScope(tags?: Tag[], parent?: IContainer): IContainer;
10
+ register(provider: IProvider<unknown>): this;
11
+ getProviders(): IProvider<unknown>[];
12
+ setHook(hook: IContainerHook): this;
13
+ }
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../../lib/core/container/IContainer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { IDisposable } from '../utils/types';
2
+ export interface IContainerHook extends IDisposable {
3
+ resolve<T>(instance: T): T;
4
+ clone(): IContainerHook;
5
+ }
6
+ export declare const emptyHook: IContainerHook;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emptyHook = void 0;
4
- var utils_1 = require("../helpers/utils");
4
+ var others_1 = require("../utils/others");
5
5
  exports.emptyHook = {
6
- resolve: utils_1.id,
7
- dispose: utils_1.noop,
6
+ resolve: others_1.id,
7
+ dispose: others_1.noop,
8
8
  clone: function () { return exports.emptyHook; },
9
9
  };
10
- //# sourceMappingURL=IInstanceHook.js.map
10
+ //# sourceMappingURL=IContainerHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IContainerHook.js","sourceRoot":"","sources":["../../../lib/core/container/IContainerHook.ts"],"names":[],"mappings":";;;AAAA,0CAA2C;AAS9B,QAAA,SAAS,GAAmB;IACrC,OAAO,EAAE,WAAE;IACX,OAAO,EAAE,aAAI;IACb,KAAK,EAAE,cAAM,OAAA,iBAAS,EAAT,CAAS;CACzB,CAAC"}
@@ -1,13 +1,17 @@
1
- import { Resolveable } from '../IServiceLocator';
2
- import { IDisposable } from '../../helpers/types';
3
- export declare type ResolveDependency<T> = (locator: Resolveable, ...args: any[]) => T;
4
- export declare type Tag = string | symbol;
1
+ import { InjectionToken, Resolveable } from '../container/IContainer';
2
+ import { IDisposable } from '../utils/types';
3
+ export declare type ResolveDependency<T> = (container: Resolveable, ...args: any[]) => T;
4
+ export declare type Tag = string;
5
5
  export interface ScopeOptions {
6
6
  level: number;
7
7
  tags: Tag[];
8
8
  }
9
9
  export interface IProvider<T> extends IDisposable {
10
+ setKey(key: ProviderKey): void;
11
+ getKeyOrFail(): ProviderKey;
10
12
  clone(): IProvider<T>;
11
- resolve(locator: Resolveable, ...args: any[]): T;
13
+ resolve(container: Resolveable, ...args: any[]): T;
12
14
  isValid(filters: ScopeOptions): boolean;
13
15
  }
16
+ export declare type ProviderKey = string | symbol;
17
+ export declare function isProviderKey<T>(token: InjectionToken<T>): token is ProviderKey;
@@ -1,3 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isProviderKey = void 0;
4
+ function isProviderKey(token) {
5
+ return ['string', 'symbol'].includes(typeof token);
6
+ }
7
+ exports.isProviderKey = isProviderKey;
3
8
  //# sourceMappingURL=IProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvider.ts"],"names":[],"mappings":";;;AAwBA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
@@ -1,5 +1,5 @@
1
- import { constructor } from '../../helpers/types';
2
- import { ProviderBuilder } from './ProviderBuilder';
1
+ import { constructor } from '../utils/types';
2
+ import { ProviderBuilder } from '../../providers/ProviderBuilder';
3
3
  export declare type ProviderReducer<T> = (builder: ProviderBuilder<T>) => ProviderBuilder<T>;
4
4
  export interface IProvidersMetadataCollector {
5
5
  addReducer<T>(target: constructor<T>, reducer: ProviderReducer<T>): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProvidersMetadataCollector.js","sourceRoot":"","sources":["../../../lib/core/provider/IProvidersMetadataCollector.ts"],"names":[],"mappings":""}
@@ -1,13 +1,18 @@
1
- import { constructor } from '../../helpers/types';
2
- import { IProvider, ResolveDependency } from './IProvider';
3
- import { Resolveable } from '../IServiceLocator';
1
+ import { constructor } from '../utils/types';
2
+ import { IProvider, ProviderKey, ResolveDependency } from './IProvider';
3
+ import { Resolveable } from '../container/IContainer';
4
+ import { IProvidersMetadataCollector } from './IProvidersMetadataCollector';
4
5
  export declare class Provider<T> implements IProvider<T> {
5
6
  private readonly resolveDependency;
6
7
  static fromClass<T>(value: constructor<T>): Provider<T>;
7
8
  static fromValue<T>(value: T): Provider<T>;
9
+ private key?;
8
10
  constructor(resolveDependency: ResolveDependency<T>);
11
+ setKey(key: ProviderKey): void;
9
12
  clone(): Provider<T>;
10
- resolve(locator: Resolveable, ...args: any[]): T;
13
+ resolve(container: Resolveable, ...args: any[]): T;
11
14
  dispose(): void;
12
15
  isValid(): boolean;
16
+ getKeyOrFail(): ProviderKey;
13
17
  }
18
+ export declare const createAddKeyDecorator: (metadataCollector: IProvidersMetadataCollector) => (key: ProviderKey) => ClassDecorator;
@@ -25,7 +25,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.Provider = void 0;
28
+ exports.createAddKeyDecorator = exports.Provider = void 0;
29
+ var ProviderHasNoKeyError_1 = require("./ProviderHasNoKeyError");
29
30
  var Provider = /** @class */ (function () {
30
31
  function Provider(resolveDependency) {
31
32
  this.resolveDependency = resolveDependency;
@@ -42,21 +43,44 @@ var Provider = /** @class */ (function () {
42
43
  Provider.fromValue = function (value) {
43
44
  return new Provider(function () { return value; });
44
45
  };
46
+ Provider.prototype.setKey = function (key) {
47
+ this.key = key;
48
+ };
45
49
  Provider.prototype.clone = function () {
46
- return new Provider(this.resolveDependency);
50
+ var provider = new Provider(this.resolveDependency);
51
+ if (this.key) {
52
+ provider.setKey(this.key);
53
+ }
54
+ return provider;
47
55
  };
48
- Provider.prototype.resolve = function (locator) {
56
+ Provider.prototype.resolve = function (container) {
49
57
  var args = [];
50
58
  for (var _i = 1; _i < arguments.length; _i++) {
51
59
  args[_i - 1] = arguments[_i];
52
60
  }
53
- return this.resolveDependency.apply(this, __spreadArray([locator], __read(args), false));
61
+ return this.resolveDependency.apply(this, __spreadArray([container], __read(args), false));
54
62
  };
55
63
  Provider.prototype.dispose = function () { };
56
64
  Provider.prototype.isValid = function () {
57
65
  return true;
58
66
  };
67
+ Provider.prototype.getKeyOrFail = function () {
68
+ if (!this.key) {
69
+ throw new ProviderHasNoKeyError_1.ProviderHasNoKeyError('Pls provide registration keys for current provider');
70
+ }
71
+ return this.key;
72
+ };
59
73
  return Provider;
60
74
  }());
61
75
  exports.Provider = Provider;
76
+ var createAddKeyDecorator = function (metadataCollector) {
77
+ return function (key) {
78
+ return function (target) {
79
+ var targetClass = target;
80
+ var fn = metadataCollector.findReducerOrCreate(targetClass);
81
+ metadataCollector.addReducer(targetClass, function (builder) { return fn(builder).forKey(key); });
82
+ };
83
+ };
84
+ };
85
+ exports.createAddKeyDecorator = createAddKeyDecorator;
62
86
  //# sourceMappingURL=Provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IASI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IARjE,kBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI;QAAxB,CAAyB,CAAC,CAAC;IACnE,CAAC;IAEM,kBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IACrC,CAAC;IAID,wBAAK,GAAL;QACI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,0BAAO,GAAP,UAAQ,OAAoB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,eAAC;AAAD,CAAC,AAxBD,IAwBC;AAxBY,4BAAQ"}
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../lib/core/provider/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,iEAAgE;AAGhE;IAWI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAVjE,kBAAS,GAAhB,UAAoB,KAAqB;QACrC,OAAO,IAAI,QAAQ,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,CAAC,CAAC,OAAO,OAAT,CAAC,iBAAS,KAAK,UAAK,IAAI;QAAxB,CAAyB,CAAC,CAAC;IACnE,CAAC;IAEM,kBAAS,GAAhB,UAAoB,KAAQ;QACxB,OAAO,IAAI,QAAQ,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IACrC,CAAC;IAMD,yBAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,wBAAK,GAAL;QACI,IAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,GAAG,EAAE;YACV,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC7B;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,0BAAO,GAAP,UAAQ,SAAsB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAY,GAAZ;QACI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,6CAAqB,CAAC,oDAAoD,CAAC,CAAC;SACzF;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IACL,eAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,4BAAQ;AA2Cd,IAAM,qBAAqB,GAC9B,UAAC,iBAA8C;IAC/C,OAAA,UAAC,GAAgB;QACjB,OAAA,UAAC,MAAM;YACH,IAAM,WAAW,GAAG,MAAqC,CAAC;YAC1D,IAAM,EAAE,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAC9D,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,UAAC,OAAO,IAAK,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAvB,CAAuB,CAAC,CAAC;QACpF,CAAC;IAJD,CAIC;AALD,CAKC,CAAC;AAPO,QAAA,qBAAqB,yBAO5B"}
@@ -1,10 +1,12 @@
1
- import { Resolveable } from '../IServiceLocator';
2
- import { IProvider, ScopeOptions } from './IProvider';
1
+ import { Resolveable } from '../container/IContainer';
2
+ import { IProvider, ProviderKey, ScopeOptions } from './IProvider';
3
3
  export declare abstract class ProviderDecorator<T> implements IProvider<T> {
4
4
  private decorated;
5
- constructor(decorated: IProvider<T>);
5
+ protected constructor(decorated: IProvider<T>);
6
6
  clone(): IProvider<T>;
7
7
  dispose(): void;
8
8
  isValid(filters: ScopeOptions): boolean;
9
- resolve(locator: Resolveable, ...args: any[]): T;
9
+ resolve(container: Resolveable, ...args: any[]): T;
10
+ getKeyOrFail(): ProviderKey;
11
+ setKey(key: ProviderKey): void;
10
12
  }
@@ -39,13 +39,19 @@ var ProviderDecorator = /** @class */ (function () {
39
39
  ProviderDecorator.prototype.isValid = function (filters) {
40
40
  return this.decorated.isValid(filters);
41
41
  };
42
- ProviderDecorator.prototype.resolve = function (locator) {
42
+ ProviderDecorator.prototype.resolve = function (container) {
43
43
  var _a;
44
44
  var args = [];
45
45
  for (var _i = 1; _i < arguments.length; _i++) {
46
46
  args[_i - 1] = arguments[_i];
47
47
  }
48
- return (_a = this.decorated).resolve.apply(_a, __spreadArray([locator], __read(args), false));
48
+ return (_a = this.decorated).resolve.apply(_a, __spreadArray([container], __read(args), false));
49
+ };
50
+ ProviderDecorator.prototype.getKeyOrFail = function () {
51
+ return this.decorated.getKeyOrFail();
52
+ };
53
+ ProviderDecorator.prototype.setKey = function (key) {
54
+ this.decorated.setKey(key);
49
55
  };
50
56
  return ProviderDecorator;
51
57
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAE/C,iCAAK,GAAL;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,mCAAO,GAAP;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAoB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACxC,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IACL,wBAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBqB,8CAAiB"}
1
+ {"version":3,"file":"ProviderDecorator.js","sourceRoot":"","sources":["../../../lib/core/provider/ProviderDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,2BAA8B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEzD,iCAAK,GAAL;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,mCAAO,GAAP;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mCAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAO,GAAP,UAAQ,SAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC1C,OAAO,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,SAAS,UAAK,IAAI,WAAE;IACtD,CAAC;IAED,wCAAY,GAAZ;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,kCAAM,GAAN,UAAO,GAAgB;QACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACL,wBAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BqB,8CAAiB"}
@@ -0,0 +1,4 @@
1
+ export declare class ProviderHasNoKeyError extends Error {
2
+ name: string;
3
+ constructor(message: string);
4
+ }