@elsikora/cladi 2.0.2-dev.1 → 2.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (644) hide show
  1. package/README.md +598 -211
  2. package/dist/cjs/application/utility/safe-deep-clone.utility.d.ts.map +1 -1
  3. package/dist/cjs/application/utility/safe-deep-clone.utility.js +104 -10
  4. package/dist/cjs/application/utility/safe-deep-clone.utility.js.map +1 -1
  5. package/dist/cjs/domain/enum/captive-dependency-policy.enum.d.ts +6 -0
  6. package/dist/cjs/domain/enum/captive-dependency-policy.enum.d.ts.map +1 -0
  7. package/dist/cjs/domain/enum/captive-dependency-policy.enum.js +9 -0
  8. package/dist/cjs/domain/enum/captive-dependency-policy.enum.js.map +1 -0
  9. package/dist/cjs/domain/enum/dependency-lifecycle.enum.d.ts +6 -0
  10. package/dist/cjs/domain/enum/dependency-lifecycle.enum.d.ts.map +1 -0
  11. package/dist/cjs/domain/enum/dependency-lifecycle.enum.js +9 -0
  12. package/dist/cjs/domain/enum/dependency-lifecycle.enum.js.map +1 -0
  13. package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.d.ts +6 -0
  14. package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.d.ts.map +1 -0
  15. package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.js +9 -0
  16. package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.js.map +1 -0
  17. package/dist/cjs/domain/enum/index.d.ts +4 -0
  18. package/dist/cjs/domain/enum/index.d.ts.map +1 -1
  19. package/dist/cjs/domain/enum/logger-log-level.enum.js.map +1 -1
  20. package/dist/cjs/domain/enum/provider-type.enum.d.ts +8 -0
  21. package/dist/cjs/domain/enum/provider-type.enum.d.ts.map +1 -0
  22. package/dist/cjs/domain/enum/provider-type.enum.js +11 -0
  23. package/dist/cjs/domain/enum/provider-type.enum.js.map +1 -0
  24. package/dist/cjs/domain/index.d.ts +1 -0
  25. package/dist/cjs/domain/index.d.ts.map +1 -1
  26. package/dist/cjs/domain/interface/di/alias-provider.interface.d.ts +6 -0
  27. package/dist/cjs/domain/interface/di/alias-provider.interface.d.ts.map +1 -0
  28. package/dist/cjs/domain/interface/di/class-provider.interface.d.ts +9 -0
  29. package/dist/cjs/domain/interface/di/class-provider.interface.d.ts.map +1 -0
  30. package/dist/cjs/domain/interface/di/container-snapshot.interface.d.ts +19 -0
  31. package/dist/cjs/domain/interface/di/container-snapshot.interface.d.ts.map +1 -0
  32. package/dist/cjs/domain/interface/di/dependency-graph.interface.d.ts +19 -0
  33. package/dist/cjs/domain/interface/di/dependency-graph.interface.d.ts.map +1 -0
  34. package/dist/cjs/domain/interface/di/factory-provider.interface.d.ts +9 -0
  35. package/dist/cjs/domain/interface/di/factory-provider.interface.d.ts.map +1 -0
  36. package/dist/cjs/domain/interface/di/index.d.ts +15 -0
  37. package/dist/cjs/domain/interface/di/index.d.ts.map +1 -0
  38. package/dist/cjs/domain/interface/di/lazy-provider.interface.d.ts +6 -0
  39. package/dist/cjs/domain/interface/di/lazy-provider.interface.d.ts.map +1 -0
  40. package/dist/cjs/domain/interface/di/module.interface.d.ts +8 -0
  41. package/dist/cjs/domain/interface/di/module.interface.d.ts.map +1 -0
  42. package/dist/cjs/domain/interface/di/provider-base.interface.d.ts +11 -0
  43. package/dist/cjs/domain/interface/di/provider-base.interface.d.ts.map +1 -0
  44. package/dist/cjs/domain/interface/di/resolution-explanation.interface.d.ts +14 -0
  45. package/dist/cjs/domain/interface/di/resolution-explanation.interface.d.ts.map +1 -0
  46. package/dist/cjs/domain/interface/di/resolve-interceptor.interface.d.ts +26 -0
  47. package/dist/cjs/domain/interface/di/resolve-interceptor.interface.d.ts.map +1 -0
  48. package/dist/cjs/domain/interface/di/resolver.interface.d.ts +10 -0
  49. package/dist/cjs/domain/interface/di/resolver.interface.d.ts.map +1 -0
  50. package/dist/cjs/domain/interface/di/scope-create-options.interface.d.ts +9 -0
  51. package/dist/cjs/domain/interface/di/scope-create-options.interface.d.ts.map +1 -0
  52. package/dist/cjs/domain/interface/di/scope.interface.d.ts +23 -0
  53. package/dist/cjs/domain/interface/di/scope.interface.d.ts.map +1 -0
  54. package/dist/cjs/domain/interface/di/value-provider.interface.d.ts +5 -0
  55. package/dist/cjs/domain/interface/di/value-provider.interface.d.ts.map +1 -0
  56. package/dist/cjs/domain/interface/error.interface.d.ts +6 -2
  57. package/dist/cjs/domain/interface/error.interface.d.ts.map +1 -1
  58. package/dist/cjs/domain/interface/index.d.ts +1 -3
  59. package/dist/cjs/domain/interface/index.d.ts.map +1 -1
  60. package/dist/cjs/domain/interface/logger/index.d.ts +2 -2
  61. package/dist/cjs/domain/interface/logger/index.d.ts.map +1 -1
  62. package/dist/cjs/domain/type/di/constructor.type.d.ts +2 -0
  63. package/dist/cjs/domain/type/di/constructor.type.d.ts.map +1 -0
  64. package/dist/cjs/domain/type/di/di-container.type.d.ts +3 -0
  65. package/dist/cjs/domain/type/di/di-container.type.d.ts.map +1 -0
  66. package/dist/cjs/domain/type/di/index.d.ts +5 -0
  67. package/dist/cjs/domain/type/di/index.d.ts.map +1 -0
  68. package/dist/cjs/domain/type/di/provider.type.d.ts +7 -0
  69. package/dist/cjs/domain/type/di/provider.type.d.ts.map +1 -0
  70. package/dist/cjs/domain/type/di/token.type.d.ts +4 -0
  71. package/dist/cjs/domain/type/di/token.type.d.ts.map +1 -0
  72. package/dist/cjs/domain/type/index.d.ts +2 -0
  73. package/dist/cjs/domain/type/index.d.ts.map +1 -0
  74. package/dist/cjs/index.d.ts +1 -0
  75. package/dist/cjs/index.d.ts.map +1 -1
  76. package/dist/cjs/index.js +60 -12
  77. package/dist/cjs/index.js.map +1 -1
  78. package/dist/cjs/infrastructure/class/base/error.class.d.ts +7 -4
  79. package/dist/cjs/infrastructure/class/base/error.class.d.ts.map +1 -1
  80. package/dist/cjs/infrastructure/class/base/error.class.js +13 -3
  81. package/dist/cjs/infrastructure/class/base/error.class.js.map +1 -1
  82. package/dist/cjs/infrastructure/class/base/index.d.ts +0 -3
  83. package/dist/cjs/infrastructure/class/base/index.d.ts.map +1 -1
  84. package/dist/cjs/infrastructure/class/di/cache/coordinator.class.d.ts +14 -0
  85. package/dist/cjs/infrastructure/class/di/cache/coordinator.class.d.ts.map +1 -0
  86. package/dist/cjs/infrastructure/class/di/cache/coordinator.class.js +126 -0
  87. package/dist/cjs/infrastructure/class/di/cache/coordinator.class.js.map +1 -0
  88. package/dist/cjs/infrastructure/class/di/captive/coordinator.class.d.ts +17 -0
  89. package/dist/cjs/infrastructure/class/di/captive/coordinator.class.d.ts.map +1 -0
  90. package/dist/cjs/infrastructure/class/di/captive/coordinator.class.js +62 -0
  91. package/dist/cjs/infrastructure/class/di/captive/coordinator.class.js.map +1 -0
  92. package/dist/cjs/infrastructure/class/di/container.class.d.ts +75 -0
  93. package/dist/cjs/infrastructure/class/di/container.class.d.ts.map +1 -0
  94. package/dist/cjs/infrastructure/class/di/container.class.js +632 -0
  95. package/dist/cjs/infrastructure/class/di/container.class.js.map +1 -0
  96. package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.d.ts +34 -0
  97. package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.d.ts.map +1 -0
  98. package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.js +93 -0
  99. package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.js.map +1 -0
  100. package/dist/cjs/infrastructure/class/di/disposal/manager.class.d.ts +28 -0
  101. package/dist/cjs/infrastructure/class/di/disposal/manager.class.d.ts.map +1 -0
  102. package/dist/cjs/infrastructure/class/di/disposal/manager.class.js +104 -0
  103. package/dist/cjs/infrastructure/class/di/disposal/manager.class.js.map +1 -0
  104. package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.d.ts +41 -0
  105. package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.d.ts.map +1 -0
  106. package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.js +140 -0
  107. package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.js.map +1 -0
  108. package/dist/cjs/infrastructure/class/di/engine/resolution.class.d.ts +38 -0
  109. package/dist/cjs/infrastructure/class/di/engine/resolution.class.d.ts.map +1 -0
  110. package/dist/cjs/infrastructure/class/di/engine/resolution.class.js +153 -0
  111. package/dist/cjs/infrastructure/class/di/engine/resolution.class.js.map +1 -0
  112. package/dist/cjs/infrastructure/class/di/graph/coordinator.class.d.ts +42 -0
  113. package/dist/cjs/infrastructure/class/di/graph/coordinator.class.d.ts.map +1 -0
  114. package/dist/cjs/infrastructure/class/di/graph/coordinator.class.js +121 -0
  115. package/dist/cjs/infrastructure/class/di/graph/coordinator.class.js.map +1 -0
  116. package/dist/cjs/infrastructure/class/di/index.d.ts +3 -0
  117. package/dist/cjs/infrastructure/class/di/index.d.ts.map +1 -0
  118. package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.d.ts +17 -0
  119. package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.d.ts.map +1 -0
  120. package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.js +91 -0
  121. package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.js.map +1 -0
  122. package/dist/cjs/infrastructure/class/di/interface/index.d.ts +3 -0
  123. package/dist/cjs/infrastructure/class/di/interface/index.d.ts.map +1 -0
  124. package/dist/cjs/infrastructure/class/di/interface/internal-container-options.interface.d.ts +7 -0
  125. package/dist/cjs/infrastructure/class/di/interface/internal-container-options.interface.d.ts.map +1 -0
  126. package/dist/cjs/infrastructure/class/di/interface/provider/index.d.ts +3 -0
  127. package/dist/cjs/infrastructure/class/di/interface/provider/index.d.ts.map +1 -0
  128. package/dist/cjs/infrastructure/class/di/interface/provider/lookup.interface.d.ts +8 -0
  129. package/dist/cjs/infrastructure/class/di/interface/provider/lookup.interface.d.ts.map +1 -0
  130. package/dist/cjs/infrastructure/class/di/interface/provider/registration.interface.d.ts +11 -0
  131. package/dist/cjs/infrastructure/class/di/interface/provider/registration.interface.d.ts.map +1 -0
  132. package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.d.ts +10 -0
  133. package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.d.ts.map +1 -0
  134. package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.js +78 -0
  135. package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.js.map +1 -0
  136. package/dist/cjs/infrastructure/class/di/registration/coordinator.class.d.ts +41 -0
  137. package/dist/cjs/infrastructure/class/di/registration/coordinator.class.d.ts.map +1 -0
  138. package/dist/cjs/infrastructure/class/di/registration/coordinator.class.js +251 -0
  139. package/dist/cjs/infrastructure/class/di/registration/coordinator.class.js.map +1 -0
  140. package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.d.ts +62 -0
  141. package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.d.ts.map +1 -0
  142. package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.js +599 -0
  143. package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.js.map +1 -0
  144. package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.js +4 -0
  145. package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.js.map +1 -1
  146. package/dist/cjs/infrastructure/factory/core.factory.d.ts +11 -31
  147. package/dist/cjs/infrastructure/factory/core.factory.d.ts.map +1 -1
  148. package/dist/cjs/infrastructure/factory/core.factory.js +13 -47
  149. package/dist/cjs/infrastructure/factory/core.factory.js.map +1 -1
  150. package/dist/cjs/infrastructure/index.d.ts +1 -0
  151. package/dist/cjs/infrastructure/index.d.ts.map +1 -1
  152. package/dist/cjs/infrastructure/interface/base/error-options.interface.d.ts +1 -1
  153. package/dist/cjs/infrastructure/interface/base/index.d.ts +0 -3
  154. package/dist/cjs/infrastructure/interface/base/index.d.ts.map +1 -1
  155. package/dist/cjs/infrastructure/interface/console-logger-options.interface.d.ts +1 -1
  156. package/dist/cjs/infrastructure/interface/core-factory-options.interface.d.ts +1 -1
  157. package/dist/cjs/infrastructure/interface/di-container-options.interface.d.ts +12 -0
  158. package/dist/cjs/infrastructure/interface/di-container-options.interface.d.ts.map +1 -0
  159. package/dist/cjs/infrastructure/interface/index.d.ts +1 -0
  160. package/dist/cjs/infrastructure/interface/index.d.ts.map +1 -1
  161. package/dist/cjs/infrastructure/service/console-logger.service.d.ts.map +1 -1
  162. package/dist/cjs/infrastructure/service/console-logger.service.js +10 -6
  163. package/dist/cjs/infrastructure/service/console-logger.service.js.map +1 -1
  164. package/dist/cjs/infrastructure/utility/to-error.utility.d.ts +7 -0
  165. package/dist/cjs/infrastructure/utility/to-error.utility.d.ts.map +1 -0
  166. package/dist/cjs/infrastructure/utility/to-error.utility.js +22 -0
  167. package/dist/cjs/infrastructure/utility/to-error.utility.js.map +1 -0
  168. package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts +2 -0
  169. package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts.map +1 -0
  170. package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.js +6 -0
  171. package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.js.map +1 -0
  172. package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.d.ts +2 -0
  173. package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.d.ts.map +1 -0
  174. package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.js +6 -0
  175. package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.js.map +1 -0
  176. package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.d.ts +6 -0
  177. package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.d.ts.map +1 -0
  178. package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.js +41 -0
  179. package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.js.map +1 -0
  180. package/dist/cjs/presentation/ergonomics/decorator/index.d.ts +7 -0
  181. package/dist/cjs/presentation/ergonomics/decorator/index.d.ts.map +1 -0
  182. package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.d.ts +8 -0
  183. package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.d.ts.map +1 -0
  184. package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.js +35 -0
  185. package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.js.map +1 -0
  186. package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.d.ts +8 -0
  187. package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.d.ts.map +1 -0
  188. package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.js +89 -0
  189. package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.js.map +1 -0
  190. package/dist/cjs/presentation/ergonomics/decorator/module.decorator.d.ts +8 -0
  191. package/dist/cjs/presentation/ergonomics/decorator/module.decorator.d.ts.map +1 -0
  192. package/dist/cjs/presentation/ergonomics/decorator/module.decorator.js +143 -0
  193. package/dist/cjs/presentation/ergonomics/decorator/module.decorator.js.map +1 -0
  194. package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.d.ts +6 -0
  195. package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.d.ts.map +1 -0
  196. package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.js +41 -0
  197. package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.js.map +1 -0
  198. package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.d.ts +6 -0
  199. package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.d.ts.map +1 -0
  200. package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.js +41 -0
  201. package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.js.map +1 -0
  202. package/dist/cjs/presentation/ergonomics/index.d.ts +4 -0
  203. package/dist/cjs/presentation/ergonomics/index.d.ts.map +1 -0
  204. package/dist/cjs/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts +12 -0
  205. package/dist/cjs/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts.map +1 -0
  206. package/dist/cjs/presentation/ergonomics/interface/create/index.d.ts +3 -0
  207. package/dist/cjs/presentation/ergonomics/interface/create/index.d.ts.map +1 -0
  208. package/dist/cjs/presentation/ergonomics/interface/create/module-options.interface.d.ts +9 -0
  209. package/dist/cjs/presentation/ergonomics/interface/create/module-options.interface.d.ts.map +1 -0
  210. package/dist/cjs/presentation/ergonomics/interface/decorator/index.d.ts +2 -0
  211. package/dist/cjs/presentation/ergonomics/interface/decorator/index.d.ts.map +1 -0
  212. package/dist/cjs/presentation/ergonomics/interface/decorator/module-options.interface.d.ts +9 -0
  213. package/dist/cjs/presentation/ergonomics/interface/decorator/module-options.interface.d.ts.map +1 -0
  214. package/dist/cjs/presentation/ergonomics/interface/index.d.ts +4 -0
  215. package/dist/cjs/presentation/ergonomics/interface/index.d.ts.map +1 -0
  216. package/dist/cjs/presentation/ergonomics/interface/injectable/index.d.ts +3 -0
  217. package/dist/cjs/presentation/ergonomics/interface/injectable/index.d.ts.map +1 -0
  218. package/dist/cjs/presentation/ergonomics/interface/injectable/metadata.interface.d.ts +12 -0
  219. package/dist/cjs/presentation/ergonomics/interface/injectable/metadata.interface.d.ts.map +1 -0
  220. package/dist/cjs/presentation/ergonomics/interface/injectable/options.interface.d.ts +4 -0
  221. package/dist/cjs/presentation/ergonomics/interface/injectable/options.interface.d.ts.map +1 -0
  222. package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts +9 -0
  223. package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts.map +1 -0
  224. package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.js +63 -0
  225. package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.js.map +1 -0
  226. package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.d.ts +10 -0
  227. package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.d.ts.map +1 -0
  228. package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.js +188 -0
  229. package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.js.map +1 -0
  230. package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts +14 -0
  231. package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts.map +1 -0
  232. package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.js +110 -0
  233. package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.js.map +1 -0
  234. package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.d.ts +15 -0
  235. package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.d.ts.map +1 -0
  236. package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.js +34 -0
  237. package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.js.map +1 -0
  238. package/dist/cjs/presentation/ergonomics/utility/create/index.d.ts +5 -0
  239. package/dist/cjs/presentation/ergonomics/utility/create/index.d.ts.map +1 -0
  240. package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts +9 -0
  241. package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts.map +1 -0
  242. package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.js +135 -0
  243. package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.js.map +1 -0
  244. package/dist/cjs/presentation/ergonomics/utility/create/module.utility.d.ts +9 -0
  245. package/dist/cjs/presentation/ergonomics/utility/create/module.utility.d.ts.map +1 -0
  246. package/dist/cjs/presentation/ergonomics/utility/create/module.utility.js +19 -0
  247. package/dist/cjs/presentation/ergonomics/utility/create/module.utility.js.map +1 -0
  248. package/dist/cjs/presentation/ergonomics/utility/index.d.ts +6 -0
  249. package/dist/cjs/presentation/ergonomics/utility/index.d.ts.map +1 -0
  250. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts +9 -0
  251. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts.map +1 -0
  252. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.js +20 -0
  253. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.js.map +1 -0
  254. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/index.d.ts +3 -0
  255. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/index.d.ts.map +1 -0
  256. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts +9 -0
  257. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts.map +1 -0
  258. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.js +15 -0
  259. package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.js.map +1 -0
  260. package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.d.ts +9 -0
  261. package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.d.ts.map +1 -0
  262. package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.js +20 -0
  263. package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.js.map +1 -0
  264. package/dist/cjs/presentation/ergonomics/utility/module-metadata/index.d.ts +3 -0
  265. package/dist/cjs/presentation/ergonomics/utility/module-metadata/index.d.ts.map +1 -0
  266. package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.d.ts +9 -0
  267. package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.d.ts.map +1 -0
  268. package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.js +15 -0
  269. package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.js.map +1 -0
  270. package/dist/cjs/presentation/utility/create/di-container.utility.d.ts +9 -0
  271. package/dist/cjs/presentation/utility/create/di-container.utility.d.ts.map +1 -0
  272. package/dist/cjs/presentation/utility/create/di-container.utility.js +15 -0
  273. package/dist/cjs/presentation/utility/create/di-container.utility.js.map +1 -0
  274. package/dist/cjs/presentation/utility/create/index.d.ts +3 -3
  275. package/dist/cjs/presentation/utility/create/index.d.ts.map +1 -1
  276. package/dist/cjs/presentation/utility/create/lazy-provider.utility.d.ts +24 -0
  277. package/dist/cjs/presentation/utility/create/lazy-provider.utility.d.ts.map +1 -0
  278. package/dist/cjs/presentation/utility/create/lazy-provider.utility.js +29 -0
  279. package/dist/cjs/presentation/utility/create/lazy-provider.utility.js.map +1 -0
  280. package/dist/cjs/presentation/utility/create/logger.utility.d.ts +1 -1
  281. package/dist/cjs/presentation/utility/create/logger.utility.js +1 -1
  282. package/dist/cjs/presentation/utility/create/logger.utility.js.map +1 -1
  283. package/dist/cjs/presentation/utility/create/token.utility.d.ts +9 -0
  284. package/dist/cjs/presentation/utility/create/token.utility.d.ts.map +1 -0
  285. package/dist/cjs/presentation/utility/create/token.utility.js +14 -0
  286. package/dist/cjs/presentation/utility/create/token.utility.js.map +1 -0
  287. package/dist/esm/application/utility/safe-deep-clone.utility.d.ts.map +1 -1
  288. package/dist/esm/application/utility/safe-deep-clone.utility.js +104 -10
  289. package/dist/esm/application/utility/safe-deep-clone.utility.js.map +1 -1
  290. package/dist/esm/domain/enum/captive-dependency-policy.enum.d.ts +6 -0
  291. package/dist/esm/domain/enum/captive-dependency-policy.enum.d.ts.map +1 -0
  292. package/dist/esm/domain/enum/captive-dependency-policy.enum.js +9 -0
  293. package/dist/esm/domain/enum/captive-dependency-policy.enum.js.map +1 -0
  294. package/dist/esm/domain/enum/dependency-lifecycle.enum.d.ts +6 -0
  295. package/dist/esm/domain/enum/dependency-lifecycle.enum.d.ts.map +1 -0
  296. package/dist/esm/domain/enum/dependency-lifecycle.enum.js +9 -0
  297. package/dist/esm/domain/enum/dependency-lifecycle.enum.js.map +1 -0
  298. package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.d.ts +6 -0
  299. package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.d.ts.map +1 -0
  300. package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.js +9 -0
  301. package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.js.map +1 -0
  302. package/dist/esm/domain/enum/index.d.ts +4 -0
  303. package/dist/esm/domain/enum/index.d.ts.map +1 -1
  304. package/dist/esm/domain/enum/logger-log-level.enum.js.map +1 -1
  305. package/dist/esm/domain/enum/provider-type.enum.d.ts +8 -0
  306. package/dist/esm/domain/enum/provider-type.enum.d.ts.map +1 -0
  307. package/dist/esm/domain/enum/provider-type.enum.js +11 -0
  308. package/dist/esm/domain/enum/provider-type.enum.js.map +1 -0
  309. package/dist/esm/domain/index.d.ts +1 -0
  310. package/dist/esm/domain/index.d.ts.map +1 -1
  311. package/dist/esm/domain/interface/di/alias-provider.interface.d.ts +6 -0
  312. package/dist/esm/domain/interface/di/alias-provider.interface.d.ts.map +1 -0
  313. package/dist/esm/domain/interface/di/class-provider.interface.d.ts +9 -0
  314. package/dist/esm/domain/interface/di/class-provider.interface.d.ts.map +1 -0
  315. package/dist/esm/domain/interface/di/container-snapshot.interface.d.ts +19 -0
  316. package/dist/esm/domain/interface/di/container-snapshot.interface.d.ts.map +1 -0
  317. package/dist/esm/domain/interface/di/dependency-graph.interface.d.ts +19 -0
  318. package/dist/esm/domain/interface/di/dependency-graph.interface.d.ts.map +1 -0
  319. package/dist/esm/domain/interface/di/factory-provider.interface.d.ts +9 -0
  320. package/dist/esm/domain/interface/di/factory-provider.interface.d.ts.map +1 -0
  321. package/dist/esm/domain/interface/di/index.d.ts +15 -0
  322. package/dist/esm/domain/interface/di/index.d.ts.map +1 -0
  323. package/dist/esm/domain/interface/di/lazy-provider.interface.d.ts +6 -0
  324. package/dist/esm/domain/interface/di/lazy-provider.interface.d.ts.map +1 -0
  325. package/dist/esm/domain/interface/di/module.interface.d.ts +8 -0
  326. package/dist/esm/domain/interface/di/module.interface.d.ts.map +1 -0
  327. package/dist/esm/domain/interface/di/provider-base.interface.d.ts +11 -0
  328. package/dist/esm/domain/interface/di/provider-base.interface.d.ts.map +1 -0
  329. package/dist/esm/domain/interface/di/resolution-explanation.interface.d.ts +14 -0
  330. package/dist/esm/domain/interface/di/resolution-explanation.interface.d.ts.map +1 -0
  331. package/dist/esm/domain/interface/di/resolve-interceptor.interface.d.ts +26 -0
  332. package/dist/esm/domain/interface/di/resolve-interceptor.interface.d.ts.map +1 -0
  333. package/dist/esm/domain/interface/di/resolver.interface.d.ts +10 -0
  334. package/dist/esm/domain/interface/di/resolver.interface.d.ts.map +1 -0
  335. package/dist/esm/domain/interface/di/scope-create-options.interface.d.ts +9 -0
  336. package/dist/esm/domain/interface/di/scope-create-options.interface.d.ts.map +1 -0
  337. package/dist/esm/domain/interface/di/scope.interface.d.ts +23 -0
  338. package/dist/esm/domain/interface/di/scope.interface.d.ts.map +1 -0
  339. package/dist/esm/domain/interface/di/value-provider.interface.d.ts +5 -0
  340. package/dist/esm/domain/interface/di/value-provider.interface.d.ts.map +1 -0
  341. package/dist/esm/domain/interface/error.interface.d.ts +6 -2
  342. package/dist/esm/domain/interface/error.interface.d.ts.map +1 -1
  343. package/dist/esm/domain/interface/index.d.ts +1 -3
  344. package/dist/esm/domain/interface/index.d.ts.map +1 -1
  345. package/dist/esm/domain/interface/logger/index.d.ts +2 -2
  346. package/dist/esm/domain/interface/logger/index.d.ts.map +1 -1
  347. package/dist/esm/domain/type/di/constructor.type.d.ts +2 -0
  348. package/dist/esm/domain/type/di/constructor.type.d.ts.map +1 -0
  349. package/dist/esm/domain/type/di/di-container.type.d.ts +3 -0
  350. package/dist/esm/domain/type/di/di-container.type.d.ts.map +1 -0
  351. package/dist/esm/domain/type/di/index.d.ts +5 -0
  352. package/dist/esm/domain/type/di/index.d.ts.map +1 -0
  353. package/dist/esm/domain/type/di/provider.type.d.ts +7 -0
  354. package/dist/esm/domain/type/di/provider.type.d.ts.map +1 -0
  355. package/dist/esm/domain/type/di/token.type.d.ts +4 -0
  356. package/dist/esm/domain/type/di/token.type.d.ts.map +1 -0
  357. package/dist/esm/domain/type/index.d.ts +2 -0
  358. package/dist/esm/domain/type/index.d.ts.map +1 -0
  359. package/dist/esm/index.d.ts +1 -0
  360. package/dist/esm/index.d.ts.map +1 -1
  361. package/dist/esm/index.js +24 -6
  362. package/dist/esm/index.js.map +1 -1
  363. package/dist/esm/infrastructure/class/base/error.class.d.ts +7 -4
  364. package/dist/esm/infrastructure/class/base/error.class.d.ts.map +1 -1
  365. package/dist/esm/infrastructure/class/base/error.class.js +13 -3
  366. package/dist/esm/infrastructure/class/base/error.class.js.map +1 -1
  367. package/dist/esm/infrastructure/class/base/index.d.ts +0 -3
  368. package/dist/esm/infrastructure/class/base/index.d.ts.map +1 -1
  369. package/dist/esm/infrastructure/class/di/cache/coordinator.class.d.ts +14 -0
  370. package/dist/esm/infrastructure/class/di/cache/coordinator.class.d.ts.map +1 -0
  371. package/dist/esm/infrastructure/class/di/cache/coordinator.class.js +124 -0
  372. package/dist/esm/infrastructure/class/di/cache/coordinator.class.js.map +1 -0
  373. package/dist/esm/infrastructure/class/di/captive/coordinator.class.d.ts +17 -0
  374. package/dist/esm/infrastructure/class/di/captive/coordinator.class.d.ts.map +1 -0
  375. package/dist/esm/infrastructure/class/di/captive/coordinator.class.js +60 -0
  376. package/dist/esm/infrastructure/class/di/captive/coordinator.class.js.map +1 -0
  377. package/dist/esm/infrastructure/class/di/container.class.d.ts +75 -0
  378. package/dist/esm/infrastructure/class/di/container.class.d.ts.map +1 -0
  379. package/dist/esm/infrastructure/class/di/container.class.js +630 -0
  380. package/dist/esm/infrastructure/class/di/container.class.js.map +1 -0
  381. package/dist/esm/infrastructure/class/di/disposal/coordinator.class.d.ts +34 -0
  382. package/dist/esm/infrastructure/class/di/disposal/coordinator.class.d.ts.map +1 -0
  383. package/dist/esm/infrastructure/class/di/disposal/coordinator.class.js +91 -0
  384. package/dist/esm/infrastructure/class/di/disposal/coordinator.class.js.map +1 -0
  385. package/dist/esm/infrastructure/class/di/disposal/manager.class.d.ts +28 -0
  386. package/dist/esm/infrastructure/class/di/disposal/manager.class.d.ts.map +1 -0
  387. package/dist/esm/infrastructure/class/di/disposal/manager.class.js +102 -0
  388. package/dist/esm/infrastructure/class/di/disposal/manager.class.js.map +1 -0
  389. package/dist/esm/infrastructure/class/di/disposer/coordinator.class.d.ts +41 -0
  390. package/dist/esm/infrastructure/class/di/disposer/coordinator.class.d.ts.map +1 -0
  391. package/dist/esm/infrastructure/class/di/disposer/coordinator.class.js +138 -0
  392. package/dist/esm/infrastructure/class/di/disposer/coordinator.class.js.map +1 -0
  393. package/dist/esm/infrastructure/class/di/engine/resolution.class.d.ts +38 -0
  394. package/dist/esm/infrastructure/class/di/engine/resolution.class.d.ts.map +1 -0
  395. package/dist/esm/infrastructure/class/di/engine/resolution.class.js +151 -0
  396. package/dist/esm/infrastructure/class/di/engine/resolution.class.js.map +1 -0
  397. package/dist/esm/infrastructure/class/di/graph/coordinator.class.d.ts +42 -0
  398. package/dist/esm/infrastructure/class/di/graph/coordinator.class.d.ts.map +1 -0
  399. package/dist/esm/infrastructure/class/di/graph/coordinator.class.js +119 -0
  400. package/dist/esm/infrastructure/class/di/graph/coordinator.class.js.map +1 -0
  401. package/dist/esm/infrastructure/class/di/index.d.ts +3 -0
  402. package/dist/esm/infrastructure/class/di/index.d.ts.map +1 -0
  403. package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.d.ts +17 -0
  404. package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.d.ts.map +1 -0
  405. package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.js +89 -0
  406. package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.js.map +1 -0
  407. package/dist/esm/infrastructure/class/di/interface/index.d.ts +3 -0
  408. package/dist/esm/infrastructure/class/di/interface/index.d.ts.map +1 -0
  409. package/dist/esm/infrastructure/class/di/interface/internal-container-options.interface.d.ts +7 -0
  410. package/dist/esm/infrastructure/class/di/interface/internal-container-options.interface.d.ts.map +1 -0
  411. package/dist/esm/infrastructure/class/di/interface/provider/index.d.ts +3 -0
  412. package/dist/esm/infrastructure/class/di/interface/provider/index.d.ts.map +1 -0
  413. package/dist/esm/infrastructure/class/di/interface/provider/lookup.interface.d.ts +8 -0
  414. package/dist/esm/infrastructure/class/di/interface/provider/lookup.interface.d.ts.map +1 -0
  415. package/dist/esm/infrastructure/class/di/interface/provider/registration.interface.d.ts +11 -0
  416. package/dist/esm/infrastructure/class/di/interface/provider/registration.interface.d.ts.map +1 -0
  417. package/dist/esm/infrastructure/class/di/lookup/coordinator.class.d.ts +10 -0
  418. package/dist/esm/infrastructure/class/di/lookup/coordinator.class.d.ts.map +1 -0
  419. package/dist/esm/infrastructure/class/di/lookup/coordinator.class.js +76 -0
  420. package/dist/esm/infrastructure/class/di/lookup/coordinator.class.js.map +1 -0
  421. package/dist/esm/infrastructure/class/di/registration/coordinator.class.d.ts +41 -0
  422. package/dist/esm/infrastructure/class/di/registration/coordinator.class.d.ts.map +1 -0
  423. package/dist/esm/infrastructure/class/di/registration/coordinator.class.js +249 -0
  424. package/dist/esm/infrastructure/class/di/registration/coordinator.class.js.map +1 -0
  425. package/dist/esm/infrastructure/class/di/resolution/coordinator.class.d.ts +62 -0
  426. package/dist/esm/infrastructure/class/di/resolution/coordinator.class.d.ts.map +1 -0
  427. package/dist/esm/infrastructure/class/di/resolution/coordinator.class.js +597 -0
  428. package/dist/esm/infrastructure/class/di/resolution/coordinator.class.js.map +1 -0
  429. package/dist/esm/infrastructure/constant/console-logger-default-options.constant.js +4 -0
  430. package/dist/esm/infrastructure/constant/console-logger-default-options.constant.js.map +1 -1
  431. package/dist/esm/infrastructure/factory/core.factory.d.ts +11 -31
  432. package/dist/esm/infrastructure/factory/core.factory.d.ts.map +1 -1
  433. package/dist/esm/infrastructure/factory/core.factory.js +13 -47
  434. package/dist/esm/infrastructure/factory/core.factory.js.map +1 -1
  435. package/dist/esm/infrastructure/index.d.ts +1 -0
  436. package/dist/esm/infrastructure/index.d.ts.map +1 -1
  437. package/dist/esm/infrastructure/interface/base/error-options.interface.d.ts +1 -1
  438. package/dist/esm/infrastructure/interface/base/index.d.ts +0 -3
  439. package/dist/esm/infrastructure/interface/base/index.d.ts.map +1 -1
  440. package/dist/esm/infrastructure/interface/console-logger-options.interface.d.ts +1 -1
  441. package/dist/esm/infrastructure/interface/core-factory-options.interface.d.ts +1 -1
  442. package/dist/esm/infrastructure/interface/di-container-options.interface.d.ts +12 -0
  443. package/dist/esm/infrastructure/interface/di-container-options.interface.d.ts.map +1 -0
  444. package/dist/esm/infrastructure/interface/index.d.ts +1 -0
  445. package/dist/esm/infrastructure/interface/index.d.ts.map +1 -1
  446. package/dist/esm/infrastructure/service/console-logger.service.d.ts.map +1 -1
  447. package/dist/esm/infrastructure/service/console-logger.service.js +10 -6
  448. package/dist/esm/infrastructure/service/console-logger.service.js.map +1 -1
  449. package/dist/esm/infrastructure/utility/to-error.utility.d.ts +7 -0
  450. package/dist/esm/infrastructure/utility/to-error.utility.d.ts.map +1 -0
  451. package/dist/esm/infrastructure/utility/to-error.utility.js +20 -0
  452. package/dist/esm/infrastructure/utility/to-error.utility.js.map +1 -0
  453. package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts +2 -0
  454. package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts.map +1 -0
  455. package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.js +4 -0
  456. package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.js.map +1 -0
  457. package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.d.ts +2 -0
  458. package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.d.ts.map +1 -0
  459. package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.js +4 -0
  460. package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.js.map +1 -0
  461. package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.d.ts +6 -0
  462. package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.d.ts.map +1 -0
  463. package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.js +39 -0
  464. package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.js.map +1 -0
  465. package/dist/esm/presentation/ergonomics/decorator/index.d.ts +7 -0
  466. package/dist/esm/presentation/ergonomics/decorator/index.d.ts.map +1 -0
  467. package/dist/esm/presentation/ergonomics/decorator/inject.decorator.d.ts +8 -0
  468. package/dist/esm/presentation/ergonomics/decorator/inject.decorator.d.ts.map +1 -0
  469. package/dist/esm/presentation/ergonomics/decorator/inject.decorator.js +33 -0
  470. package/dist/esm/presentation/ergonomics/decorator/inject.decorator.js.map +1 -0
  471. package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.d.ts +8 -0
  472. package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.d.ts.map +1 -0
  473. package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.js +87 -0
  474. package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.js.map +1 -0
  475. package/dist/esm/presentation/ergonomics/decorator/module.decorator.d.ts +8 -0
  476. package/dist/esm/presentation/ergonomics/decorator/module.decorator.d.ts.map +1 -0
  477. package/dist/esm/presentation/ergonomics/decorator/module.decorator.js +141 -0
  478. package/dist/esm/presentation/ergonomics/decorator/module.decorator.js.map +1 -0
  479. package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.d.ts +6 -0
  480. package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.d.ts.map +1 -0
  481. package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.js +39 -0
  482. package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.js.map +1 -0
  483. package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.d.ts +6 -0
  484. package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.d.ts.map +1 -0
  485. package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.js +39 -0
  486. package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.js.map +1 -0
  487. package/dist/esm/presentation/ergonomics/index.d.ts +4 -0
  488. package/dist/esm/presentation/ergonomics/index.d.ts.map +1 -0
  489. package/dist/esm/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts +12 -0
  490. package/dist/esm/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts.map +1 -0
  491. package/dist/esm/presentation/ergonomics/interface/create/index.d.ts +3 -0
  492. package/dist/esm/presentation/ergonomics/interface/create/index.d.ts.map +1 -0
  493. package/dist/esm/presentation/ergonomics/interface/create/module-options.interface.d.ts +9 -0
  494. package/dist/esm/presentation/ergonomics/interface/create/module-options.interface.d.ts.map +1 -0
  495. package/dist/esm/presentation/ergonomics/interface/decorator/index.d.ts +2 -0
  496. package/dist/esm/presentation/ergonomics/interface/decorator/index.d.ts.map +1 -0
  497. package/dist/esm/presentation/ergonomics/interface/decorator/module-options.interface.d.ts +9 -0
  498. package/dist/esm/presentation/ergonomics/interface/decorator/module-options.interface.d.ts.map +1 -0
  499. package/dist/esm/presentation/ergonomics/interface/index.d.ts +4 -0
  500. package/dist/esm/presentation/ergonomics/interface/index.d.ts.map +1 -0
  501. package/dist/esm/presentation/ergonomics/interface/injectable/index.d.ts +3 -0
  502. package/dist/esm/presentation/ergonomics/interface/injectable/index.d.ts.map +1 -0
  503. package/dist/esm/presentation/ergonomics/interface/injectable/metadata.interface.d.ts +12 -0
  504. package/dist/esm/presentation/ergonomics/interface/injectable/metadata.interface.d.ts.map +1 -0
  505. package/dist/esm/presentation/ergonomics/interface/injectable/options.interface.d.ts +4 -0
  506. package/dist/esm/presentation/ergonomics/interface/injectable/options.interface.d.ts.map +1 -0
  507. package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts +9 -0
  508. package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts.map +1 -0
  509. package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.js +61 -0
  510. package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.js.map +1 -0
  511. package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.d.ts +10 -0
  512. package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.d.ts.map +1 -0
  513. package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.js +186 -0
  514. package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.js.map +1 -0
  515. package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts +14 -0
  516. package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts.map +1 -0
  517. package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.js +108 -0
  518. package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.js.map +1 -0
  519. package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.d.ts +15 -0
  520. package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.d.ts.map +1 -0
  521. package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.js +32 -0
  522. package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.js.map +1 -0
  523. package/dist/esm/presentation/ergonomics/utility/create/index.d.ts +5 -0
  524. package/dist/esm/presentation/ergonomics/utility/create/index.d.ts.map +1 -0
  525. package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts +9 -0
  526. package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts.map +1 -0
  527. package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.js +133 -0
  528. package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.js.map +1 -0
  529. package/dist/esm/presentation/ergonomics/utility/create/module.utility.d.ts +9 -0
  530. package/dist/esm/presentation/ergonomics/utility/create/module.utility.d.ts.map +1 -0
  531. package/dist/esm/presentation/ergonomics/utility/create/module.utility.js +17 -0
  532. package/dist/esm/presentation/ergonomics/utility/create/module.utility.js.map +1 -0
  533. package/dist/esm/presentation/ergonomics/utility/index.d.ts +6 -0
  534. package/dist/esm/presentation/ergonomics/utility/index.d.ts.map +1 -0
  535. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts +9 -0
  536. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts.map +1 -0
  537. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.js +18 -0
  538. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.js.map +1 -0
  539. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/index.d.ts +3 -0
  540. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/index.d.ts.map +1 -0
  541. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts +9 -0
  542. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts.map +1 -0
  543. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.js +13 -0
  544. package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.js.map +1 -0
  545. package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.d.ts +9 -0
  546. package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.d.ts.map +1 -0
  547. package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.js +18 -0
  548. package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.js.map +1 -0
  549. package/dist/esm/presentation/ergonomics/utility/module-metadata/index.d.ts +3 -0
  550. package/dist/esm/presentation/ergonomics/utility/module-metadata/index.d.ts.map +1 -0
  551. package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.d.ts +9 -0
  552. package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.d.ts.map +1 -0
  553. package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.js +13 -0
  554. package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.js.map +1 -0
  555. package/dist/esm/presentation/utility/create/di-container.utility.d.ts +9 -0
  556. package/dist/esm/presentation/utility/create/di-container.utility.d.ts.map +1 -0
  557. package/dist/esm/presentation/utility/create/di-container.utility.js +13 -0
  558. package/dist/esm/presentation/utility/create/di-container.utility.js.map +1 -0
  559. package/dist/esm/presentation/utility/create/index.d.ts +3 -3
  560. package/dist/esm/presentation/utility/create/index.d.ts.map +1 -1
  561. package/dist/esm/presentation/utility/create/lazy-provider.utility.d.ts +24 -0
  562. package/dist/esm/presentation/utility/create/lazy-provider.utility.d.ts.map +1 -0
  563. package/dist/esm/presentation/utility/create/lazy-provider.utility.js +27 -0
  564. package/dist/esm/presentation/utility/create/lazy-provider.utility.js.map +1 -0
  565. package/dist/esm/presentation/utility/create/logger.utility.d.ts +1 -1
  566. package/dist/esm/presentation/utility/create/logger.utility.js +1 -1
  567. package/dist/esm/presentation/utility/create/logger.utility.js.map +1 -1
  568. package/dist/esm/presentation/utility/create/token.utility.d.ts +9 -0
  569. package/dist/esm/presentation/utility/create/token.utility.d.ts.map +1 -0
  570. package/dist/esm/presentation/utility/create/token.utility.js +12 -0
  571. package/dist/esm/presentation/utility/create/token.utility.js.map +1 -0
  572. package/package.json +37 -29
  573. package/dist/cjs/domain/interface/container.interface.d.ts +0 -56
  574. package/dist/cjs/domain/interface/container.interface.d.ts.map +0 -1
  575. package/dist/cjs/domain/interface/factory.interface.d.ts +0 -20
  576. package/dist/cjs/domain/interface/factory.interface.d.ts.map +0 -1
  577. package/dist/cjs/domain/interface/registry.interface.d.ts +0 -55
  578. package/dist/cjs/domain/interface/registry.interface.d.ts.map +0 -1
  579. package/dist/cjs/infrastructure/class/base/container.class.d.ts +0 -68
  580. package/dist/cjs/infrastructure/class/base/container.class.d.ts.map +0 -1
  581. package/dist/cjs/infrastructure/class/base/container.class.js +0 -194
  582. package/dist/cjs/infrastructure/class/base/container.class.js.map +0 -1
  583. package/dist/cjs/infrastructure/class/base/factory.class.d.ts +0 -49
  584. package/dist/cjs/infrastructure/class/base/factory.class.d.ts.map +0 -1
  585. package/dist/cjs/infrastructure/class/base/factory.class.js +0 -88
  586. package/dist/cjs/infrastructure/class/base/factory.class.js.map +0 -1
  587. package/dist/cjs/infrastructure/class/base/registry.class.d.ts +0 -74
  588. package/dist/cjs/infrastructure/class/base/registry.class.d.ts.map +0 -1
  589. package/dist/cjs/infrastructure/class/base/registry.class.js +0 -222
  590. package/dist/cjs/infrastructure/class/base/registry.class.js.map +0 -1
  591. package/dist/cjs/infrastructure/interface/base/container-options.interface.d.ts +0 -13
  592. package/dist/cjs/infrastructure/interface/base/container-options.interface.d.ts.map +0 -1
  593. package/dist/cjs/infrastructure/interface/base/factory-options.interface.d.ts +0 -22
  594. package/dist/cjs/infrastructure/interface/base/factory-options.interface.d.ts.map +0 -1
  595. package/dist/cjs/infrastructure/interface/base/registry-options.interface.d.ts +0 -13
  596. package/dist/cjs/infrastructure/interface/base/registry-options.interface.d.ts.map +0 -1
  597. package/dist/cjs/presentation/utility/create/container.utility.d.ts +0 -10
  598. package/dist/cjs/presentation/utility/create/container.utility.d.ts.map +0 -1
  599. package/dist/cjs/presentation/utility/create/container.utility.js +0 -18
  600. package/dist/cjs/presentation/utility/create/container.utility.js.map +0 -1
  601. package/dist/cjs/presentation/utility/create/factory.utility.d.ts +0 -11
  602. package/dist/cjs/presentation/utility/create/factory.utility.d.ts.map +0 -1
  603. package/dist/cjs/presentation/utility/create/factory.utility.js +0 -19
  604. package/dist/cjs/presentation/utility/create/factory.utility.js.map +0 -1
  605. package/dist/cjs/presentation/utility/create/registry.utility.d.ts +0 -13
  606. package/dist/cjs/presentation/utility/create/registry.utility.d.ts.map +0 -1
  607. package/dist/cjs/presentation/utility/create/registry.utility.js +0 -19
  608. package/dist/cjs/presentation/utility/create/registry.utility.js.map +0 -1
  609. package/dist/esm/domain/interface/container.interface.d.ts +0 -56
  610. package/dist/esm/domain/interface/container.interface.d.ts.map +0 -1
  611. package/dist/esm/domain/interface/factory.interface.d.ts +0 -20
  612. package/dist/esm/domain/interface/factory.interface.d.ts.map +0 -1
  613. package/dist/esm/domain/interface/registry.interface.d.ts +0 -55
  614. package/dist/esm/domain/interface/registry.interface.d.ts.map +0 -1
  615. package/dist/esm/infrastructure/class/base/container.class.d.ts +0 -68
  616. package/dist/esm/infrastructure/class/base/container.class.d.ts.map +0 -1
  617. package/dist/esm/infrastructure/class/base/container.class.js +0 -192
  618. package/dist/esm/infrastructure/class/base/container.class.js.map +0 -1
  619. package/dist/esm/infrastructure/class/base/factory.class.d.ts +0 -49
  620. package/dist/esm/infrastructure/class/base/factory.class.d.ts.map +0 -1
  621. package/dist/esm/infrastructure/class/base/factory.class.js +0 -86
  622. package/dist/esm/infrastructure/class/base/factory.class.js.map +0 -1
  623. package/dist/esm/infrastructure/class/base/registry.class.d.ts +0 -74
  624. package/dist/esm/infrastructure/class/base/registry.class.d.ts.map +0 -1
  625. package/dist/esm/infrastructure/class/base/registry.class.js +0 -220
  626. package/dist/esm/infrastructure/class/base/registry.class.js.map +0 -1
  627. package/dist/esm/infrastructure/interface/base/container-options.interface.d.ts +0 -13
  628. package/dist/esm/infrastructure/interface/base/container-options.interface.d.ts.map +0 -1
  629. package/dist/esm/infrastructure/interface/base/factory-options.interface.d.ts +0 -22
  630. package/dist/esm/infrastructure/interface/base/factory-options.interface.d.ts.map +0 -1
  631. package/dist/esm/infrastructure/interface/base/registry-options.interface.d.ts +0 -13
  632. package/dist/esm/infrastructure/interface/base/registry-options.interface.d.ts.map +0 -1
  633. package/dist/esm/presentation/utility/create/container.utility.d.ts +0 -10
  634. package/dist/esm/presentation/utility/create/container.utility.d.ts.map +0 -1
  635. package/dist/esm/presentation/utility/create/container.utility.js +0 -16
  636. package/dist/esm/presentation/utility/create/container.utility.js.map +0 -1
  637. package/dist/esm/presentation/utility/create/factory.utility.d.ts +0 -11
  638. package/dist/esm/presentation/utility/create/factory.utility.d.ts.map +0 -1
  639. package/dist/esm/presentation/utility/create/factory.utility.js +0 -17
  640. package/dist/esm/presentation/utility/create/factory.utility.js.map +0 -1
  641. package/dist/esm/presentation/utility/create/registry.utility.d.ts +0 -13
  642. package/dist/esm/presentation/utility/create/registry.utility.d.ts.map +0 -1
  643. package/dist/esm/presentation/utility/create/registry.utility.js +0 -17
  644. package/dist/esm/presentation/utility/create/registry.utility.js.map +0 -1
@@ -0,0 +1,599 @@
1
+ 'use strict';
2
+
3
+ require('../../../../domain/enum/captive-dependency-policy.enum.js');
4
+ var dependencyLifecycle_enum = require('../../../../domain/enum/dependency-lifecycle.enum.js');
5
+ require('../../../../domain/enum/di-container-duplicate-provider-policy.enum.js');
6
+ require('../../../../domain/enum/logger-log-level.enum.js');
7
+ var providerType_enum = require('../../../../domain/enum/provider-type.enum.js');
8
+ var error_class = require('../../base/error.class.js');
9
+ var toError_utility = require('../../../utility/to-error.utility.js');
10
+
11
+ const MAX_STALE_REGISTRATION_RETRIES = 10;
12
+ class ResolutionCoordinator {
13
+ ASSERT_KEY;
14
+ ASSERT_SINGLE_BINDING_LOOKUP;
15
+ DESCRIBE_KEY;
16
+ ENSURE_ACTIVE;
17
+ FIND_PROVIDER;
18
+ GET_SCOPED_CACHE_FOR_LIFECYCLE;
19
+ IS_PROVIDER_CLEANUP_PENDING;
20
+ IS_REGISTRATION_CURRENT;
21
+ REGISTER_DISPOSER;
22
+ VALIDATE_CAPTIVE_DEPENDENCY;
23
+ WAIT_FOR_PROVIDER_CLEANUP;
24
+ constructor(options) {
25
+ this.ASSERT_KEY = options.assertKey;
26
+ this.ASSERT_SINGLE_BINDING_LOOKUP = options.assertSingleBindingLookup;
27
+ this.DESCRIBE_KEY = options.describeKey;
28
+ this.ENSURE_ACTIVE = options.ensureActive;
29
+ this.FIND_PROVIDER = options.findProvider;
30
+ this.GET_SCOPED_CACHE_FOR_LIFECYCLE = options.getScopedCacheForLifecycle;
31
+ this.IS_REGISTRATION_CURRENT = options.isRegistrationCurrent;
32
+ this.IS_PROVIDER_CLEANUP_PENDING = options.isProviderCleanupPending;
33
+ this.REGISTER_DISPOSER = options.registerDisposer;
34
+ this.VALIDATE_CAPTIVE_DEPENDENCY = options.validateCaptiveDependency;
35
+ this.WAIT_FOR_PROVIDER_CLEANUP = options.waitForProviderCleanup;
36
+ }
37
+ async resolveAllAsyncInternal(dependencyKeySymbol, requestScope, path, visitedTokens) {
38
+ this.ENSURE_ACTIVE();
39
+ this.throwIfCircularDependency(dependencyKeySymbol, path, visitedTokens);
40
+ let lookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
41
+ if (lookup.registration && this.IS_PROVIDER_CLEANUP_PENDING(lookup.owner, dependencyKeySymbol)) {
42
+ await this.WAIT_FOR_PROVIDER_CLEANUP(lookup.owner, dependencyKeySymbol);
43
+ lookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
44
+ }
45
+ if (!lookup.registration) {
46
+ throw this.createTokenNotFoundError(dependencyKeySymbol, lookup.lookupPath);
47
+ }
48
+ const registrations = lookup.registrations ?? [];
49
+ const providerOwner = lookup.owner;
50
+ const nextVisitedTokens = new Set(visitedTokens);
51
+ nextVisitedTokens.add(dependencyKeySymbol);
52
+ const nextPath = [...path, dependencyKeySymbol];
53
+ return await Promise.all(registrations.map(async (registration) => await this.resolveRegistrationAsync(registration, providerOwner, requestScope, dependencyKeySymbol, nextPath, nextVisitedTokens)));
54
+ }
55
+ resolveAllSyncInternal(dependencyKeySymbol, requestScope, path, visitedTokens) {
56
+ this.ENSURE_ACTIVE();
57
+ this.throwIfCircularDependency(dependencyKeySymbol, path, visitedTokens);
58
+ const lookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
59
+ if (lookup.registration && this.IS_PROVIDER_CLEANUP_PENDING(lookup.owner, dependencyKeySymbol)) {
60
+ throw this.createProviderCleanupPendingError(dependencyKeySymbol, lookup.owner.id);
61
+ }
62
+ if (!lookup.registration) {
63
+ throw this.createTokenNotFoundError(dependencyKeySymbol, lookup.lookupPath);
64
+ }
65
+ const registrations = lookup.registrations ?? [];
66
+ const providerOwner = lookup.owner;
67
+ const nextVisitedTokens = new Set(visitedTokens);
68
+ nextVisitedTokens.add(dependencyKeySymbol);
69
+ const nextPath = [...path, dependencyKeySymbol];
70
+ return registrations.map((registration) => this.resolveRegistrationSync(registration, providerOwner, requestScope, dependencyKeySymbol, nextPath, nextVisitedTokens));
71
+ }
72
+ async resolveAsyncInternal(dependencyKeySymbol, requestScope, path, visitedTokens) {
73
+ this.ENSURE_ACTIVE();
74
+ this.throwIfCircularDependency(dependencyKeySymbol, path, visitedTokens);
75
+ let lookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
76
+ if (lookup.registration && this.IS_PROVIDER_CLEANUP_PENDING(lookup.owner, dependencyKeySymbol)) {
77
+ await this.WAIT_FOR_PROVIDER_CLEANUP(lookup.owner, dependencyKeySymbol);
78
+ lookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
79
+ }
80
+ return await this.resolveSingleRegistrationAsync(dependencyKeySymbol, lookup, path, requestScope, visitedTokens);
81
+ }
82
+ resolveSyncInternal(dependencyKeySymbol, requestScope, path, visitedTokens) {
83
+ this.ENSURE_ACTIVE();
84
+ this.throwIfCircularDependency(dependencyKeySymbol, path, visitedTokens);
85
+ const lookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
86
+ if (lookup.registration && this.IS_PROVIDER_CLEANUP_PENDING(lookup.owner, dependencyKeySymbol)) {
87
+ throw this.createProviderCleanupPendingError(dependencyKeySymbol, lookup.owner.id);
88
+ }
89
+ return this.resolveSingleRegistrationSync(dependencyKeySymbol, lookup, path, requestScope, visitedTokens);
90
+ }
91
+ createAsyncProviderError(dependencyKeySymbol) {
92
+ return new error_class.BaseError("Use resolveAsync() for async providers", {
93
+ code: "ASYNC_PROVIDER_ERROR",
94
+ context: {
95
+ token: this.DESCRIBE_KEY(dependencyKeySymbol),
96
+ },
97
+ source: "DIContainer",
98
+ });
99
+ }
100
+ createAsyncProviderHookError(dependencyKeySymbol, hookName) {
101
+ return new error_class.BaseError(`Provider ${hookName} hook requires resolveAsync()`, {
102
+ code: "ASYNC_PROVIDER_HOOK_ERROR",
103
+ context: {
104
+ hook: hookName,
105
+ token: this.DESCRIBE_KEY(dependencyKeySymbol),
106
+ },
107
+ source: "DIContainer",
108
+ });
109
+ }
110
+ createLazyResolver(lazyDependencyKeySymbol, dependencyResolutionScope) {
111
+ const scopeReference = new WeakRef(dependencyResolutionScope);
112
+ const scopeId = dependencyResolutionScope.id;
113
+ return async () => {
114
+ const resolutionScope = scopeReference.deref();
115
+ if (!resolutionScope) {
116
+ throw this.createLazyScopeDisposedError(lazyDependencyKeySymbol, scopeId);
117
+ }
118
+ try {
119
+ return await this.resolveAsyncInternal(lazyDependencyKeySymbol, resolutionScope, [], new Set());
120
+ }
121
+ catch (error) {
122
+ const normalizedError = toError_utility.toError(error);
123
+ if (normalizedError instanceof error_class.BaseError && normalizedError.code === "SCOPE_DISPOSED") {
124
+ throw this.createLazyScopeDisposedError(lazyDependencyKeySymbol, scopeId, normalizedError);
125
+ }
126
+ throw normalizedError;
127
+ }
128
+ };
129
+ }
130
+ createLazyScopeDisposedError(dependencyKeySymbol, scopeId, cause) {
131
+ return new error_class.BaseError("Lazy provider invoked after scope disposal", {
132
+ cause,
133
+ code: "LAZY_SCOPE_DISPOSED",
134
+ context: {
135
+ scopeId,
136
+ token: this.DESCRIBE_KEY(dependencyKeySymbol),
137
+ },
138
+ source: "DIContainer",
139
+ });
140
+ }
141
+ createProviderCleanupPendingError(dependencyKeySymbol, scopeId) {
142
+ return new error_class.BaseError("Provider cleanup is in progress after overwrite", {
143
+ code: "PROVIDER_CLEANUP_PENDING",
144
+ context: {
145
+ scopeId,
146
+ token: this.DESCRIBE_KEY(dependencyKeySymbol),
147
+ },
148
+ source: "DIContainer",
149
+ });
150
+ }
151
+ createProviderHookFailedError(dependencyKeySymbol, hookName, error) {
152
+ return new error_class.BaseError(`Provider ${hookName} hook failed`, {
153
+ cause: toError_utility.toError(error),
154
+ code: "PROVIDER_HOOK_FAILED",
155
+ context: {
156
+ hook: hookName,
157
+ token: this.DESCRIBE_KEY(dependencyKeySymbol),
158
+ },
159
+ source: "DIContainer",
160
+ });
161
+ }
162
+ createStaleRegistrationError(ownerScope, dependencyKeySymbol) {
163
+ return new error_class.BaseError("Provider registration changed during multi-resolution", {
164
+ code: "PROVIDER_STALE_REGISTRATION",
165
+ context: {
166
+ scopeId: ownerScope.id,
167
+ token: this.DESCRIBE_KEY(dependencyKeySymbol),
168
+ },
169
+ source: "DIContainer",
170
+ });
171
+ }
172
+ createTokenNotFoundError(dependencyKeySymbol, lookupPath) {
173
+ return new error_class.BaseError("Token not found in container", {
174
+ code: "TOKEN_NOT_FOUND",
175
+ context: {
176
+ lookupPath,
177
+ token: this.DESCRIBE_KEY(dependencyKeySymbol),
178
+ },
179
+ source: "DIContainer",
180
+ });
181
+ }
182
+ getDisposerScope(registration, providerOwner, requestScope) {
183
+ return registration.lifecycle === dependencyLifecycle_enum.EDependencyLifecycle.SINGLETON ? providerOwner : requestScope;
184
+ }
185
+ async instantiateAsync(registration, dependencyResolutionScope, path, visitedTokens) {
186
+ if (registration.type === providerType_enum.EProviderType.VALUE) {
187
+ return registration.provider.useValue;
188
+ }
189
+ if (registration.type === providerType_enum.EProviderType.ALIAS) {
190
+ const aliasProvider = registration.provider;
191
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, aliasProvider.useExisting, dependencyResolutionScope);
192
+ return await this.resolveAsyncInternal(this.ASSERT_KEY(aliasProvider.useExisting), dependencyResolutionScope, path, visitedTokens);
193
+ }
194
+ if (registration.type === providerType_enum.EProviderType.LAZY) {
195
+ const lazyProvider = registration.provider;
196
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, lazyProvider.useLazy, dependencyResolutionScope);
197
+ const lazyDependencyKeySymbol = this.ASSERT_KEY(lazyProvider.useLazy);
198
+ return this.createLazyResolver(lazyDependencyKeySymbol, dependencyResolutionScope);
199
+ }
200
+ if (registration.type === providerType_enum.EProviderType.CLASS) {
201
+ const classProvider = registration.provider;
202
+ const dependencies = classProvider.deps ?? [];
203
+ for (const dependencyToken of dependencies) {
204
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, dependencyToken, dependencyResolutionScope);
205
+ }
206
+ const dependencyInstances = await Promise.all(dependencies.map(async (dependencyToken) => await this.resolveAsyncInternal(this.ASSERT_KEY(dependencyToken), dependencyResolutionScope, path, visitedTokens)));
207
+ return new classProvider.useClass(...dependencyInstances);
208
+ }
209
+ const factoryProvider = registration.provider;
210
+ const dependencies = factoryProvider.deps ?? [];
211
+ for (const dependencyToken of dependencies) {
212
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, dependencyToken, dependencyResolutionScope);
213
+ }
214
+ const dependencyInstances = await Promise.all(dependencies.map(async (dependencyToken) => await this.resolveAsyncInternal(this.ASSERT_KEY(dependencyToken), dependencyResolutionScope, path, visitedTokens)));
215
+ return factoryProvider.useFactory(...dependencyInstances);
216
+ }
217
+ instantiateSync(registration, dependencyResolutionScope, path, visitedTokens) {
218
+ if (registration.type === providerType_enum.EProviderType.VALUE) {
219
+ return registration.provider.useValue;
220
+ }
221
+ if (registration.type === providerType_enum.EProviderType.ALIAS) {
222
+ const aliasProvider = registration.provider;
223
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, aliasProvider.useExisting, dependencyResolutionScope);
224
+ return this.resolveSyncInternal(this.ASSERT_KEY(aliasProvider.useExisting), dependencyResolutionScope, path, visitedTokens);
225
+ }
226
+ if (registration.type === providerType_enum.EProviderType.LAZY) {
227
+ const lazyProvider = registration.provider;
228
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, lazyProvider.useLazy, dependencyResolutionScope);
229
+ const lazyDependencyKeySymbol = this.ASSERT_KEY(lazyProvider.useLazy);
230
+ return this.createLazyResolver(lazyDependencyKeySymbol, dependencyResolutionScope);
231
+ }
232
+ if (registration.type === providerType_enum.EProviderType.CLASS) {
233
+ const classProvider = registration.provider;
234
+ const dependencies = classProvider.deps ?? [];
235
+ for (const dependencyToken of dependencies) {
236
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, dependencyToken, dependencyResolutionScope);
237
+ }
238
+ const dependencyInstances = dependencies.map((dependencyToken) => this.resolveSyncInternal(this.ASSERT_KEY(dependencyToken), dependencyResolutionScope, path, visitedTokens));
239
+ return new classProvider.useClass(...dependencyInstances);
240
+ }
241
+ const factoryProvider = registration.provider;
242
+ if (registration.isAsyncFactory) {
243
+ throw this.createAsyncProviderError(this.ASSERT_KEY(factoryProvider.provide));
244
+ }
245
+ const dependencies = factoryProvider.deps ?? [];
246
+ for (const dependencyToken of dependencies) {
247
+ this.VALIDATE_CAPTIVE_DEPENDENCY(registration, dependencyToken, dependencyResolutionScope);
248
+ }
249
+ const dependencyInstances = dependencies.map((dependencyToken) => this.resolveSyncInternal(this.ASSERT_KEY(dependencyToken), dependencyResolutionScope, path, visitedTokens));
250
+ const result = factoryProvider.useFactory(...dependencyInstances);
251
+ if (this.isPromiseLike(result)) {
252
+ throw this.createAsyncProviderError(this.ASSERT_KEY(factoryProvider.provide));
253
+ }
254
+ return result;
255
+ }
256
+ async invokeAfterResolveAsync(registration, dependencyKeySymbol, instance) {
257
+ await this.runLifecycleHookAsync(registration.provider, "afterResolve", instance, dependencyKeySymbol);
258
+ return instance;
259
+ }
260
+ invokeAfterResolveSync(registration, dependencyKeySymbol, instance) {
261
+ this.runLifecycleHookSync(registration.provider, "afterResolve", instance, dependencyKeySymbol);
262
+ return instance;
263
+ }
264
+ async invokeOnInitAsync(registration, dependencyKeySymbol, instance) {
265
+ await this.runLifecycleHookAsync(registration.provider, "onInit", instance, dependencyKeySymbol);
266
+ }
267
+ invokeOnInitSync(registration, dependencyKeySymbol, instance) {
268
+ this.runLifecycleHookSync(registration.provider, "onInit", instance, dependencyKeySymbol);
269
+ }
270
+ isPromiseLike(value) {
271
+ if (value === null || value === undefined) {
272
+ return false;
273
+ }
274
+ const valueType = typeof value;
275
+ if (valueType !== "function" && valueType !== "object") {
276
+ return false;
277
+ }
278
+ return typeof value.then === "function";
279
+ }
280
+ async resolveRegistrationAsync(registration, providerOwner, requestScope, dependencyKeySymbol, path, visitedTokens) {
281
+ if (this.IS_PROVIDER_CLEANUP_PENDING(providerOwner, dependencyKeySymbol)) {
282
+ await this.WAIT_FOR_PROVIDER_CLEANUP(providerOwner, dependencyKeySymbol);
283
+ if (!this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration)) {
284
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
285
+ }
286
+ }
287
+ const dependencyResolutionScope = registration.lifecycle === dependencyLifecycle_enum.EDependencyLifecycle.SINGLETON ? providerOwner : requestScope;
288
+ const cache = this.GET_SCOPED_CACHE_FOR_LIFECYCLE(registration.lifecycle, requestScope, providerOwner);
289
+ const cacheKey = registration.cacheKey;
290
+ if (cache) {
291
+ if (cache.has(cacheKey)) {
292
+ const cachedValue = cache.get(cacheKey);
293
+ const resolvedCachedValue = await Promise.resolve(cachedValue);
294
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
295
+ if (!isCurrentRegistration) {
296
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
297
+ }
298
+ return await this.invokeAfterResolveAsync(registration, dependencyKeySymbol, resolvedCachedValue);
299
+ }
300
+ const creationPromise = this.instantiateAsync(registration, dependencyResolutionScope, path, visitedTokens);
301
+ cache.set(cacheKey, creationPromise);
302
+ try {
303
+ const createdValue = await creationPromise;
304
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
305
+ if (!isCurrentRegistration) {
306
+ if (cache.get(cacheKey) === creationPromise) {
307
+ cache.delete(cacheKey);
308
+ }
309
+ await this.tryDisposeAfterOnInitFailureAsync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
310
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
311
+ }
312
+ try {
313
+ await this.invokeOnInitAsync(registration, dependencyKeySymbol, createdValue);
314
+ }
315
+ catch (error) {
316
+ await this.tryDisposeAfterOnInitFailureAsync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
317
+ throw error;
318
+ }
319
+ cache.set(cacheKey, createdValue);
320
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
321
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
322
+ return await this.invokeAfterResolveAsync(registration, dependencyKeySymbol, createdValue);
323
+ }
324
+ catch (error) {
325
+ if (cache.get(cacheKey) === creationPromise) {
326
+ cache.delete(cacheKey);
327
+ }
328
+ throw error;
329
+ }
330
+ }
331
+ const createdValue = await this.instantiateAsync(registration, dependencyResolutionScope, path, visitedTokens);
332
+ try {
333
+ await this.invokeOnInitAsync(registration, dependencyKeySymbol, createdValue);
334
+ }
335
+ catch (error) {
336
+ await this.tryDisposeAfterOnInitFailureAsync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
337
+ throw error;
338
+ }
339
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
340
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
341
+ return await this.invokeAfterResolveAsync(registration, dependencyKeySymbol, createdValue);
342
+ }
343
+ resolveRegistrationSync(registration, providerOwner, requestScope, dependencyKeySymbol, path, visitedTokens) {
344
+ if (this.IS_PROVIDER_CLEANUP_PENDING(providerOwner, dependencyKeySymbol)) {
345
+ throw this.createProviderCleanupPendingError(dependencyKeySymbol, providerOwner.id);
346
+ }
347
+ const dependencyResolutionScope = registration.lifecycle === dependencyLifecycle_enum.EDependencyLifecycle.SINGLETON ? providerOwner : requestScope;
348
+ const cache = this.GET_SCOPED_CACHE_FOR_LIFECYCLE(registration.lifecycle, requestScope, providerOwner);
349
+ const cacheKey = registration.cacheKey;
350
+ if (cache?.has(cacheKey)) {
351
+ const cachedValue = cache.get(cacheKey);
352
+ if (this.isPromiseLike(cachedValue)) {
353
+ throw this.createAsyncProviderError(dependencyKeySymbol);
354
+ }
355
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
356
+ if (!isCurrentRegistration) {
357
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
358
+ }
359
+ return this.invokeAfterResolveSync(registration, dependencyKeySymbol, cachedValue);
360
+ }
361
+ const createdValue = this.instantiateSync(registration, dependencyResolutionScope, path, visitedTokens);
362
+ if (cache) {
363
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
364
+ if (!isCurrentRegistration) {
365
+ this.tryDisposeAfterOnInitFailureSync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
366
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
367
+ }
368
+ try {
369
+ this.invokeOnInitSync(registration, dependencyKeySymbol, createdValue);
370
+ }
371
+ catch (error) {
372
+ this.tryDisposeAfterOnInitFailureSync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
373
+ throw error;
374
+ }
375
+ cache.set(cacheKey, createdValue);
376
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
377
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
378
+ return this.invokeAfterResolveSync(registration, dependencyKeySymbol, createdValue);
379
+ }
380
+ try {
381
+ this.invokeOnInitSync(registration, dependencyKeySymbol, createdValue);
382
+ }
383
+ catch (error) {
384
+ this.tryDisposeAfterOnInitFailureSync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
385
+ throw error;
386
+ }
387
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
388
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
389
+ return this.invokeAfterResolveSync(registration, dependencyKeySymbol, createdValue);
390
+ }
391
+ async resolveSingleRegistrationAsync(dependencyKeySymbol, lookup, path, requestScope, visitedTokens, staleRetryCount = 0) {
392
+ const registration = this.ASSERT_SINGLE_BINDING_LOOKUP(dependencyKeySymbol, lookup);
393
+ const nextVisitedTokens = new Set(visitedTokens);
394
+ nextVisitedTokens.add(dependencyKeySymbol);
395
+ const nextPath = [...path, dependencyKeySymbol];
396
+ const providerOwner = lookup.owner;
397
+ if (this.IS_PROVIDER_CLEANUP_PENDING(providerOwner, dependencyKeySymbol)) {
398
+ await this.WAIT_FOR_PROVIDER_CLEANUP(providerOwner, dependencyKeySymbol);
399
+ if (staleRetryCount >= MAX_STALE_REGISTRATION_RETRIES) {
400
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
401
+ }
402
+ const retryLookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
403
+ return await this.resolveSingleRegistrationAsync(dependencyKeySymbol, retryLookup, path, requestScope, visitedTokens, staleRetryCount + 1);
404
+ }
405
+ const dependencyResolutionScope = registration.lifecycle === dependencyLifecycle_enum.EDependencyLifecycle.SINGLETON ? providerOwner : requestScope;
406
+ const cache = this.GET_SCOPED_CACHE_FOR_LIFECYCLE(registration.lifecycle, requestScope, providerOwner);
407
+ const cacheKey = registration.cacheKey;
408
+ if (cache) {
409
+ if (cache.has(cacheKey)) {
410
+ const cachedValue = cache.get(cacheKey);
411
+ const resolvedCachedValue = await Promise.resolve(cachedValue);
412
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
413
+ if (!isCurrentRegistration) {
414
+ if (staleRetryCount >= MAX_STALE_REGISTRATION_RETRIES) {
415
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
416
+ }
417
+ const retryLookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
418
+ return await this.resolveSingleRegistrationAsync(dependencyKeySymbol, retryLookup, path, requestScope, visitedTokens, staleRetryCount + 1);
419
+ }
420
+ return await this.invokeAfterResolveAsync(registration, dependencyKeySymbol, resolvedCachedValue);
421
+ }
422
+ const creationPromise = this.instantiateAsync(registration, dependencyResolutionScope, nextPath, nextVisitedTokens);
423
+ cache.set(cacheKey, creationPromise);
424
+ try {
425
+ const createdValue = await creationPromise;
426
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
427
+ if (!isCurrentRegistration) {
428
+ if (cache.get(cacheKey) === creationPromise) {
429
+ cache.delete(cacheKey);
430
+ }
431
+ await this.tryDisposeAfterOnInitFailureAsync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
432
+ if (staleRetryCount >= MAX_STALE_REGISTRATION_RETRIES) {
433
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
434
+ }
435
+ const retryLookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
436
+ return await this.resolveSingleRegistrationAsync(dependencyKeySymbol, retryLookup, path, requestScope, visitedTokens, staleRetryCount + 1);
437
+ }
438
+ try {
439
+ await this.invokeOnInitAsync(registration, dependencyKeySymbol, createdValue);
440
+ }
441
+ catch (error) {
442
+ await this.tryDisposeAfterOnInitFailureAsync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
443
+ throw error;
444
+ }
445
+ cache.set(cacheKey, createdValue);
446
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
447
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
448
+ return await this.invokeAfterResolveAsync(registration, dependencyKeySymbol, createdValue);
449
+ }
450
+ catch (error) {
451
+ if (cache.get(cacheKey) === creationPromise) {
452
+ cache.delete(cacheKey);
453
+ }
454
+ throw error;
455
+ }
456
+ }
457
+ const createdValue = await this.instantiateAsync(registration, dependencyResolutionScope, nextPath, nextVisitedTokens);
458
+ try {
459
+ await this.invokeOnInitAsync(registration, dependencyKeySymbol, createdValue);
460
+ }
461
+ catch (error) {
462
+ await this.tryDisposeAfterOnInitFailureAsync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
463
+ throw error;
464
+ }
465
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
466
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
467
+ return await this.invokeAfterResolveAsync(registration, dependencyKeySymbol, createdValue);
468
+ }
469
+ resolveSingleRegistrationSync(dependencyKeySymbol, lookup, path, requestScope, visitedTokens, staleRetryCount = 0) {
470
+ const registration = this.ASSERT_SINGLE_BINDING_LOOKUP(dependencyKeySymbol, lookup);
471
+ const nextVisitedTokens = new Set(visitedTokens);
472
+ nextVisitedTokens.add(dependencyKeySymbol);
473
+ const nextPath = [...path, dependencyKeySymbol];
474
+ const providerOwner = lookup.owner;
475
+ if (this.IS_PROVIDER_CLEANUP_PENDING(providerOwner, dependencyKeySymbol)) {
476
+ throw this.createProviderCleanupPendingError(dependencyKeySymbol, providerOwner.id);
477
+ }
478
+ const dependencyResolutionScope = registration.lifecycle === dependencyLifecycle_enum.EDependencyLifecycle.SINGLETON ? providerOwner : requestScope;
479
+ const cache = this.GET_SCOPED_CACHE_FOR_LIFECYCLE(registration.lifecycle, requestScope, providerOwner);
480
+ const cacheKey = registration.cacheKey;
481
+ if (cache?.has(cacheKey)) {
482
+ const cachedValue = cache.get(cacheKey);
483
+ if (this.isPromiseLike(cachedValue)) {
484
+ throw this.createAsyncProviderError(dependencyKeySymbol);
485
+ }
486
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
487
+ if (!isCurrentRegistration) {
488
+ if (staleRetryCount >= MAX_STALE_REGISTRATION_RETRIES) {
489
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
490
+ }
491
+ const retryLookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
492
+ return this.resolveSingleRegistrationSync(dependencyKeySymbol, retryLookup, path, requestScope, visitedTokens, staleRetryCount + 1);
493
+ }
494
+ return this.invokeAfterResolveSync(registration, dependencyKeySymbol, cachedValue);
495
+ }
496
+ const createdValue = this.instantiateSync(registration, dependencyResolutionScope, nextPath, nextVisitedTokens);
497
+ if (cache) {
498
+ const isCurrentRegistration = this.IS_REGISTRATION_CURRENT(providerOwner, dependencyKeySymbol, registration);
499
+ if (!isCurrentRegistration) {
500
+ this.tryDisposeAfterOnInitFailureSync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
501
+ if (staleRetryCount >= MAX_STALE_REGISTRATION_RETRIES) {
502
+ throw this.createStaleRegistrationError(providerOwner, dependencyKeySymbol);
503
+ }
504
+ const retryLookup = this.FIND_PROVIDER(requestScope, dependencyKeySymbol);
505
+ return this.resolveSingleRegistrationSync(dependencyKeySymbol, retryLookup, path, requestScope, visitedTokens, staleRetryCount + 1);
506
+ }
507
+ try {
508
+ this.invokeOnInitSync(registration, dependencyKeySymbol, createdValue);
509
+ }
510
+ catch (error) {
511
+ this.tryDisposeAfterOnInitFailureSync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
512
+ throw error;
513
+ }
514
+ cache.set(cacheKey, createdValue);
515
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
516
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
517
+ return this.invokeAfterResolveSync(registration, dependencyKeySymbol, createdValue);
518
+ }
519
+ try {
520
+ this.invokeOnInitSync(registration, dependencyKeySymbol, createdValue);
521
+ }
522
+ catch (error) {
523
+ this.tryDisposeAfterOnInitFailureSync(registration, providerOwner, requestScope, dependencyKeySymbol, createdValue);
524
+ throw error;
525
+ }
526
+ const disposerScope = this.getDisposerScope(registration, providerOwner, requestScope);
527
+ this.REGISTER_DISPOSER(disposerScope, registration.provider, createdValue, dependencyKeySymbol);
528
+ return this.invokeAfterResolveSync(registration, dependencyKeySymbol, createdValue);
529
+ }
530
+ async runLifecycleHookAsync(provider, hookName, instance, dependencyKeySymbol) {
531
+ const hook = provider[hookName];
532
+ if (!hook) {
533
+ return;
534
+ }
535
+ try {
536
+ await hook(instance);
537
+ }
538
+ catch (error) {
539
+ throw this.createProviderHookFailedError(dependencyKeySymbol, hookName, error);
540
+ }
541
+ }
542
+ runLifecycleHookSync(provider, hookName, instance, dependencyKeySymbol) {
543
+ const hook = provider[hookName];
544
+ if (!hook) {
545
+ return;
546
+ }
547
+ try {
548
+ const hookResult = hook(instance);
549
+ if (this.isPromiseLike(hookResult)) {
550
+ throw this.createAsyncProviderHookError(dependencyKeySymbol, hookName);
551
+ }
552
+ }
553
+ catch (error) {
554
+ if (error instanceof error_class.BaseError && error.code === "ASYNC_PROVIDER_HOOK_ERROR") {
555
+ throw error;
556
+ }
557
+ throw this.createProviderHookFailedError(dependencyKeySymbol, hookName, error);
558
+ }
559
+ }
560
+ throwIfCircularDependency(dependencyKeySymbol, path, visitedTokens) {
561
+ if (visitedTokens.has(dependencyKeySymbol)) {
562
+ throw new error_class.BaseError("Circular dependency detected", {
563
+ code: "CIRCULAR_DEPENDENCY",
564
+ context: {
565
+ chain: [...path, dependencyKeySymbol].map((token) => this.DESCRIBE_KEY(token)),
566
+ },
567
+ source: "DIContainer",
568
+ });
569
+ }
570
+ }
571
+ async tryDisposeAfterOnInitFailureAsync(registration, providerOwner, requestScope, dependencyKeySymbol, instance) {
572
+ const disposer = this.REGISTER_DISPOSER(this.getDisposerScope(registration, providerOwner, requestScope), registration.provider, instance, dependencyKeySymbol, {
573
+ shouldTrack: false,
574
+ });
575
+ if (!disposer) {
576
+ return;
577
+ }
578
+ try {
579
+ await disposer();
580
+ }
581
+ catch {
582
+ // Preserve the original onInit error if rollback cleanup fails.
583
+ }
584
+ }
585
+ tryDisposeAfterOnInitFailureSync(registration, providerOwner, requestScope, dependencyKeySymbol, instance) {
586
+ const disposer = this.REGISTER_DISPOSER(this.getDisposerScope(registration, providerOwner, requestScope), registration.provider, instance, dependencyKeySymbol, {
587
+ shouldTrack: false,
588
+ });
589
+ if (!disposer) {
590
+ return;
591
+ }
592
+ void disposer().catch(() => {
593
+ // Preserve the original onInit error if rollback cleanup fails.
594
+ });
595
+ }
596
+ }
597
+
598
+ exports.ResolutionCoordinator = ResolutionCoordinator;
599
+ //# sourceMappingURL=coordinator.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.class.js","sources":["../../../../../../../src/infrastructure/class/di/resolution/coordinator.class.ts"],"sourcesContent":[null],"names":["BaseError","toError","EDependencyLifecycle","EProviderType"],"mappings":"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"}