ts-ioc-container 6.28.0 → 7.0.5

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 (298) hide show
  1. package/README.md +9 -8
  2. package/cjm/core/IInjector.d.ts +0 -1
  3. package/cjm/core/IProvider.d.ts +14 -0
  4. package/cjm/core/{providers/IProvider.js → IProvider.js} +0 -0
  5. package/cjm/core/IProvider.js.map +1 -0
  6. package/cjm/core/IProviderRepository.d.ts +2 -3
  7. package/cjm/core/IServiceLocator.d.ts +5 -4
  8. package/cjm/core/IServiceLocator.js.map +1 -1
  9. package/{esm/core/providers → cjm/core}/Provider.d.ts +3 -3
  10. package/cjm/core/{providers/Provider.js → Provider.js} +3 -0
  11. package/cjm/core/Provider.js.map +1 -0
  12. package/cjm/core/ProviderRepository.d.ts +7 -5
  13. package/cjm/core/ProviderRepository.js +28 -17
  14. package/cjm/core/ProviderRepository.js.map +1 -1
  15. package/cjm/core/ProviderStorage.d.ts +9 -0
  16. package/cjm/core/ProviderStorage.js +49 -0
  17. package/cjm/core/ProviderStorage.js.map +1 -0
  18. package/cjm/core/ServiceLocator.d.ts +2 -3
  19. package/cjm/core/ServiceLocator.js +3 -2
  20. package/cjm/core/ServiceLocator.js.map +1 -1
  21. package/cjm/errors/MethodNotImplementedError.d.ts +0 -1
  22. package/cjm/errors/ProviderNotFoundError.d.ts +0 -1
  23. package/cjm/features/ILocatorBuilder.d.ts +0 -1
  24. package/cjm/features/LocatorBuilder.d.ts +0 -1
  25. package/cjm/features/ProviderBuilder.d.ts +5 -7
  26. package/cjm/features/ProviderBuilder.js +14 -7
  27. package/cjm/features/ProviderBuilder.js.map +1 -1
  28. package/cjm/features/instanceHook/HookedInjector.d.ts +0 -1
  29. package/cjm/features/instanceHook/HookedProvider.d.ts +2 -2
  30. package/cjm/features/instanceHook/HookedProvider.js +3 -0
  31. package/cjm/features/instanceHook/HookedProvider.js.map +1 -1
  32. package/cjm/features/instanceHook/IInstanceHook.d.ts +0 -1
  33. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.d.ts +0 -1
  34. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.js +0 -0
  35. package/cjm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +1 -0
  36. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.d.ts +0 -1
  37. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.js +0 -0
  38. package/cjm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +1 -0
  39. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.d.ts +0 -1
  40. package/cjm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.js +0 -0
  41. package/cjm/features/instanceHook/decorators/decorators.js.map +1 -0
  42. package/cjm/features/instanceHook/emptyHook.d.ts +0 -1
  43. package/cjm/features/ioc/IInjectMetadataCollector.d.ts +0 -1
  44. package/cjm/features/ioc/InjectFn.d.ts +0 -1
  45. package/cjm/features/ioc/IocInjector.d.ts +0 -1
  46. package/cjm/features/ioc/IocLocatorBuilder.d.ts +0 -1
  47. package/cjm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.d.ts +2 -3
  48. package/cjm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.js +0 -0
  49. package/cjm/features/ioc/decorators/InjectMetadataCollector.js.map +1 -0
  50. package/cjm/{decorators/ioc → features/ioc/decorators}/decorators.d.ts +3 -4
  51. package/cjm/{decorators/ioc → features/ioc/decorators}/decorators.js +0 -0
  52. package/cjm/features/ioc/decorators/decorators.js.map +1 -0
  53. package/cjm/features/mock/IMockProviderStorage.d.ts +1 -2
  54. package/cjm/features/mock/MockProvider.d.ts +2 -1
  55. package/cjm/features/mock/MockProvider.js +3 -0
  56. package/cjm/features/mock/MockProvider.js.map +1 -1
  57. package/cjm/features/mock/MockProviderStorage.d.ts +1 -2
  58. package/cjm/features/mock/MockedRepository.d.ts +2 -2
  59. package/cjm/features/mock/MockedRepository.js +3 -1
  60. package/cjm/features/mock/MockedRepository.js.map +1 -1
  61. package/cjm/features/mock/VendorMockProviderStorage.d.ts +1 -2
  62. package/cjm/features/scope/LevelProvider.d.ts +11 -0
  63. package/cjm/features/scope/LevelProvider.js +55 -0
  64. package/cjm/features/scope/LevelProvider.js.map +1 -0
  65. package/{esm/core/providers → cjm/features/scope}/SingletonProvider.d.ts +3 -3
  66. package/cjm/{core/providers → features/scope}/SingletonProvider.js +6 -9
  67. package/cjm/features/scope/SingletonProvider.js.map +1 -0
  68. package/cjm/features/scope/TaggedProvider.d.ts +11 -0
  69. package/cjm/features/scope/TaggedProvider.js +56 -0
  70. package/cjm/features/scope/TaggedProvider.js.map +1 -0
  71. package/cjm/features/simple/SimpleInjector.d.ts +0 -1
  72. package/cjm/features/simple/SimpleLocatorBuilder.d.ts +0 -1
  73. package/cjm/helpers/Box.d.ts +4 -0
  74. package/cjm/helpers/Box.js +11 -0
  75. package/cjm/helpers/Box.js.map +1 -0
  76. package/cjm/helpers/IDisposable.d.ts +0 -1
  77. package/cjm/helpers/MathSet.d.ts +8 -0
  78. package/cjm/helpers/MathSet.js +51 -0
  79. package/cjm/helpers/MathSet.js.map +1 -0
  80. package/cjm/helpers/RangeType.d.ts +7 -0
  81. package/cjm/helpers/RangeType.js +40 -0
  82. package/cjm/helpers/RangeType.js.map +1 -0
  83. package/cjm/helpers/helpers.d.ts +0 -1
  84. package/cjm/helpers/types.d.ts +0 -1
  85. package/cjm/index.d.ts +11 -13
  86. package/cjm/index.js +11 -13
  87. package/cjm/index.js.map +1 -1
  88. package/esm/core/IInjector.d.ts +0 -1
  89. package/esm/core/IProvider.d.ts +14 -0
  90. package/esm/core/{providers/IProvider.js → IProvider.js} +0 -0
  91. package/esm/core/IProvider.js.map +1 -0
  92. package/esm/core/IProviderRepository.d.ts +2 -3
  93. package/esm/core/IServiceLocator.d.ts +5 -4
  94. package/esm/core/IServiceLocator.js.map +1 -1
  95. package/{cjm/core/providers → esm/core}/Provider.d.ts +3 -3
  96. package/esm/core/{providers/Provider.js → Provider.js} +3 -0
  97. package/esm/core/Provider.js.map +1 -0
  98. package/esm/core/ProviderRepository.d.ts +7 -5
  99. package/esm/core/ProviderRepository.js +16 -17
  100. package/esm/core/ProviderRepository.js.map +1 -1
  101. package/esm/core/ProviderStorage.d.ts +9 -0
  102. package/esm/core/ProviderStorage.js +25 -0
  103. package/esm/core/ProviderStorage.js.map +1 -0
  104. package/esm/core/ServiceLocator.d.ts +2 -3
  105. package/esm/core/ServiceLocator.js +2 -2
  106. package/esm/core/ServiceLocator.js.map +1 -1
  107. package/esm/errors/MethodNotImplementedError.d.ts +0 -1
  108. package/esm/errors/ProviderNotFoundError.d.ts +0 -1
  109. package/esm/features/ILocatorBuilder.d.ts +0 -1
  110. package/esm/features/LocatorBuilder.d.ts +0 -1
  111. package/esm/features/ProviderBuilder.d.ts +5 -7
  112. package/esm/features/ProviderBuilder.js +14 -7
  113. package/esm/features/ProviderBuilder.js.map +1 -1
  114. package/esm/features/instanceHook/HookedInjector.d.ts +0 -1
  115. package/esm/features/instanceHook/HookedProvider.d.ts +2 -2
  116. package/esm/features/instanceHook/HookedProvider.js +3 -0
  117. package/esm/features/instanceHook/HookedProvider.js.map +1 -1
  118. package/esm/features/instanceHook/IInstanceHook.d.ts +0 -1
  119. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.d.ts +0 -1
  120. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/IMethodsMetadataCollector.js +0 -0
  121. package/esm/features/instanceHook/decorators/IMethodsMetadataCollector.js.map +1 -0
  122. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.d.ts +0 -1
  123. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/MethodsMetadataCollector.js +0 -0
  124. package/esm/features/instanceHook/decorators/MethodsMetadataCollector.js.map +1 -0
  125. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.d.ts +0 -1
  126. package/esm/{decorators/instanceHook → features/instanceHook/decorators}/decorators.js +0 -0
  127. package/esm/features/instanceHook/decorators/decorators.js.map +1 -0
  128. package/esm/features/instanceHook/emptyHook.d.ts +0 -1
  129. package/esm/features/ioc/IInjectMetadataCollector.d.ts +0 -1
  130. package/esm/features/ioc/InjectFn.d.ts +0 -1
  131. package/esm/features/ioc/IocInjector.d.ts +0 -1
  132. package/esm/features/ioc/IocLocatorBuilder.d.ts +0 -1
  133. package/esm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.d.ts +2 -3
  134. package/esm/{decorators/ioc → features/ioc/decorators}/InjectMetadataCollector.js +0 -0
  135. package/esm/features/ioc/decorators/InjectMetadataCollector.js.map +1 -0
  136. package/esm/{decorators/ioc → features/ioc/decorators}/decorators.d.ts +3 -4
  137. package/esm/{decorators/ioc → features/ioc/decorators}/decorators.js +0 -0
  138. package/esm/features/ioc/decorators/decorators.js.map +1 -0
  139. package/esm/features/mock/IMockProviderStorage.d.ts +1 -2
  140. package/esm/features/mock/MockProvider.d.ts +2 -1
  141. package/esm/features/mock/MockProvider.js +3 -0
  142. package/esm/features/mock/MockProvider.js.map +1 -1
  143. package/esm/features/mock/MockProviderStorage.d.ts +1 -2
  144. package/esm/features/mock/MockedRepository.d.ts +2 -2
  145. package/esm/features/mock/MockedRepository.js +2 -1
  146. package/esm/features/mock/MockedRepository.js.map +1 -1
  147. package/esm/features/mock/VendorMockProviderStorage.d.ts +1 -2
  148. package/esm/features/scope/LevelProvider.d.ts +11 -0
  149. package/esm/features/scope/LevelProvider.js +20 -0
  150. package/esm/features/scope/LevelProvider.js.map +1 -0
  151. package/{cjm/core/providers → esm/features/scope}/SingletonProvider.d.ts +3 -3
  152. package/esm/{core/providers → features/scope}/SingletonProvider.js +5 -7
  153. package/esm/features/scope/SingletonProvider.js.map +1 -0
  154. package/esm/features/scope/TaggedProvider.d.ts +11 -0
  155. package/esm/features/scope/TaggedProvider.js +21 -0
  156. package/esm/features/scope/TaggedProvider.js.map +1 -0
  157. package/esm/features/simple/SimpleInjector.d.ts +0 -1
  158. package/esm/features/simple/SimpleLocatorBuilder.d.ts +0 -1
  159. package/esm/helpers/Box.d.ts +4 -0
  160. package/esm/helpers/Box.js +6 -0
  161. package/esm/helpers/Box.js.map +1 -0
  162. package/esm/helpers/IDisposable.d.ts +0 -1
  163. package/esm/helpers/MathSet.d.ts +8 -0
  164. package/esm/helpers/MathSet.js +23 -0
  165. package/esm/helpers/MathSet.js.map +1 -0
  166. package/esm/helpers/RangeType.d.ts +7 -0
  167. package/esm/helpers/RangeType.js +18 -0
  168. package/esm/helpers/RangeType.js.map +1 -0
  169. package/esm/helpers/helpers.d.ts +0 -1
  170. package/esm/helpers/types.d.ts +0 -1
  171. package/esm/index.d.ts +11 -13
  172. package/esm/index.js +8 -9
  173. package/esm/index.js.map +1 -1
  174. package/package.json +11 -40
  175. package/cjm/core/IInjector.d.ts.map +0 -1
  176. package/cjm/core/IProviderRepository.d.ts.map +0 -1
  177. package/cjm/core/IServiceLocator.d.ts.map +0 -1
  178. package/cjm/core/ProviderRepository.d.ts.map +0 -1
  179. package/cjm/core/ServiceLocator.d.ts.map +0 -1
  180. package/cjm/core/providers/IProvider.d.ts +0 -9
  181. package/cjm/core/providers/IProvider.d.ts.map +0 -1
  182. package/cjm/core/providers/IProvider.js.map +0 -1
  183. package/cjm/core/providers/Provider.d.ts.map +0 -1
  184. package/cjm/core/providers/Provider.js.map +0 -1
  185. package/cjm/core/providers/ScopedProvider.d.ts +0 -10
  186. package/cjm/core/providers/ScopedProvider.d.ts.map +0 -1
  187. package/cjm/core/providers/ScopedProvider.js +0 -26
  188. package/cjm/core/providers/ScopedProvider.js.map +0 -1
  189. package/cjm/core/providers/SingletonProvider.d.ts.map +0 -1
  190. package/cjm/core/providers/SingletonProvider.js.map +0 -1
  191. package/cjm/decorators/instanceHook/IMethodsMetadataCollector.d.ts.map +0 -1
  192. package/cjm/decorators/instanceHook/IMethodsMetadataCollector.js.map +0 -1
  193. package/cjm/decorators/instanceHook/MethodsMetadataCollector.d.ts.map +0 -1
  194. package/cjm/decorators/instanceHook/MethodsMetadataCollector.js.map +0 -1
  195. package/cjm/decorators/instanceHook/decorators.d.ts.map +0 -1
  196. package/cjm/decorators/instanceHook/decorators.js.map +0 -1
  197. package/cjm/decorators/ioc/InjectMetadataCollector.d.ts.map +0 -1
  198. package/cjm/decorators/ioc/InjectMetadataCollector.js.map +0 -1
  199. package/cjm/decorators/ioc/decorators.d.ts.map +0 -1
  200. package/cjm/decorators/ioc/decorators.js.map +0 -1
  201. package/cjm/errors/MethodNotImplementedError.d.ts.map +0 -1
  202. package/cjm/errors/ProviderNotClonedError.d.ts +0 -5
  203. package/cjm/errors/ProviderNotClonedError.d.ts.map +0 -1
  204. package/cjm/errors/ProviderNotClonedError.js +0 -30
  205. package/cjm/errors/ProviderNotClonedError.js.map +0 -1
  206. package/cjm/errors/ProviderNotFoundError.d.ts.map +0 -1
  207. package/cjm/features/ILocatorBuilder.d.ts.map +0 -1
  208. package/cjm/features/LocatorBuilder.d.ts.map +0 -1
  209. package/cjm/features/ProviderBuilder.d.ts.map +0 -1
  210. package/cjm/features/instanceHook/HookedInjector.d.ts.map +0 -1
  211. package/cjm/features/instanceHook/HookedProvider.d.ts.map +0 -1
  212. package/cjm/features/instanceHook/IInstanceHook.d.ts.map +0 -1
  213. package/cjm/features/instanceHook/emptyHook.d.ts.map +0 -1
  214. package/cjm/features/ioc/IInjectMetadataCollector.d.ts.map +0 -1
  215. package/cjm/features/ioc/InjectFn.d.ts.map +0 -1
  216. package/cjm/features/ioc/IocInjector.d.ts.map +0 -1
  217. package/cjm/features/ioc/IocLocatorBuilder.d.ts.map +0 -1
  218. package/cjm/features/mock/IMockProviderStorage.d.ts.map +0 -1
  219. package/cjm/features/mock/MockProvider.d.ts.map +0 -1
  220. package/cjm/features/mock/MockProviderStorage.d.ts.map +0 -1
  221. package/cjm/features/mock/MockedRepository.d.ts.map +0 -1
  222. package/cjm/features/mock/VendorMockProviderStorage.d.ts.map +0 -1
  223. package/cjm/features/scope/IScopeContext.d.ts +0 -5
  224. package/cjm/features/scope/IScopeContext.d.ts.map +0 -1
  225. package/cjm/features/scope/IScopeContext.js +0 -5
  226. package/cjm/features/scope/IScopeContext.js.map +0 -1
  227. package/cjm/features/scope/ScopeContext.d.ts +0 -7
  228. package/cjm/features/scope/ScopeContext.d.ts.map +0 -1
  229. package/cjm/features/scope/ScopeContext.js +0 -14
  230. package/cjm/features/scope/ScopeContext.js.map +0 -1
  231. package/cjm/features/simple/SimpleInjector.d.ts.map +0 -1
  232. package/cjm/features/simple/SimpleLocatorBuilder.d.ts.map +0 -1
  233. package/cjm/helpers/IDisposable.d.ts.map +0 -1
  234. package/cjm/helpers/helpers.d.ts.map +0 -1
  235. package/cjm/helpers/types.d.ts.map +0 -1
  236. package/cjm/index.d.ts.map +0 -1
  237. package/esm/core/IInjector.d.ts.map +0 -1
  238. package/esm/core/IProviderRepository.d.ts.map +0 -1
  239. package/esm/core/IServiceLocator.d.ts.map +0 -1
  240. package/esm/core/ProviderRepository.d.ts.map +0 -1
  241. package/esm/core/ServiceLocator.d.ts.map +0 -1
  242. package/esm/core/providers/IProvider.d.ts +0 -9
  243. package/esm/core/providers/IProvider.d.ts.map +0 -1
  244. package/esm/core/providers/IProvider.js.map +0 -1
  245. package/esm/core/providers/Provider.d.ts.map +0 -1
  246. package/esm/core/providers/Provider.js.map +0 -1
  247. package/esm/core/providers/ScopedProvider.d.ts +0 -10
  248. package/esm/core/providers/ScopedProvider.d.ts.map +0 -1
  249. package/esm/core/providers/ScopedProvider.js +0 -17
  250. package/esm/core/providers/ScopedProvider.js.map +0 -1
  251. package/esm/core/providers/SingletonProvider.d.ts.map +0 -1
  252. package/esm/core/providers/SingletonProvider.js.map +0 -1
  253. package/esm/decorators/instanceHook/IMethodsMetadataCollector.d.ts.map +0 -1
  254. package/esm/decorators/instanceHook/IMethodsMetadataCollector.js.map +0 -1
  255. package/esm/decorators/instanceHook/MethodsMetadataCollector.d.ts.map +0 -1
  256. package/esm/decorators/instanceHook/MethodsMetadataCollector.js.map +0 -1
  257. package/esm/decorators/instanceHook/decorators.d.ts.map +0 -1
  258. package/esm/decorators/instanceHook/decorators.js.map +0 -1
  259. package/esm/decorators/ioc/InjectMetadataCollector.d.ts.map +0 -1
  260. package/esm/decorators/ioc/InjectMetadataCollector.js.map +0 -1
  261. package/esm/decorators/ioc/decorators.d.ts.map +0 -1
  262. package/esm/decorators/ioc/decorators.js.map +0 -1
  263. package/esm/errors/MethodNotImplementedError.d.ts.map +0 -1
  264. package/esm/errors/ProviderNotClonedError.d.ts +0 -5
  265. package/esm/errors/ProviderNotClonedError.d.ts.map +0 -1
  266. package/esm/errors/ProviderNotClonedError.js +0 -8
  267. package/esm/errors/ProviderNotClonedError.js.map +0 -1
  268. package/esm/errors/ProviderNotFoundError.d.ts.map +0 -1
  269. package/esm/features/ILocatorBuilder.d.ts.map +0 -1
  270. package/esm/features/LocatorBuilder.d.ts.map +0 -1
  271. package/esm/features/ProviderBuilder.d.ts.map +0 -1
  272. package/esm/features/instanceHook/HookedInjector.d.ts.map +0 -1
  273. package/esm/features/instanceHook/HookedProvider.d.ts.map +0 -1
  274. package/esm/features/instanceHook/IInstanceHook.d.ts.map +0 -1
  275. package/esm/features/instanceHook/emptyHook.d.ts.map +0 -1
  276. package/esm/features/ioc/IInjectMetadataCollector.d.ts.map +0 -1
  277. package/esm/features/ioc/InjectFn.d.ts.map +0 -1
  278. package/esm/features/ioc/IocInjector.d.ts.map +0 -1
  279. package/esm/features/ioc/IocLocatorBuilder.d.ts.map +0 -1
  280. package/esm/features/mock/IMockProviderStorage.d.ts.map +0 -1
  281. package/esm/features/mock/MockProvider.d.ts.map +0 -1
  282. package/esm/features/mock/MockProviderStorage.d.ts.map +0 -1
  283. package/esm/features/mock/MockedRepository.d.ts.map +0 -1
  284. package/esm/features/mock/VendorMockProviderStorage.d.ts.map +0 -1
  285. package/esm/features/scope/IScopeContext.d.ts +0 -5
  286. package/esm/features/scope/IScopeContext.d.ts.map +0 -1
  287. package/esm/features/scope/IScopeContext.js +0 -2
  288. package/esm/features/scope/IScopeContext.js.map +0 -1
  289. package/esm/features/scope/ScopeContext.d.ts +0 -7
  290. package/esm/features/scope/ScopeContext.d.ts.map +0 -1
  291. package/esm/features/scope/ScopeContext.js +0 -9
  292. package/esm/features/scope/ScopeContext.js.map +0 -1
  293. package/esm/features/simple/SimpleInjector.d.ts.map +0 -1
  294. package/esm/features/simple/SimpleLocatorBuilder.d.ts.map +0 -1
  295. package/esm/helpers/IDisposable.d.ts.map +0 -1
  296. package/esm/helpers/helpers.d.ts.map +0 -1
  297. package/esm/helpers/types.d.ts.map +0 -1
  298. package/esm/index.d.ts.map +0 -1
package/README.md CHANGED
@@ -57,7 +57,7 @@ How to create new simple locator
57
57
  import { SimpleLocatorBuilder, ProviderBuilder } from 'ts-ioc-container';
58
58
 
59
59
  const locator = new SimpleLocatorBuilder().build();
60
- locator.register('ILogger', ProviderBuilder.fromConstructor(Logger).asRequested());
60
+ locator.register('ILogger', ProviderBuilder.fromConstructor(Logger).build());
61
61
  const logger = locator.resolve<ILogger>('ILogger');
62
62
  ```
63
63
  ### Injectors
@@ -73,7 +73,7 @@ class Car {
73
73
  }
74
74
 
75
75
  const locator = new SimpleLocatorBuilder().build();
76
- locator.register('IEngine', ProviderBuilder.fromConstructor(Engine).asRequested());
76
+ locator.register('IEngine', ProviderBuilder.fromConstructor(Engine).build());
77
77
  const car = locator.resolve(Car);
78
78
  ```
79
79
  IoC injector. Compose `@inject` decorator as you need. Or use default `createInjectDecorator`;
@@ -107,7 +107,7 @@ export const Collection = <T>(...injections: InjectFn<T>[]) => l => injections.m
107
107
  */
108
108
 
109
109
  const locator = new IocLocatorBuilder(constructorMetadataCollector).build();
110
- locator.register<IEngine>('IEngine', ProviderBuilder.fromConstructor(Engine).asRequested());
110
+ locator.register<IEngine>('IEngine', ProviderBuilder.fromConstructor(Engine).asRequested().build());
111
111
 
112
112
  class Car {
113
113
  constructor(
@@ -134,9 +134,10 @@ const car = locator.resolve(Car);
134
134
  import {ProviderBuilder} from "ts-ioc-container";
135
135
 
136
136
  locator.register('ILogger', new ProviderBuilder((l, ...args) => new Logger(...args)).asRequested());
137
- locator.register('ILogger1', ProviderBuilder.fromConstructor(Logger).asSingleton());
138
- locator.register('ILogger2', ProviderBuilder.fromConstructor(Logger).asScoped());
139
- locator.register('ILogger3', ProviderBuilder.fromConstructor(Logger).withArgs('dev').asSingleton());
137
+ locator.register('ILogger1', ProviderBuilder.fromConstructor(Logger).asSingleton().forLevel(0).build()); // global singleton
138
+ locator.register('ILogger2', ProviderBuilder.fromConstructor(Logger).asSingleton().forLevel(1).build()); // first scope singleton
139
+ locator.register('ILogger3', ProviderBuilder.fromConstructor(Logger).asSingleton().forTags(['tag1', 'tag2']).build()); // singleton for scope with tag1 or tag2
140
+ locator.register('ILogger4', ProviderBuilder.fromConstructor(Logger).withArgs('dev').asSingleton().build()); // singleton in every scope
140
141
  ```
141
142
 
142
143
  ## Hooks
@@ -218,7 +219,7 @@ class Engine {
218
219
  }
219
220
 
220
221
  // in the case if you don't want to use locator.resolve to instanciate Engine you should use .withHook
221
- locator.register('IEngine', new ProviderBuilder(() => new Engine()).withHook(hook).asRequested())
222
+ locator.register('IEngine', new ProviderBuilder(() => new Engine()).withHook(hook).build())
222
223
  const engine = locator.resolve(Engine); // output: initialized!
223
224
  locator.dispose(); // output: disposed!
224
225
  ```
@@ -226,7 +227,7 @@ locator.dispose(); // output: disposed!
226
227
  ## Scoped locators
227
228
 
228
229
  ```typescript
229
- const scope = locator.createLocator();
230
+ const scope = locator.createLocator(['tag1', 'tag2']);
230
231
  const logger = scope.resolve('ILogger');
231
232
  scope.dispose();
232
233
  ```
@@ -3,4 +3,3 @@ import { IDisposable } from '../helpers/IDisposable';
3
3
  export interface IInjector extends IDisposable {
4
4
  resolve<T>(value: constructor<T>, ...deps: any[]): T;
5
5
  }
6
- //# sourceMappingURL=IInjector.d.ts.map
@@ -0,0 +1,14 @@
1
+ import { IServiceLocator, Resolveable } from './IServiceLocator';
2
+ import { IDisposable } from '../helpers/IDisposable';
3
+ export declare type ResolveDependency<T> = (locator: IServiceLocator, ...args: any[]) => T;
4
+ export declare type Tag = string | symbol;
5
+ export interface ScopeOptions {
6
+ level: number;
7
+ tags: Tag[];
8
+ }
9
+ export interface IProvider<T> extends IDisposable {
10
+ clone(): IProvider<T>;
11
+ resolve(locator: Resolveable, ...args: any[]): T;
12
+ isValid(filters: ScopeOptions): boolean;
13
+ }
14
+ export declare type ProviderKey = string | symbol;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProvider.js","sourceRoot":"","sources":["../../lib/core/IProvider.ts"],"names":[],"mappings":""}
@@ -1,8 +1,7 @@
1
- import { IProvider, ProviderKey } from './providers/IProvider';
1
+ import { IProvider, ProviderKey, Tag } from './IProvider';
2
2
  import { IDisposable } from '../helpers/IDisposable';
3
3
  export interface IProviderRepository extends IDisposable {
4
- clone(parent?: IProviderRepository): IProviderRepository;
4
+ clone(tags?: Tag[], parent?: IProviderRepository): IProviderRepository;
5
5
  find<T>(key: ProviderKey): IProvider<T>;
6
6
  add<T>(key: ProviderKey, provider: IProvider<T>): void;
7
7
  }
8
- //# sourceMappingURL=IProviderRepository.d.ts.map
@@ -1,13 +1,14 @@
1
- import { IProvider, ProviderKey } from './providers/IProvider';
1
+ import { IProvider, ProviderKey, Tag } from './IProvider';
2
2
  import { constructor } from '../helpers/types';
3
3
  import { IDisposable } from '../helpers/IDisposable';
4
4
  import { IInjector } from './IInjector';
5
5
  export declare type InjectionToken<T = any> = constructor<T> | ProviderKey;
6
6
  export declare type CreateInjectorFn = (l: IServiceLocator) => IInjector;
7
- export interface IServiceLocator extends IDisposable {
8
- createLocator(): IServiceLocator;
7
+ export interface Resolveable {
9
8
  resolve<T>(key: InjectionToken<T>, ...deps: any[]): T;
9
+ }
10
+ export interface IServiceLocator extends Resolveable, IDisposable {
11
+ createLocator(tags?: Tag[]): IServiceLocator;
10
12
  register<T>(key: ProviderKey, provider: IProvider<T>): this;
11
13
  }
12
14
  export declare function isProviderKey<T>(token: InjectionToken<T>): token is ProviderKey;
13
- //# sourceMappingURL=IServiceLocator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IServiceLocator.js","sourceRoot":"","sources":["../../lib/core/IServiceLocator.ts"],"names":[],"mappings":";;;AAgBA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
1
+ {"version":3,"file":"IServiceLocator.js","sourceRoot":"","sources":["../../lib/core/IServiceLocator.ts"],"names":[],"mappings":";;;AAkBA,SAAgB,aAAa,CAAI,KAAwB;IACrD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,sCAEC"}
@@ -1,10 +1,10 @@
1
- import { IProvider, ResolveDependency } from './IProvider';
2
- import { IServiceLocator } from '../IServiceLocator';
1
+ import { IProvider, ResolveDependency, ScopeOptions } from './IProvider';
2
+ import { IServiceLocator } from './IServiceLocator';
3
3
  export declare class Provider<T> implements IProvider<T> {
4
4
  private readonly resolveDependency;
5
5
  constructor(resolveDependency: ResolveDependency<T>);
6
6
  clone(): IProvider<T>;
7
7
  resolve(locator: IServiceLocator, ...args: any[]): T;
8
8
  dispose(): void;
9
+ isValid(filters: ScopeOptions): boolean;
9
10
  }
10
- //# sourceMappingURL=Provider.d.ts.map
@@ -41,6 +41,9 @@ var Provider = /** @class */ (function () {
41
41
  return this.resolveDependency.apply(this, __spreadArray([locator], __read(args), false));
42
42
  };
43
43
  Provider.prototype.dispose = function () { };
44
+ Provider.prototype.isValid = function (filters) {
45
+ return true;
46
+ };
44
47
  return Provider;
45
48
  }());
46
49
  exports.Provider = Provider;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../lib/core/Provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IACI,kBAA6B,iBAAuC;QAAvC,sBAAiB,GAAjB,iBAAiB,CAAsB;IAAG,CAAC;IAExE,wBAAK,GAAL;QACI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,0BAAO,GAAP,UAAQ,OAAwB;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC5C,OAAO,IAAI,CAAC,iBAAiB,OAAtB,IAAI,iBAAmB,OAAO,UAAK,IAAI,WAAE;IACpD,CAAC;IAED,0BAAO,GAAP,cAAiB,CAAC;IAElB,0BAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,eAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBY,4BAAQ"}
@@ -1,12 +1,14 @@
1
- import { IProvider, ProviderKey } from './providers/IProvider';
1
+ import { IProvider, ProviderKey, ScopeOptions, Tag } from './IProvider';
2
2
  import { IProviderRepository } from './IProviderRepository';
3
- export declare class ProviderRepository implements IProviderRepository {
3
+ export declare class ProviderRepository implements IProviderRepository, ScopeOptions {
4
4
  private parent?;
5
+ level: number;
6
+ tags: Tag[];
5
7
  private readonly providers;
6
- constructor(parent?: IProviderRepository | undefined);
8
+ constructor(parent?: ProviderRepository, level?: number, tags?: Tag[]);
7
9
  add<T>(key: ProviderKey, provider: IProvider<T>): void;
8
- clone(parent?: IProviderRepository): IProviderRepository;
10
+ clone(tags?: Tag[], parent?: ProviderRepository): IProviderRepository;
11
+ entries(filters: ScopeOptions): Array<[ProviderKey, IProvider<any>]>;
9
12
  dispose(): void;
10
13
  find<T>(key: ProviderKey): IProvider<T>;
11
14
  }
12
- //# sourceMappingURL=ProviderRepository.d.ts.map
@@ -26,34 +26,40 @@ var __read = (this && this.__read) || function (o, n) {
26
26
  }
27
27
  return ar;
28
28
  };
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
29
38
  Object.defineProperty(exports, "__esModule", { value: true });
30
39
  exports.ProviderRepository = void 0;
31
40
  var ProviderNotFoundError_1 = require("../errors/ProviderNotFoundError");
32
- var ProviderNotClonedError_1 = require("../errors/ProviderNotClonedError");
41
+ var ProviderStorage_1 = require("./ProviderStorage");
33
42
  var ProviderRepository = /** @class */ (function () {
34
- function ProviderRepository(parent) {
43
+ function ProviderRepository(parent, level, tags) {
44
+ if (level === void 0) { level = 0; }
45
+ if (tags === void 0) { tags = []; }
35
46
  this.parent = parent;
36
- this.providers = new Map();
47
+ this.level = level;
48
+ this.tags = tags;
49
+ this.providers = new ProviderStorage_1.ProviderStorage();
37
50
  }
38
51
  ProviderRepository.prototype.add = function (key, provider) {
39
- this.providers.set(key, provider);
52
+ this.providers.add(key, provider);
40
53
  };
41
- ProviderRepository.prototype.clone = function (parent) {
54
+ ProviderRepository.prototype.clone = function (tags, parent) {
42
55
  var e_1, _a;
56
+ if (tags === void 0) { tags = []; }
43
57
  if (parent === void 0) { parent = this; }
44
- var repo = new ProviderRepository(parent);
58
+ var repo = new ProviderRepository(parent, parent.level + 1, tags);
45
59
  try {
46
- for (var _b = __values(this.providers.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
60
+ for (var _b = __values(parent.entries(repo)), _c = _b.next(); !_c.done; _c = _b.next()) {
47
61
  var _d = __read(_c.value, 2), key = _d[0], provider = _d[1];
48
- try {
49
- repo.add(key, provider.clone());
50
- }
51
- catch (e) {
52
- if (e instanceof ProviderNotClonedError_1.ProviderNotClonedError) {
53
- continue;
54
- }
55
- throw e;
56
- }
62
+ repo.add(key, provider.clone());
57
63
  }
58
64
  }
59
65
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -65,6 +71,11 @@ var ProviderRepository = /** @class */ (function () {
65
71
  }
66
72
  return repo;
67
73
  };
74
+ ProviderRepository.prototype.entries = function (filters) {
75
+ var localProviders = this.providers.entries(filters);
76
+ var parentProviders = this.parent ? this.parent.entries(filters) : [];
77
+ return Array.from(new Map(__spreadArray(__spreadArray([], __read(parentProviders), false), __read(localProviders), false)).entries());
78
+ };
68
79
  ProviderRepository.prototype.dispose = function () {
69
80
  var e_2, _a;
70
81
  try {
@@ -85,7 +96,7 @@ var ProviderRepository = /** @class */ (function () {
85
96
  };
86
97
  ProviderRepository.prototype.find = function (key) {
87
98
  var _a, _b;
88
- var provider = (_a = this.providers.get(key)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.find(key);
99
+ var provider = (_a = this.providers.find(key, this)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.find(key);
89
100
  if (provider === undefined) {
90
101
  throw new ProviderNotFoundError_1.ProviderNotFoundError(key.toString());
91
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderRepository.js","sourceRoot":"","sources":["../../lib/core/ProviderRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAAwE;AAExE,2EAA0E;AAE1E;IAGI,4BAAoB,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;QAF/B,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEjB,CAAC;IAEpD,gCAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,kCAAK,GAAL,UAAM,MAAkC;;QAAlC,uBAAA,EAAA,aAAkC;QACpC,IAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;;YAC5C,KAA8B,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;gBAA7C,IAAA,KAAA,mBAAe,EAAd,GAAG,QAAA,EAAE,QAAQ,QAAA;gBACrB,IAAI;oBACA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;iBACnC;gBAAC,OAAO,CAAC,EAAE;oBACR,IAAI,CAAC,YAAY,+CAAsB,EAAE;wBACrC,SAAS;qBACZ;oBACD,MAAM,CAAC,CAAC;iBACX;aACJ;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAO,GAAP;;;YACI,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE;gBAApC,IAAM,CAAC,WAAA;gBACR,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,iCAAI,GAAJ,UAAQ,GAAgB;;QACpB,IAAM,QAAQ,GAAG,MAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAkB,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAI,GAAG,CAAC,CAAC;QACxF,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,6CAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACnD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACL,yBAAC;AAAD,CAAC,AAvCD,IAuCC;AAvCY,gDAAkB"}
1
+ {"version":3,"file":"ProviderRepository.js","sourceRoot":"","sources":["../../lib/core/ProviderRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAAwE;AAExE,qDAAoD;AAEpD;IAGI,4BAAoB,MAA2B,EAAS,KAAS,EAAS,IAAgB;QAAlC,sBAAA,EAAA,SAAS;QAAS,qBAAA,EAAA,SAAgB;QAAtE,WAAM,GAAN,MAAM,CAAqB;QAAS,UAAK,GAAL,KAAK,CAAI;QAAS,SAAI,GAAJ,IAAI,CAAY;QAFzE,cAAS,GAAG,IAAI,iCAAe,EAAE,CAAC;IAE0C,CAAC;IAE9F,gCAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,kCAAK,GAAL,UAAM,IAAgB,EAAE,MAAiC;;QAAnD,qBAAA,EAAA,SAAgB;QAAE,uBAAA,EAAA,aAAiC;QACrD,IAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;;YACpE,KAA8B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,4BAAE;gBAAzC,IAAA,KAAA,mBAAe,EAAd,GAAG,QAAA,EAAE,QAAQ,QAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;aACnC;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAO,GAAP,UAAQ,OAAqB;QACzB,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,IAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,wCAAK,eAAe,kBAAK,cAAc,UAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,oCAAO,GAAP;;;YACI,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE;gBAApC,IAAM,CAAC,WAAA;gBACR,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,iCAAI,GAAJ,UAAQ,GAAgB;;QACpB,IAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,CAAC,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAI,GAAG,CAAC,CAAC;QAChF,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,6CAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACnD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACL,yBAAC;AAAD,CAAC,AAtCD,IAsCC;AAtCY,gDAAkB"}
@@ -0,0 +1,9 @@
1
+ import { IProvider, ProviderKey, ScopeOptions } from './IProvider';
2
+ export declare class ProviderStorage {
3
+ private readonly providers;
4
+ add<T>(key: ProviderKey, provider: IProvider<T>): void;
5
+ entries(filters: ScopeOptions): [ProviderKey, IProvider<any>][];
6
+ values(): IterableIterator<IProvider<any>>;
7
+ find<T>(key: ProviderKey, filters: ScopeOptions): IProvider<T> | undefined;
8
+ clear(): void;
9
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.ProviderStorage = void 0;
20
+ var ProviderStorage = /** @class */ (function () {
21
+ function ProviderStorage() {
22
+ this.providers = new Map();
23
+ }
24
+ ProviderStorage.prototype.add = function (key, provider) {
25
+ this.providers.set(key, provider);
26
+ };
27
+ ProviderStorage.prototype.entries = function (filters) {
28
+ return Array.from(this.providers.entries()).filter(function (_a) {
29
+ var _b = __read(_a, 2), value = _b[1];
30
+ return value.isValid(filters);
31
+ });
32
+ };
33
+ ProviderStorage.prototype.values = function () {
34
+ return this.providers.values();
35
+ };
36
+ ProviderStorage.prototype.find = function (key, filters) {
37
+ var provider = this.providers.get(key);
38
+ if (!provider || !provider.isValid(filters)) {
39
+ return undefined;
40
+ }
41
+ return provider;
42
+ };
43
+ ProviderStorage.prototype.clear = function () {
44
+ this.providers.clear();
45
+ };
46
+ return ProviderStorage;
47
+ }());
48
+ exports.ProviderStorage = ProviderStorage;
49
+ //# sourceMappingURL=ProviderStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderStorage.js","sourceRoot":"","sources":["../../lib/core/ProviderStorage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAEA;IAAA;QACqB,cAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAyBxE,CAAC;IAvBG,6BAAG,GAAH,UAAO,GAAgB,EAAE,QAAsB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,iCAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,UAAC,EAAS;gBAAT,KAAA,aAAS,EAAN,KAAK,QAAA;YAAM,OAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAtB,CAAsB,CAAC,CAAC;IAC9F,CAAC;IAED,gCAAM,GAAN;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,8BAAI,GAAJ,UAAQ,GAAgB,EAAE,OAAqB;QAC3C,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC;QACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzC,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,+BAAK,GAAL;QACI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACL,sBAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,0CAAe"}
@@ -1,5 +1,5 @@
1
1
  import { CreateInjectorFn, InjectionToken, IServiceLocator } from './IServiceLocator';
2
- import { IProvider, ProviderKey } from './providers/IProvider';
2
+ import { IProvider, ProviderKey, Tag } from './IProvider';
3
3
  import { IProviderRepository } from './IProviderRepository';
4
4
  export declare class ServiceLocator implements IServiceLocator {
5
5
  private readonly createInjector;
@@ -8,7 +8,6 @@ export declare class ServiceLocator implements IServiceLocator {
8
8
  constructor(createInjector: CreateInjectorFn, providerRepo: IProviderRepository);
9
9
  register<T>(key: ProviderKey, provider: IProvider<T>): this;
10
10
  resolve<T>(key: InjectionToken<T>, ...args: any[]): T;
11
- createLocator(): IServiceLocator;
11
+ createLocator(tags?: Tag[]): IServiceLocator;
12
12
  dispose(): void;
13
13
  }
14
- //# sourceMappingURL=ServiceLocator.d.ts.map
@@ -49,8 +49,9 @@ var ServiceLocator = /** @class */ (function () {
49
49
  }
50
50
  return (_a = this.injector).resolve.apply(_a, __spreadArray([key], __read(args), false));
51
51
  };
52
- ServiceLocator.prototype.createLocator = function () {
53
- return new ServiceLocator(this.createInjector, this.providerRepo.clone());
52
+ ServiceLocator.prototype.createLocator = function (tags) {
53
+ if (tags === void 0) { tags = []; }
54
+ return new ServiceLocator(this.createInjector, this.providerRepo.clone(tags));
54
55
  };
55
56
  ServiceLocator.prototype.dispose = function () {
56
57
  this.providerRepo.dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAqG;AAKrG;IAGI,wBAA6B,cAAgC,EAAmB,YAAiC;QAApF,mBAAc,GAAd,cAAc,CAAkB;QAAmB,iBAAY,GAAZ,YAAY,CAAqB;QAC7G,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,iCAAQ,GAAR,UAAY,GAAgB,EAAE,QAAsB;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI,IAAA,+BAAa,EAAC,GAAG,CAAC,EAAE;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,OAAO,OAAhB,QAAQ,iBAAS,IAAI,UAAK,IAAI,WAAE;SAC1C;QAED,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAI,GAAG,UAAK,IAAI,WAAE;IAClD,CAAC;IAED,sCAAa,GAAb;QACI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,gCAAO,GAAP;QACI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACL,qBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,wCAAc"}
1
+ {"version":3,"file":"ServiceLocator.js","sourceRoot":"","sources":["../../lib/core/ServiceLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAqG;AAKrG;IAGI,wBAA6B,cAAgC,EAAmB,YAAiC;QAApF,mBAAc,GAAd,cAAc,CAAkB;QAAmB,iBAAY,GAAZ,YAAY,CAAqB;QAC7G,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,iCAAQ,GAAR,UAAY,GAAgB,EAAE,QAAsB;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAO,GAAP,UAAW,GAAsB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC7C,IAAI,IAAA,+BAAa,EAAC,GAAG,CAAC,EAAE;YACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAI,GAAG,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,OAAO,OAAhB,QAAQ,iBAAS,IAAI,UAAK,IAAI,WAAE;SAC1C;QAED,OAAO,CAAA,KAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,OAAO,0BAAI,GAAG,UAAK,IAAI,WAAE;IAClD,CAAC;IAED,sCAAa,GAAb,UAAc,IAAgB;QAAhB,qBAAA,EAAA,SAAgB;QAC1B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,gCAAO,GAAP;QACI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACL,qBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,wCAAc"}
@@ -2,4 +2,3 @@ export declare class MethodNotImplementedError extends Error {
2
2
  name: string;
3
3
  constructor(message: string);
4
4
  }
5
- //# sourceMappingURL=MethodNotImplementedError.d.ts.map
@@ -2,4 +2,3 @@ export declare class ProviderNotFoundError extends Error {
2
2
  name: string;
3
3
  constructor(key: string);
4
4
  }
5
- //# sourceMappingURL=ProviderNotFoundError.d.ts.map
@@ -6,4 +6,3 @@ export interface ILocatorBuilder {
6
6
  withMockedRepository(mockedProviderStorage: IMockProviderStorage): this;
7
7
  build(): IServiceLocator;
8
8
  }
9
- //# sourceMappingURL=ILocatorBuilder.d.ts.map
@@ -11,4 +11,3 @@ export declare abstract class LocatorBuilder implements ILocatorBuilder {
11
11
  withMockedRepository(mockedProviderStorage: IMockProviderStorage): this;
12
12
  build(): IServiceLocator;
13
13
  }
14
- //# sourceMappingURL=LocatorBuilder.d.ts.map
@@ -1,6 +1,4 @@
1
- import { IProvider, ResolveDependency } from '../core/providers/IProvider';
2
- import { SingletonProvider } from '../core/providers/SingletonProvider';
3
- import { ScopedProvider } from '../core/providers/ScopedProvider';
1
+ import { IProvider, ResolveDependency, Tag } from '../core/IProvider';
4
2
  import { constructor } from '../helpers/types';
5
3
  import { IServiceLocator } from '../core/IServiceLocator';
6
4
  import { IInstanceHook } from './instanceHook/IInstanceHook';
@@ -12,8 +10,8 @@ export declare class ProviderBuilder<T> {
12
10
  withArgs(...extraArgs: any[]): this;
13
11
  withHook(hook: IInstanceHook): this;
14
12
  withArgsFn(fn: (l: IServiceLocator) => any[]): this;
15
- asSingleton(): SingletonProvider<T>;
16
- asScoped(): ScopedProvider<T>;
17
- asRequested(): IProvider<T>;
13
+ asSingleton(): this;
14
+ forTags(tags: Tag[]): this;
15
+ forLevel(level: number): this;
16
+ build(): IProvider<T>;
18
17
  }
19
- //# sourceMappingURL=ProviderBuilder.d.ts.map
@@ -26,10 +26,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.ProviderBuilder = void 0;
29
- var SingletonProvider_1 = require("../core/providers/SingletonProvider");
30
- var ScopedProvider_1 = require("../core/providers/ScopedProvider");
31
- var Provider_1 = require("../core/providers/Provider");
29
+ var SingletonProvider_1 = require("./scope/SingletonProvider");
30
+ var Provider_1 = require("../core/Provider");
32
31
  var HookedProvider_1 = require("./instanceHook/HookedProvider");
32
+ var TaggedProvider_1 = require("./scope/TaggedProvider");
33
+ var LevelProvider_1 = require("./scope/LevelProvider");
33
34
  var ProviderBuilder = /** @class */ (function () {
34
35
  function ProviderBuilder(fn) {
35
36
  this.provider = new Provider_1.Provider(fn);
@@ -70,12 +71,18 @@ var ProviderBuilder = /** @class */ (function () {
70
71
  return this;
71
72
  };
72
73
  ProviderBuilder.prototype.asSingleton = function () {
73
- return new SingletonProvider_1.SingletonProvider(this.provider);
74
+ this.provider = new SingletonProvider_1.SingletonProvider(this.provider);
75
+ return this;
76
+ };
77
+ ProviderBuilder.prototype.forTags = function (tags) {
78
+ this.provider = new TaggedProvider_1.TaggedProvider(this.provider, tags);
79
+ return this;
74
80
  };
75
- ProviderBuilder.prototype.asScoped = function () {
76
- return new ScopedProvider_1.ScopedProvider(this.provider);
81
+ ProviderBuilder.prototype.forLevel = function (level) {
82
+ this.provider = new LevelProvider_1.LevelProvider(this.provider, [level, level]);
83
+ return this;
77
84
  };
78
- ProviderBuilder.prototype.asRequested = function () {
85
+ ProviderBuilder.prototype.build = function () {
79
86
  return this.provider;
80
87
  };
81
88
  return ProviderBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAAwE;AACxE,mEAAkE;AAClE,uDAAsD;AAGtD,gEAA+D;AAG/D;IAWI,yBAAY,EAAwB;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAVM,+BAAe,GAAtB,UAA0B,KAAqB;QAC3C,OAAO,IAAI,eAAe,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;IAC1E,CAAC;IAEM,4BAAY,GAAnB,UAAuB,KAAQ;QAC3B,OAAO,IAAI,eAAe,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAC5C,CAAC;IAMD,kCAAQ,GAAR;QAAS,mBAAmB;aAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;YAAnB,8BAAmB;;QACxB,IAAI,CAAC,UAAU,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,IAAmB;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAU,GAAV,UAAW,EAAiC;QACxC,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,WAAW,CAAC,OAAO,OAAnB,WAAW,+BAAS,CAAC,UAAK,IAAI,kBAAK,EAAE,CAAC,CAAC,CAAC;QAAxC,CAAyC,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QACI,OAAO,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,kCAAQ,GAAR;QACI,OAAO,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,qCAAW,GAAX;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AA1CD,IA0CC;AA1CY,0CAAe"}
1
+ {"version":3,"file":"ProviderBuilder.js","sourceRoot":"","sources":["../../lib/features/ProviderBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAA8D;AAC9D,6CAA4C;AAG5C,gEAA+D;AAE/D,yDAAwD;AACxD,uDAAsD;AAEtD;IAWI,yBAAY,EAAwB;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAVM,+BAAe,GAAtB,UAA0B,KAAqB;QAC3C,OAAO,IAAI,eAAe,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;IAC1E,CAAC;IAEM,4BAAY,GAAnB,UAAuB,KAAQ;QAC3B,OAAO,IAAI,eAAe,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAC5C,CAAC;IAMD,kCAAQ,GAAR;QAAS,mBAAmB;aAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;YAAnB,8BAAmB;;QACxB,IAAI,CAAC,UAAU,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,IAAmB;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAU,GAAV,UAAW,EAAiC;QACxC,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,UAAC,CAAC;YAAE,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,6BAAO;;YAAK,OAAA,WAAW,CAAC,OAAO,OAAnB,WAAW,+BAAS,CAAC,UAAK,IAAI,kBAAK,EAAE,CAAC,CAAC,CAAC;QAAxC,CAAyC,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAW,GAAX;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAO,GAAP,UAAQ,IAAW;QACf,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,+BAAK,GAAL;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACL,sBAAC;AAAD,CAAC,AAjDD,IAiDC;AAjDY,0CAAe"}
@@ -8,4 +8,3 @@ export declare class HookedInjector implements IInjector {
8
8
  dispose(): void;
9
9
  resolve<T>(value: constructor<T>, ...deps: any[]): T;
10
10
  }
11
- //# sourceMappingURL=HookedInjector.d.ts.map
@@ -1,4 +1,4 @@
1
- import { IProvider } from '../../core/providers/IProvider';
1
+ import { IProvider, ScopeOptions } from '../../core/IProvider';
2
2
  import { IInstanceHook } from './IInstanceHook';
3
3
  import { IServiceLocator } from '../../core/IServiceLocator';
4
4
  export declare class HookedProvider<GInstance> implements IProvider<GInstance> {
@@ -9,5 +9,5 @@ export declare class HookedProvider<GInstance> implements IProvider<GInstance> {
9
9
  dispose(): void;
10
10
  resolve(locator: IServiceLocator, ...args: any[]): GInstance;
11
11
  clone(): HookedProvider<GInstance>;
12
+ isValid(filters: ScopeOptions): boolean;
12
13
  }
13
- //# sourceMappingURL=HookedProvider.d.ts.map
@@ -75,6 +75,9 @@ var HookedProvider = /** @class */ (function () {
75
75
  HookedProvider.prototype.clone = function () {
76
76
  return new HookedProvider(this.decorated.clone(), this.hook);
77
77
  };
78
+ HookedProvider.prototype.isValid = function (filters) {
79
+ return this.decorated.isValid(filters);
80
+ };
78
81
  return HookedProvider;
79
82
  }());
80
83
  exports.HookedProvider = HookedProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"HookedProvider.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/HookedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IAGI,wBAA6B,SAA+B,EAAmB,IAAmB;QAArE,cAAS,GAAT,SAAS,CAAsB;QAAmB,SAAI,GAAJ,IAAI,CAAe;QAFjF,cAAS,GAAG,IAAI,GAAG,EAAa,CAAC;IAEmD,CAAC;IAEtG,gCAAO,GAAP;;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;YACzB,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;gBAAlC,IAAM,QAAQ,WAAA;gBACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aACjC;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAwB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC5C,IAAM,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,OAAO,UAAK,IAAI,UAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,8BAAK,GAAL;QACI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACL,qBAAC;AAAD,CAAC,AAvBD,IAuBC;AAvBY,wCAAc"}
1
+ {"version":3,"file":"HookedProvider.js","sourceRoot":"","sources":["../../../lib/features/instanceHook/HookedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;IAGI,wBAA6B,SAA+B,EAAmB,IAAmB;QAArE,cAAS,GAAT,SAAS,CAAsB;QAAmB,SAAI,GAAJ,IAAI,CAAe;QAFjF,cAAS,GAAG,IAAI,GAAG,EAAa,CAAC;IAEmD,CAAC;IAEtG,gCAAO,GAAP;;QACI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;YACzB,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;gBAAlC,IAAM,QAAQ,WAAA;gBACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aACjC;;;;;;;;;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAwB;;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QAC5C,IAAM,QAAQ,GAAG,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,OAAO,0BAAC,OAAO,UAAK,IAAI,UAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,8BAAK,GAAL;QACI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAqB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACL,qBAAC;AAAD,CAAC,AA3BD,IA2BC;AA3BY,wCAAc"}
@@ -2,4 +2,3 @@ export interface IInstanceHook {
2
2
  onConstruct<GInstance>(instance: GInstance): void;
3
3
  onDispose<GInstance>(instance: GInstance): void;
4
4
  }
5
- //# sourceMappingURL=IInstanceHook.d.ts.map
@@ -2,4 +2,3 @@ export interface IMethodsMetadataCollector {
2
2
  addHook(target: Object, propertyKey: string | symbol): void;
3
3
  invokeHooksOf<T>(instance: T): void;
4
4
  }
5
- //# sourceMappingURL=IMethodsMetadataCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMethodsMetadataCollector.js","sourceRoot":"","sources":["../../../../lib/features/instanceHook/decorators/IMethodsMetadataCollector.ts"],"names":[],"mappings":""}
@@ -6,4 +6,3 @@ export declare class MethodsMetadataCollector implements IMethodsMetadataCollect
6
6
  invokeHooksOf<GInstance extends Object>(target: GInstance): void;
7
7
  private static getTargetId;
8
8
  }
9
- //# sourceMappingURL=MethodsMetadataCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodsMetadataCollector.js","sourceRoot":"","sources":["../../../../lib/features/instanceHook/decorators/MethodsMetadataCollector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;IACI,kCAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,wDAAwD;IACxD,0CAAO,GAAP,UAAkC,MAAiB,EAAE,WAA4B;QAC7E,IAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,yCAAM,KAAK,YAAE,WAAW,WAAG,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,wDAAwD;IACxD,gDAAa,GAAb,UAAwC,MAAiB;;QACrD,IAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAM,KAAK,GAAa,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC/D,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC;;YAET,KAAyB,IAAA,UAAA,SAAA,KAAK,CAAA,4BAAA,+CAAE;gBAA3B,IAAM,UAAU,kBAAA;gBAChB,MAAc,CAAC,UAAU,CAAC,EAAE,CAAC;aACjC;;;;;;;;;IACL,CAAC;IAED,wDAAwD;IACzC,oCAAW,GAA1B,UAA2D,MAAiB;QACxE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IACL,+BAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,4DAAwB"}
@@ -1,3 +1,2 @@
1
1
  import { IMethodsMetadataCollector } from './IMethodsMetadataCollector';
2
2
  export declare function createHookDecorator(metadata: IMethodsMetadataCollector): MethodDecorator;
3
- //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../lib/features/instanceHook/decorators/decorators.ts"],"names":[],"mappings":";;;AAEA,SAAgB,mBAAmB,CAAC,QAAmC;IACnE,OAAO,UAAC,MAAM,EAAE,WAAW;QACvB,wDAAwD;QACxD,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC;AACN,CAAC;AALD,kDAKC"}
@@ -1,3 +1,2 @@
1
1
  import { IInstanceHook } from './IInstanceHook';
2
2
  export declare const emptyHook: IInstanceHook;
3
- //# sourceMappingURL=emptyHook.d.ts.map
@@ -3,4 +3,3 @@ export interface IInjectMetadataCollector {
3
3
  addMetadata<T>(target: T, parameterIndex: number, injectionFn: InjectFn<any>): void;
4
4
  getInjectionFns<T>(target: T): InjectFn<any>[];
5
5
  }
6
- //# sourceMappingURL=IInjectMetadataCollector.d.ts.map
@@ -1,3 +1,2 @@
1
1
  import { IServiceLocator } from '../../core/IServiceLocator';
2
2
  export declare type InjectFn<T> = (l: IServiceLocator) => T;
3
- //# sourceMappingURL=InjectFn.d.ts.map
@@ -9,4 +9,3 @@ export declare class IocInjector implements IInjector {
9
9
  resolve<T>(value: constructor<T>, ...deps: any[]): T;
10
10
  dispose(): void;
11
11
  }
12
- //# sourceMappingURL=IocInjector.d.ts.map
@@ -3,4 +3,3 @@ import { LocatorBuilder } from '../LocatorBuilder';
3
3
  export declare class IocLocatorBuilder extends LocatorBuilder {
4
4
  constructor(metadataCollector: IInjectMetadataCollector);
5
5
  }
6
- //# sourceMappingURL=IocLocatorBuilder.d.ts.map
@@ -1,10 +1,9 @@
1
1
  import 'reflect-metadata';
2
- import { IInjectMetadataCollector } from '../../features/ioc/IInjectMetadataCollector';
3
- import { InjectFn } from '../../features/ioc/InjectFn';
2
+ import { IInjectMetadataCollector } from '../IInjectMetadataCollector';
3
+ import { InjectFn } from '../InjectFn';
4
4
  export declare class InjectMetadataCollector implements IInjectMetadataCollector {
5
5
  private readonly metadataKey;
6
6
  constructor(metadataKey: string | symbol);
7
7
  addMetadata<T>(target: T, parameterIndex: number, injectionFn: InjectFn<any>): void;
8
8
  getInjectionFns<T>(target: T): InjectFn<any>[];
9
9
  }
10
- //# sourceMappingURL=InjectMetadataCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InjectMetadataCollector.js","sourceRoot":"","sources":["../../../../lib/features/ioc/decorators/InjectMetadataCollector.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAI1B;IACI,iCAA6B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAG,CAAC;IAE7D,wDAAwD;IACxD,6CAAW,GAAX,UAAe,MAAS,EAAE,cAAsB,EAAE,WAA0B;QACxE,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,QAAQ,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,iDAAe,GAAf,UAAmB,MAAS;;QACxB,OAAO,MAAA,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,mCAAI,EAAE,CAAC;IAClE,CAAC;IACL,8BAAC;AAAD,CAAC,AAbD,IAaC;AAbY,0DAAuB"}
@@ -1,9 +1,8 @@
1
- import { InjectFn } from '../../features/ioc/InjectFn';
2
- import { InjectionToken } from '../../core/IServiceLocator';
3
- import { IInjectMetadataCollector } from '../../features/ioc/IInjectMetadataCollector';
1
+ import { InjectFn } from '../InjectFn';
2
+ import { InjectionToken } from '../../../core/IServiceLocator';
3
+ import { IInjectMetadataCollector } from '../IInjectMetadataCollector';
4
4
  export declare type InjectFnDecorator = <T>(injectionFn: InjectFn<T>) => ParameterDecorator;
5
5
  export declare function createInjectFnDecorator(metadata: IInjectMetadataCollector): InjectFnDecorator;
6
6
  declare type InjectDecorator = <T>(token: InjectionToken<T>, ...args: any[]) => ParameterDecorator;
7
7
  export declare function createInjectDecorator(metadata: IInjectMetadataCollector): InjectDecorator;
8
8
  export {};
9
- //# sourceMappingURL=decorators.d.ts.map