@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,186 @@
1
+ import { BaseError } from '../../../infrastructure/class/base/error.class.js';
2
+
3
+ const IMPORT_REGISTRATION_MODE_RANK = 1;
4
+ const ROOT_REGISTRATION_MODE_RANK = 2;
5
+ const MODULE_REGISTRATION_MODE_RANK = {
6
+ import: IMPORT_REGISTRATION_MODE_RANK,
7
+ root: ROOT_REGISTRATION_MODE_RANK,
8
+ };
9
+ /**
10
+ * Registers module trees in deterministic order (imports first, then local providers).
11
+ * Imported modules expose providers through the `exports` contract.
12
+ * @param {IDIContainer} container Target container.
13
+ * @param {Array<IDIModule>} modules Module list to compose.
14
+ */
15
+ function composeModules(container, modules) {
16
+ const processingModules = new Set();
17
+ const registeredModuleModes = new WeakMap();
18
+ const registeredModuleProvidersByToken = new WeakMap();
19
+ const registerModule = (moduleDefinition, mode, modulePath) => {
20
+ const previousMode = registeredModuleModes.get(moduleDefinition);
21
+ const hasSufficientRegistrationMode = previousMode !== undefined && MODULE_REGISTRATION_MODE_RANK[previousMode] >= MODULE_REGISTRATION_MODE_RANK[mode];
22
+ if (hasSufficientRegistrationMode) {
23
+ return;
24
+ }
25
+ if (processingModules.has(moduleDefinition)) {
26
+ throw new BaseError("Circular module imports detected", {
27
+ code: "MODULE_CIRCULAR_DEPENDENCY",
28
+ context: {
29
+ cyclePath: getModuleCyclePath(modulePath, moduleDefinition),
30
+ },
31
+ source: "composeModules",
32
+ });
33
+ }
34
+ processingModules.add(moduleDefinition);
35
+ try {
36
+ const localProvidersByToken = getLocalProvidersByToken(moduleDefinition);
37
+ validateModuleExports(moduleDefinition, localProvidersByToken);
38
+ const nextModulePath = [...modulePath, moduleDefinition];
39
+ for (const importedModule of moduleDefinition.imports) {
40
+ registerModule(importedModule, "import", nextModulePath);
41
+ }
42
+ const providersToRegister = mode === "root" ? moduleDefinition.providers : collectImportableProviders(moduleDefinition, localProvidersByToken);
43
+ const previouslyRegisteredProvidersByToken = registeredModuleProvidersByToken.get(moduleDefinition) ?? new Map();
44
+ const nextRegisteredProvidersByToken = new Map(previouslyRegisteredProvidersByToken);
45
+ for (const provider of providersToRegister) {
46
+ const previouslyRegisteredProviders = nextRegisteredProvidersByToken.get(provider.provide) ?? new Set();
47
+ if (previouslyRegisteredProviders.has(provider)) {
48
+ continue;
49
+ }
50
+ container.register(provider);
51
+ const nextProviders = new Set(previouslyRegisteredProviders);
52
+ nextProviders.add(provider);
53
+ nextRegisteredProvidersByToken.set(provider.provide, nextProviders);
54
+ }
55
+ registeredModuleModes.set(moduleDefinition, mode);
56
+ registeredModuleProvidersByToken.set(moduleDefinition, nextRegisteredProvidersByToken);
57
+ }
58
+ finally {
59
+ processingModules.delete(moduleDefinition);
60
+ }
61
+ };
62
+ for (const moduleDefinition of modules) {
63
+ registerModule(moduleDefinition, "root", []);
64
+ }
65
+ }
66
+ /**
67
+ * Selects provider subset visible to an importing module.
68
+ * @param {IDIModule} moduleDefinition Source module definition.
69
+ * @param {Map<symbol, Array<Provider>>} localProvidersByToken Local providers indexed by token.
70
+ * @returns {Array<Provider>} Importable providers for current module.
71
+ */
72
+ function collectImportableProviders(moduleDefinition, localProvidersByToken) {
73
+ const importableTokens = new Set();
74
+ const pendingTokens = [...moduleDefinition.exports];
75
+ while (pendingTokens.length > 0) {
76
+ const currentToken = pendingTokens.pop();
77
+ if (!currentToken || importableTokens.has(currentToken)) {
78
+ continue;
79
+ }
80
+ importableTokens.add(currentToken);
81
+ const currentProviders = localProvidersByToken.get(currentToken);
82
+ if (!currentProviders) {
83
+ continue;
84
+ }
85
+ for (const currentProvider of currentProviders) {
86
+ const dependencies = getProviderDependencies(currentProvider);
87
+ for (const dependencyToken of dependencies) {
88
+ if (localProvidersByToken.has(dependencyToken)) {
89
+ pendingTokens.push(dependencyToken);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ return moduleDefinition.providers.filter((provider) => importableTokens.has(provider.provide));
95
+ }
96
+ /**
97
+ * Converts token symbol to readable debug representation.
98
+ * @param {Token<unknown>} token Provider token.
99
+ * @returns {string} Human readable token string.
100
+ */
101
+ function describeToken(token) {
102
+ return token.description ? `Symbol(${token.description})` : token.toString();
103
+ }
104
+ /**
105
+ * Builds map of local providers by token.
106
+ * @param {IDIModule} moduleDefinition Module definition.
107
+ * @returns {Map<symbol, Array<Provider>>} Providers indexed by token.
108
+ */
109
+ function getLocalProvidersByToken(moduleDefinition) {
110
+ const providersByToken = new Map();
111
+ for (const provider of moduleDefinition.providers) {
112
+ const providersForToken = providersByToken.get(provider.provide);
113
+ if (providersForToken) {
114
+ providersForToken.push(provider);
115
+ continue;
116
+ }
117
+ providersByToken.set(provider.provide, [provider]);
118
+ }
119
+ return providersByToken;
120
+ }
121
+ /**
122
+ * Builds a module cycle path for structured error context.
123
+ * @param {Array<IDIModule>} modulePath Current traversal path.
124
+ * @param {IDIModule} repeatedModule Repeated module that closes the cycle.
125
+ * @returns {Array<string>} Human readable cycle chain.
126
+ */
127
+ function getModuleCyclePath(modulePath, repeatedModule) {
128
+ const cycleStartIndex = modulePath.indexOf(repeatedModule);
129
+ const cycleModules = cycleStartIndex === -1 ? [...modulePath, repeatedModule] : [...modulePath.slice(cycleStartIndex), repeatedModule];
130
+ return cycleModules.map((cycleModule) => getModuleName(cycleModule));
131
+ }
132
+ /**
133
+ * Returns readable module identifier for diagnostics.
134
+ * @param {IDIModule} moduleDefinition Module definition.
135
+ * @returns {string} Module name for diagnostics.
136
+ */
137
+ function getModuleName(moduleDefinition) {
138
+ return moduleDefinition.name ?? "anonymous-module";
139
+ }
140
+ /**
141
+ * Returns direct dependency tokens required by provider strategy.
142
+ * @param {Provider} provider Provider definition.
143
+ * @returns {Array<Token<unknown>>} Direct dependency token list.
144
+ */
145
+ function getProviderDependencies(provider) {
146
+ if ("useExisting" in provider) {
147
+ return [provider.useExisting];
148
+ }
149
+ if ("useLazy" in provider) {
150
+ return [provider.useLazy];
151
+ }
152
+ if ("deps" in provider) {
153
+ return provider.deps ?? [];
154
+ }
155
+ return [];
156
+ }
157
+ /**
158
+ * Ensures each exported token is either local provider token or re-export from imports.
159
+ * @param {IDIModule} moduleDefinition Module definition.
160
+ * @param {Map<symbol, Array<Provider>>} localProvidersByToken Local providers indexed by token.
161
+ */
162
+ function validateModuleExports(moduleDefinition, localProvidersByToken) {
163
+ const importedExportTokens = new Set();
164
+ for (const importedModule of moduleDefinition.imports) {
165
+ for (const exportedToken of importedModule.exports) {
166
+ importedExportTokens.add(exportedToken);
167
+ }
168
+ }
169
+ for (const exportedToken of moduleDefinition.exports) {
170
+ const hasLocalProvider = localProvidersByToken.has(exportedToken);
171
+ const hasImportedExport = importedExportTokens.has(exportedToken);
172
+ if (!hasLocalProvider && !hasImportedExport) {
173
+ throw new BaseError("Invalid module exports: token is not provided locally or by imported modules", {
174
+ code: "MODULE_EXPORT_INVALID",
175
+ context: {
176
+ moduleName: moduleDefinition.name ?? "anonymous-module",
177
+ token: describeToken(exportedToken),
178
+ },
179
+ source: "composeModules",
180
+ });
181
+ }
182
+ }
183
+ }
184
+
185
+ export { composeModules };
186
+ //# sourceMappingURL=compose-modules.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-modules.utility.js","sources":["../../../../../../src/presentation/ergonomics/utility/compose-modules.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { IClassProvider } from '../../../../domain/interface/index';
2
+ import type { Constructor, Token } from '../../../../domain/type/index';
3
+ import type { ICreateAutowireProviderOptions } from '../../interface/index';
4
+ /**
5
+ * Creates a class provider using explicit options and optional class metadata.
6
+ * @param {Constructor<T>} useClass Class constructor to instantiate.
7
+ * @param {ICreateAutowireProviderOptions<T>} options Explicit provider options.
8
+ * @returns {IClassProvider<T>} Class provider definition.
9
+ * @template T Provider instance type.
10
+ */
11
+ export declare function createAutowireProvider<T, TDependencies extends ReadonlyArray<Token<unknown>> = ReadonlyArray<Token<unknown>>>(useClass: Constructor<T, number extends TDependencies["length"] ? Array<never> : {
12
+ [Index in keyof TDependencies]: TDependencies[Index] extends Token<infer TValue> ? TValue : never;
13
+ }>, options: ICreateAutowireProviderOptions<T, TDependencies>): IClassProvider<T, TDependencies>;
14
+ //# sourceMappingURL=autowire-provider.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autowire-provider.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/autowire-provider.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,8BAA8B,EAAuB,MAAM,oCAAoC,CAAC;AAK9G;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,aAAa,SAAS,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAC5H,QAAQ,EAAE,WAAW,CACpB,CAAC,EACD,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,GACnC,KAAK,CAAC,KAAK,CAAC,GACZ;KACC,KAAK,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK;CACjG,CACH,EACD,OAAO,EAAE,8BAA8B,CAAC,CAAC,EAAE,aAAa,CAAC,GACvD,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAsBlC"}
@@ -0,0 +1,108 @@
1
+ import { BaseError } from '../../../../infrastructure/class/base/error.class.js';
2
+ import { getInjectableMetadata } from '../injectable-metadata/get.utility.js';
3
+
4
+ /**
5
+ * Creates a class provider using explicit options and optional class metadata.
6
+ * @param {Constructor<T>} useClass Class constructor to instantiate.
7
+ * @param {ICreateAutowireProviderOptions<T>} options Explicit provider options.
8
+ * @returns {IClassProvider<T>} Class provider definition.
9
+ * @template T Provider instance type.
10
+ */
11
+ function createAutowireProvider(useClass, options) {
12
+ const metadata = getInjectableMetadata(useClass);
13
+ const staticDependencies = useClass.inject;
14
+ const dependencies = options.deps ?? metadata?.deps ?? staticDependencies ?? [];
15
+ const afterResolve = options.afterResolve ?? createLifecycleMethodHook(useClass, options.token, metadata?.afterResolveMethod, "afterResolve");
16
+ const onDispose = options.onDispose ?? createLifecycleMethodHook(useClass, options.token, metadata?.onDisposeMethod, "onDispose");
17
+ const onInit = options.onInit ?? createLifecycleMethodHook(useClass, options.token, metadata?.onInitMethod, "onInit");
18
+ validateDependencies(dependencies);
19
+ return {
20
+ afterResolve,
21
+ deps: dependencies,
22
+ isMultiBinding: options.isMultiBinding ?? metadata?.isMultiBinding,
23
+ lifecycle: options.lifecycle ?? metadata?.lifecycle,
24
+ onDispose,
25
+ onInit,
26
+ provide: options.token,
27
+ useClass,
28
+ };
29
+ }
30
+ /**
31
+ * Resolves a lifecycle hook method from injectable metadata.
32
+ * @param {Constructor<T>} useClass Provider class.
33
+ * @param {Token<T>} token Provider token for diagnostics.
34
+ * @param {string | undefined} methodName Decorated method name.
35
+ * @param {"afterResolve" | "onDispose" | "onInit"} hookName Hook type.
36
+ * @returns {((instance: T) => Promise<void> | void) | undefined} Lifecycle hook function.
37
+ * @template T Provider instance type.
38
+ */
39
+ function createLifecycleMethodHook(useClass, token, methodName, hookName) {
40
+ if (!methodName) {
41
+ return undefined;
42
+ }
43
+ const prototypeCandidate = useClass.prototype;
44
+ const prototype = (typeof prototypeCandidate === "object" && prototypeCandidate !== null ? prototypeCandidate : {});
45
+ const prototypeMethod = prototype[methodName];
46
+ if (typeof prototypeMethod !== "function") {
47
+ throw new BaseError("Injectable lifecycle method not found on class prototype", {
48
+ code: "INJECTABLE_LIFECYCLE_METHOD_NOT_FOUND",
49
+ context: {
50
+ hook: hookName,
51
+ methodName,
52
+ token: describeToken(token),
53
+ },
54
+ source: "createAutowireProvider",
55
+ });
56
+ }
57
+ return (instance) => {
58
+ const instanceRecord = instance;
59
+ const instanceMethod = instanceRecord[methodName];
60
+ if (typeof instanceMethod !== "function") {
61
+ throw new BaseError("Injectable lifecycle method is not callable on resolved instance", {
62
+ code: "INJECTABLE_LIFECYCLE_METHOD_INVALID",
63
+ context: {
64
+ hook: hookName,
65
+ methodName,
66
+ token: describeToken(token),
67
+ },
68
+ source: "createAutowireProvider",
69
+ });
70
+ }
71
+ return instanceMethod.call(instance);
72
+ };
73
+ }
74
+ /**
75
+ * Builds readable token description for diagnostics.
76
+ * @param {Token<unknown>} token Provider token.
77
+ * @returns {string} Token description.
78
+ */
79
+ function describeToken(token) {
80
+ return token.description ? `Symbol(${token.description})` : token.toString();
81
+ }
82
+ /**
83
+ * Validates dependency metadata for autowire provider creation.
84
+ * @param {ReadonlyArray<Token<unknown>>} dependencies Dependency token list.
85
+ */
86
+ function validateDependencies(dependencies) {
87
+ for (let dependencyIndex = 0; dependencyIndex < dependencies.length; dependencyIndex += 1) {
88
+ const hasDependencyAtIndex = Object.prototype.hasOwnProperty.call(dependencies, dependencyIndex);
89
+ if (!hasDependencyAtIndex) {
90
+ throw new BaseError("Injectable metadata has sparse dependency indexes", {
91
+ code: "INJECTABLE_METADATA_DEPS_SPARSE",
92
+ context: { index: dependencyIndex },
93
+ source: "createAutowireProvider",
94
+ });
95
+ }
96
+ const dependencyValue = dependencies[dependencyIndex];
97
+ if (typeof dependencyValue !== "symbol") {
98
+ throw new BaseError("Injectable metadata dependency token must be a symbol", {
99
+ code: "INJECTABLE_METADATA_DEPS_TOKEN_INVALID",
100
+ context: { index: dependencyIndex },
101
+ source: "createAutowireProvider",
102
+ });
103
+ }
104
+ }
105
+ }
106
+
107
+ export { createAutowireProvider };
108
+ //# sourceMappingURL=autowire-provider.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autowire-provider.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/autowire-provider.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { IClassProvider } from '../../../../domain/interface/index';
2
+ import type { Constructor, Token } from '../../../../domain/type/index';
3
+ import type { ICreateAutowireProviderOptions } from '../../interface/index';
4
+ /**
5
+ * Creates autowired provider using token defined in injectable metadata.
6
+ * @param {Constructor<T>} useClass Class constructor to instantiate.
7
+ * @param {Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">} [options] Optional provider overrides.
8
+ * @returns {IClassProvider<T, TDependencies>} Class provider definition.
9
+ * @template T Provider instance type.
10
+ * @template TDependencies Constructor dependency tokens.
11
+ */
12
+ export declare function autowire<T, TDependencies extends ReadonlyArray<Token<unknown>> = ReadonlyArray<Token<unknown>>>(useClass: Constructor<T, number extends TDependencies["length"] ? Array<never> : {
13
+ [Index in keyof TDependencies]: TDependencies[Index] extends Token<infer TValue> ? TValue : never;
14
+ }>, options?: Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">): IClassProvider<T, TDependencies>;
15
+ //# sourceMappingURL=autowire.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autowire.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/autowire.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,8BAA8B,EAAuB,MAAM,oCAAoC,CAAC;AAO9G;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,aAAa,SAAS,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAC9G,QAAQ,EAAE,WAAW,CACpB,CAAC,EACD,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,GACnC,KAAK,CAAC,KAAK,CAAC,GACZ;KACC,KAAK,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK;CACjG,CACH,EACD,OAAO,GAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAM,GAC3E,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAkBlC"}
@@ -0,0 +1,32 @@
1
+ import { BaseError } from '../../../../infrastructure/class/base/error.class.js';
2
+ import { getInjectableMetadata } from '../injectable-metadata/get.utility.js';
3
+ import { createAutowireProvider } from './autowire-provider.utility.js';
4
+
5
+ /**
6
+ * Creates autowired provider using token defined in injectable metadata.
7
+ * @param {Constructor<T>} useClass Class constructor to instantiate.
8
+ * @param {Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">} [options] Optional provider overrides.
9
+ * @returns {IClassProvider<T, TDependencies>} Class provider definition.
10
+ * @template T Provider instance type.
11
+ * @template TDependencies Constructor dependency tokens.
12
+ */
13
+ function autowire(useClass, options = {}) {
14
+ const metadata = getInjectableMetadata(useClass);
15
+ const metadataToken = metadata?.token;
16
+ if (!metadataToken || typeof metadataToken !== "symbol") {
17
+ throw new BaseError("Injectable metadata token is missing; use @Injectable({ token }) or createAutowireProvider(..., { token })", {
18
+ code: "INJECTABLE_TOKEN_MISSING",
19
+ context: {
20
+ className: useClass.name ?? "anonymous-class",
21
+ },
22
+ source: "autowire",
23
+ });
24
+ }
25
+ return createAutowireProvider(useClass, {
26
+ ...options,
27
+ token: metadataToken,
28
+ });
29
+ }
30
+
31
+ export { autowire };
32
+ //# sourceMappingURL=autowire.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autowire.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/autowire.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AASA;;;;;;;AAOG;SACa,QAAQ,CACvB,QAOC,EACD,UAA2E,EAAE,EAAA;AAE7E,IAAA,MAAM,QAAQ,GAAoC,qBAAqB,CAAC,QAAgC,CAAC;AACzG,IAAA,MAAM,aAAa,GAAyB,QAAQ,EAAE,KAA6B;IAEnF,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACxD,QAAA,MAAM,IAAI,SAAS,CAAC,4GAA4G,EAAE;AACjI,YAAA,IAAI,EAAE,0BAA0B;AAChC,YAAA,OAAO,EAAE;AACR,gBAAA,SAAS,EAAG,QAAyC,CAAC,IAAI,IAAI,iBAAiB;AAC/E,aAAA;AACD,YAAA,MAAM,EAAE,UAAU;AAClB,SAAA,CAAC;IACH;IAEA,OAAO,sBAAsB,CAAC,QAAQ,EAAE;AACvC,QAAA,GAAG,OAAO;AACV,QAAA,KAAK,EAAE,aAAa;AACpB,KAAA,CAAC;AACH;;;;"}
@@ -0,0 +1,5 @@
1
+ export { createAutowireProvider } from './autowire-provider.utility';
2
+ export { autowire } from './autowire.utility';
3
+ export { createModuleFromDecorator } from './module-from-decorator.utility';
4
+ export { createModule } from './module.utility';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { IDIModule } from '../../../../domain/interface/index';
2
+ import type { Constructor } from '../../../../domain/type/index';
3
+ /**
4
+ * Builds a module definition from a class decorated with @Module.
5
+ * @param {Constructor<unknown>} moduleClass Decorated module class.
6
+ * @returns {IDIModule} Normalized module definition.
7
+ */
8
+ export declare function createModuleFromDecorator(moduleClass: Constructor<unknown>): IDIModule;
9
+ //# sourceMappingURL=module-from-decorator.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-from-decorator.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/module-from-decorator.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,cAAc,CAAC;AAS1D;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAEtF"}
@@ -0,0 +1,133 @@
1
+ import { BaseError } from '../../../../infrastructure/class/base/error.class.js';
2
+ import { getModuleMetadata } from '../module-metadata/get.utility.js';
3
+ import { autowire } from './autowire.utility.js';
4
+ import { createModule } from './module.utility.js';
5
+
6
+ /**
7
+ * Builds a module definition from a class decorated with @Module.
8
+ * @param {Constructor<unknown>} moduleClass Decorated module class.
9
+ * @returns {IDIModule} Normalized module definition.
10
+ */
11
+ function createModuleFromDecorator(moduleClass) {
12
+ return resolveModuleClass(moduleClass, new Map(), []);
13
+ }
14
+ /**
15
+ * Checks whether input is constructable class constructor.
16
+ * @param {unknown} candidate Candidate value.
17
+ * @returns {boolean} True when value is a constructable class.
18
+ */
19
+ function isConstructable(candidate) {
20
+ if (typeof candidate !== "function") {
21
+ return false;
22
+ }
23
+ const candidateAsConstructor = candidate;
24
+ const prototype = candidateAsConstructor.prototype;
25
+ return !!prototype && prototype.constructor === candidate;
26
+ }
27
+ /**
28
+ * Checks whether input is module definition shape.
29
+ * @param {unknown} candidate Candidate value.
30
+ * @returns {boolean} True when candidate is module definition-like.
31
+ */
32
+ function isModuleDefinition(candidate) {
33
+ if (typeof candidate !== "object" || candidate === null) {
34
+ return false;
35
+ }
36
+ const moduleCandidate = candidate;
37
+ return Array.isArray(moduleCandidate.exports) && Array.isArray(moduleCandidate.imports) && Array.isArray(moduleCandidate.providers);
38
+ }
39
+ /**
40
+ * Checks whether input is provider definition shape.
41
+ * @param {unknown} candidate Candidate value.
42
+ * @returns {boolean} True when candidate is provider-like object.
43
+ */
44
+ function isProviderDefinition(candidate) {
45
+ if (typeof candidate !== "object" || candidate === null) {
46
+ return false;
47
+ }
48
+ const providerCandidate = candidate;
49
+ return typeof providerCandidate.provide === "symbol";
50
+ }
51
+ /**
52
+ * Resolves module class recursively into module definition.
53
+ * @param {Constructor<unknown>} moduleClass Decorated module class.
54
+ * @param {Map<Constructor<unknown>, IDIModule>} cache Resolved module cache.
55
+ * @param {Array<Constructor<unknown>>} path Current recursion path.
56
+ * @returns {IDIModule} Resolved module definition.
57
+ */
58
+ function resolveModuleClass(moduleClass, cache, path) {
59
+ const cachedModuleDefinition = cache.get(moduleClass);
60
+ if (cachedModuleDefinition) {
61
+ return cachedModuleDefinition;
62
+ }
63
+ if (path.includes(moduleClass)) {
64
+ throw new BaseError("Circular module decorator imports detected", {
65
+ code: "MODULE_DECORATOR_CIRCULAR_IMPORT",
66
+ context: {
67
+ cyclePath: [...path, moduleClass].map((currentModuleClass) => currentModuleClass.name || "anonymous-module-class"),
68
+ },
69
+ source: "createModuleFromDecorator",
70
+ });
71
+ }
72
+ const metadata = getModuleMetadata(moduleClass);
73
+ if (!metadata) {
74
+ throw new BaseError("Module metadata not found on class; decorate class with @Module", {
75
+ code: "MODULE_DECORATOR_METADATA_MISSING",
76
+ context: {
77
+ className: moduleClass.name || "anonymous-module-class",
78
+ },
79
+ source: "createModuleFromDecorator",
80
+ });
81
+ }
82
+ const nextPath = [...path, moduleClass];
83
+ const imports = (metadata.imports ?? []).map((importEntry) => resolveModuleImport(importEntry, cache, nextPath));
84
+ const providers = (metadata.providers ?? []).map((providerEntry) => resolveModuleProvider(providerEntry));
85
+ const moduleName = metadata.name ?? (moduleClass.name || undefined);
86
+ const moduleDefinition = createModule({
87
+ exports: metadata.exports,
88
+ imports,
89
+ name: moduleName,
90
+ providers,
91
+ });
92
+ cache.set(moduleClass, moduleDefinition);
93
+ return moduleDefinition;
94
+ }
95
+ /**
96
+ * Resolves module import entry to module definition.
97
+ * @param {Constructor<unknown> | IDIModule} importEntry Module import entry.
98
+ * @param {Map<Constructor<unknown>, IDIModule>} cache Resolved module cache.
99
+ * @param {Array<Constructor<unknown>>} path Current recursion path.
100
+ * @returns {IDIModule} Resolved module definition.
101
+ */
102
+ function resolveModuleImport(importEntry, cache, path) {
103
+ if (isModuleDefinition(importEntry)) {
104
+ return importEntry;
105
+ }
106
+ if (isConstructable(importEntry)) {
107
+ return resolveModuleClass(importEntry, cache, path);
108
+ }
109
+ throw new BaseError("Module import must be a decorated module class or module definition", {
110
+ code: "MODULE_DECORATOR_IMPORT_INVALID",
111
+ source: "createModuleFromDecorator",
112
+ });
113
+ }
114
+ /**
115
+ * Resolves module provider entry to provider definition.
116
+ * @param {Constructor<unknown> | Provider} providerEntry Module provider entry.
117
+ * @returns {Provider} Resolved provider definition.
118
+ */
119
+ function resolveModuleProvider(providerEntry) {
120
+ if (isProviderDefinition(providerEntry)) {
121
+ return providerEntry;
122
+ }
123
+ if (isConstructable(providerEntry)) {
124
+ return autowire(providerEntry);
125
+ }
126
+ throw new BaseError("Module provider must be a decorated class or provider definition", {
127
+ code: "MODULE_DECORATOR_PROVIDER_INVALID",
128
+ source: "createModuleFromDecorator",
129
+ });
130
+ }
131
+
132
+ export { createModuleFromDecorator };
133
+ //# sourceMappingURL=module-from-decorator.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-from-decorator.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/module-from-decorator.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { IDIModule } from '../../../../domain/interface/index';
2
+ import type { ICreateModuleOptions } from '../../interface/index';
3
+ /**
4
+ * Builds a declarative module definition for DI composition.
5
+ * @param {ICreateModuleOptions} options Module configuration.
6
+ * @returns {IDIModule} Normalized module definition.
7
+ */
8
+ export declare function createModule(options: ICreateModuleOptions): IDIModule;
9
+ //# sourceMappingURL=module.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/module.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CASrE"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Builds a declarative module definition for DI composition.
3
+ * @param {ICreateModuleOptions} options Module configuration.
4
+ * @returns {IDIModule} Normalized module definition.
5
+ */
6
+ function createModule(options) {
7
+ const moduleDefinition = {
8
+ exports: Object.freeze([...(options.exports ?? [])]),
9
+ imports: Object.freeze([...(options.imports ?? [])]),
10
+ name: options.name,
11
+ providers: Object.freeze([...(options.providers ?? [])]),
12
+ };
13
+ return Object.freeze(moduleDefinition);
14
+ }
15
+
16
+ export { createModule };
17
+ //# sourceMappingURL=module.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/module.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGA;;;;AAIG;AACG,SAAU,YAAY,CAAC,OAA6B,EAAA;AACzD,IAAA,MAAM,gBAAgB,GAAc;AACnC,QAAA,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACvC;;;;"}
@@ -0,0 +1,6 @@
1
+ export { composeDecoratedModules } from './compose-decorated-modules.utility';
2
+ export { composeModules } from './compose-modules.utility';
3
+ export * from './create/index';
4
+ export * from './injectable-metadata/index';
5
+ export * from './module-metadata/index';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/ergonomics/utility/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Constructor } from '../../../../domain/type/index';
2
+ import type { IInjectableMetadata } from '../../interface/index';
3
+ /**
4
+ * Reads injectable metadata from a class constructor.
5
+ * @param {Constructor<unknown>} target Constructor to inspect.
6
+ * @returns {IInjectableMetadata | undefined} Stored metadata.
7
+ */
8
+ export declare function getInjectableMetadata(target: Constructor<unknown>): IInjectableMetadata | undefined;
9
+ //# sourceMappingURL=get.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/injectable-metadata/get.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAI9E;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,mBAAmB,GAAG,SAAS,CASnG"}
@@ -0,0 +1,18 @@
1
+ import { INJECTABLE_METADATA_KEY } from '../../constant/injectable-metadata-key.constant.js';
2
+
3
+ /**
4
+ * Reads injectable metadata from a class constructor.
5
+ * @param {Constructor<unknown>} target Constructor to inspect.
6
+ * @returns {IInjectableMetadata | undefined} Stored metadata.
7
+ */
8
+ function getInjectableMetadata(target) {
9
+ const targetWithMetadata = target;
10
+ const hasOwnMetadata = Object.prototype.hasOwnProperty.call(targetWithMetadata, INJECTABLE_METADATA_KEY);
11
+ if (!hasOwnMetadata) {
12
+ return undefined;
13
+ }
14
+ return targetWithMetadata[INJECTABLE_METADATA_KEY];
15
+ }
16
+
17
+ export { getInjectableMetadata };
18
+ //# sourceMappingURL=get.utility.js.map