@venok/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/application/config.d.ts +35 -0
  2. package/application/config.js +85 -0
  3. package/application/context.d.ts +198 -0
  4. package/application/context.js +325 -0
  5. package/application/factory.d.ts +43 -0
  6. package/application/factory.js +147 -0
  7. package/constants.d.ts +46 -0
  8. package/constants.js +53 -0
  9. package/context/creator.d.ts +9 -0
  10. package/context/creator.js +32 -0
  11. package/context/execution-host.d.ts +16 -0
  12. package/context/execution-host.js +30 -0
  13. package/context/external/creator.d.ts +63 -0
  14. package/context/external/creator.js +159 -0
  15. package/context/external/proxy.d.ts +5 -0
  16. package/context/external/proxy.js +19 -0
  17. package/decorators/apply.decorator.d.ts +10 -0
  18. package/decorators/apply.decorator.js +24 -0
  19. package/decorators/bind.decorator.d.ts +11 -0
  20. package/decorators/bind.decorator.js +20 -0
  21. package/decorators/catch.decorator.d.ts +17 -0
  22. package/decorators/catch.decorator.js +26 -0
  23. package/decorators/create-param.decorator.d.ts +29 -0
  24. package/decorators/create-param.decorator.js +51 -0
  25. package/decorators/dependencies.decorator.d.ts +6 -0
  26. package/decorators/dependencies.decorator.js +17 -0
  27. package/decorators/exception-filters.decorator.d.ts +21 -0
  28. package/decorators/exception-filters.decorator.js +41 -0
  29. package/decorators/global.decorator.d.ts +10 -0
  30. package/decorators/global.decorator.js +19 -0
  31. package/decorators/index.d.ts +15 -0
  32. package/decorators/index.js +31 -0
  33. package/decorators/inject.decorator.d.ts +26 -0
  34. package/decorators/inject.decorator.js +45 -0
  35. package/decorators/injectable.decorator.d.ts +40 -0
  36. package/decorators/injectable.decorator.js +51 -0
  37. package/decorators/module.decorator.d.ts +14 -0
  38. package/decorators/module.decorator.js +38 -0
  39. package/decorators/optional.decorator.d.ts +14 -0
  40. package/decorators/optional.decorator.js +30 -0
  41. package/decorators/set-metadata.decorator.d.ts +18 -0
  42. package/decorators/set-metadata.decorator.js +30 -0
  43. package/decorators/use-guards.decorator.d.ts +21 -0
  44. package/decorators/use-guards.decorator.js +40 -0
  45. package/decorators/use-interceptors.decorator.d.ts +21 -0
  46. package/decorators/use-interceptors.decorator.js +40 -0
  47. package/decorators/use-pipes.decorator.d.ts +21 -0
  48. package/decorators/use-pipes.decorator.js +39 -0
  49. package/discovery/meta-host-collection.d.ts +32 -0
  50. package/discovery/meta-host-collection.js +79 -0
  51. package/discovery/module.d.ts +5 -0
  52. package/discovery/module.js +24 -0
  53. package/discovery/service.d.ts +68 -0
  54. package/discovery/service.js +90 -0
  55. package/errors/exceptions/circular-dependency.exception.d.ts +4 -0
  56. package/errors/exceptions/circular-dependency.exception.js +11 -0
  57. package/errors/exceptions/index.d.ts +8 -0
  58. package/errors/exceptions/index.js +24 -0
  59. package/errors/exceptions/invalid-class-module.exception.d.ts +4 -0
  60. package/errors/exceptions/invalid-class-module.exception.js +11 -0
  61. package/errors/exceptions/invalid-class-scope.exception.d.ts +5 -0
  62. package/errors/exceptions/invalid-class-scope.exception.js +14 -0
  63. package/errors/exceptions/invalid-class.exception.d.ts +4 -0
  64. package/errors/exceptions/invalid-class.exception.js +11 -0
  65. package/errors/exceptions/invalid-exception-filter.exception.d.ts +4 -0
  66. package/errors/exceptions/invalid-exception-filter.exception.js +11 -0
  67. package/errors/exceptions/invalid-module.exception.d.ts +4 -0
  68. package/errors/exceptions/invalid-module.exception.js +11 -0
  69. package/errors/exceptions/runtime.exception.d.ts +4 -0
  70. package/errors/exceptions/runtime.exception.js +12 -0
  71. package/errors/exceptions/undefined-dependency.exception.d.ts +6 -0
  72. package/errors/exceptions/undefined-dependency.exception.js +11 -0
  73. package/errors/exceptions/undefined-forwardref.exception.d.ts +5 -0
  74. package/errors/exceptions/undefined-forwardref.exception.js +11 -0
  75. package/errors/exceptions/undefined-module.exception.d.ts +4 -0
  76. package/errors/exceptions/undefined-module.exception.js +11 -0
  77. package/errors/exceptions/unknown-dependencies.exception.d.ts +16 -0
  78. package/errors/exceptions/unknown-dependencies.exception.js +15 -0
  79. package/errors/exceptions/unknown-element.exception.d.ts +4 -0
  80. package/errors/exceptions/unknown-element.exception.js +12 -0
  81. package/errors/exceptions/unknown-export.exception.d.ts +4 -0
  82. package/errors/exceptions/unknown-export.exception.js +11 -0
  83. package/errors/exceptions/unknown-module.exception.d.ts +4 -0
  84. package/errors/exceptions/unknown-module.exception.js +10 -0
  85. package/errors/messages.d.ts +15 -0
  86. package/errors/messages.js +126 -0
  87. package/exceptions/external/filter-context.d.ts +10 -0
  88. package/exceptions/external/filter-context.js +37 -0
  89. package/exceptions/external/filter.d.ts +5 -0
  90. package/exceptions/external/filter.js +16 -0
  91. package/exceptions/external/handler.d.ts +9 -0
  92. package/exceptions/external/handler.js +31 -0
  93. package/exceptions/filter-context.d.ts +14 -0
  94. package/exceptions/filter-context.js +55 -0
  95. package/exceptions/select-exception-filter-metadata.d.ts +2 -0
  96. package/exceptions/select-exception-filter-metadata.js +6 -0
  97. package/exceptions/zone/handler.d.ts +5 -0
  98. package/exceptions/zone/handler.js +15 -0
  99. package/exceptions/zone/zone.d.ts +5 -0
  100. package/exceptions/zone/zone.js +32 -0
  101. package/guards/consumer.d.ts +9 -0
  102. package/guards/consumer.js +33 -0
  103. package/guards/context-creator.d.ts +17 -0
  104. package/guards/context-creator.js +69 -0
  105. package/guards/index.d.ts +2 -0
  106. package/guards/index.js +18 -0
  107. package/helpers/color.helper.d.ts +9 -0
  108. package/helpers/color.helper.js +14 -0
  109. package/helpers/context-id-factory.helper.d.ts +2 -0
  110. package/helpers/context-id-factory.helper.js +15 -0
  111. package/helpers/context.helper.d.ts +23 -0
  112. package/helpers/context.helper.js +49 -0
  113. package/helpers/extends-metadata.helper.d.ts +1 -0
  114. package/helpers/extends-metadata.helper.js +9 -0
  115. package/helpers/flatten.helper.d.ts +1 -0
  116. package/helpers/flatten.helper.js +9 -0
  117. package/helpers/messages.helper.d.ts +2 -0
  118. package/helpers/messages.helper.js +7 -0
  119. package/helpers/noop.helper.d.ts +1 -0
  120. package/helpers/noop.helper.js +5 -0
  121. package/helpers/random-string-generator.helper.d.ts +1 -0
  122. package/helpers/random-string-generator.helper.js +6 -0
  123. package/helpers/rethrow.helper.d.ts +1 -0
  124. package/helpers/rethrow.helper.js +7 -0
  125. package/helpers/shared.helper.d.ts +10 -0
  126. package/helpers/shared.helper.js +33 -0
  127. package/helpers/silent.helper.d.ts +10 -0
  128. package/helpers/silent.helper.js +18 -0
  129. package/helpers/transient.helper.d.ts +12 -0
  130. package/helpers/transient.helper.js +26 -0
  131. package/helpers/uuid.helper.d.ts +15 -0
  132. package/helpers/uuid.helper.js +54 -0
  133. package/helpers/validate-each.helper.d.ts +8 -0
  134. package/helpers/validate-each.helper.js +25 -0
  135. package/hooks/before-app-shutdown.hook.d.ts +9 -0
  136. package/hooks/before-app-shutdown.hook.js +45 -0
  137. package/hooks/index.d.ts +5 -0
  138. package/hooks/index.js +21 -0
  139. package/hooks/on-app-bootstrap.hook.d.ts +8 -0
  140. package/hooks/on-app-bootstrap.hook.js +45 -0
  141. package/hooks/on-app-shutdown.hook.d.ts +9 -0
  142. package/hooks/on-app-shutdown.hook.js +46 -0
  143. package/hooks/on-module-destroy.hook.d.ts +8 -0
  144. package/hooks/on-module-destroy.hook.js +45 -0
  145. package/hooks/on-module-init.hook.d.ts +8 -0
  146. package/hooks/on-module-init.hook.js +45 -0
  147. package/index.d.ts +10 -0
  148. package/index.js +32 -0
  149. package/injector/constants.d.ts +2 -0
  150. package/injector/constants.js +7 -0
  151. package/injector/container.d.ts +61 -0
  152. package/injector/container.js +194 -0
  153. package/injector/helpers/class-scope.helper.d.ts +2 -0
  154. package/injector/helpers/class-scope.helper.js +9 -0
  155. package/injector/helpers/classifier.helper.d.ts +4 -0
  156. package/injector/helpers/classifier.helper.js +17 -0
  157. package/injector/helpers/is-durable.helper.d.ts +2 -0
  158. package/injector/helpers/is-durable.helper.js +9 -0
  159. package/injector/index.d.ts +5 -0
  160. package/injector/index.js +20 -0
  161. package/injector/injector.d.ts +87 -0
  162. package/injector/injector.js +452 -0
  163. package/injector/instance/links-host.d.ts +22 -0
  164. package/injector/instance/links-host.js +50 -0
  165. package/injector/instance/loader.d.ts +21 -0
  166. package/injector/instance/loader.js +73 -0
  167. package/injector/instance/resolver.d.ts +16 -0
  168. package/injector/instance/resolver.js +43 -0
  169. package/injector/instance/wrapper.d.ts +90 -0
  170. package/injector/instance/wrapper.js +272 -0
  171. package/injector/internal-core-module/core-providers.d.ts +4 -0
  172. package/injector/internal-core-module/core-providers.js +21 -0
  173. package/injector/internal-core-module/internal-core-module-factory.d.ts +8 -0
  174. package/injector/internal-core-module/internal-core-module-factory.js +42 -0
  175. package/injector/internal-core-module/internal-core-module.d.ts +4 -0
  176. package/injector/internal-core-module/internal-core-module.js +31 -0
  177. package/injector/module/compiler.d.ts +19 -0
  178. package/injector/module/compiler.js +27 -0
  179. package/injector/module/container.d.ts +6 -0
  180. package/injector/module/container.js +24 -0
  181. package/injector/module/lazy/loader.d.ts +21 -0
  182. package/injector/module/lazy/loader.js +49 -0
  183. package/injector/module/lazy/options.d.ts +6 -0
  184. package/injector/module/lazy/options.js +2 -0
  185. package/injector/module/module.d.ts +74 -0
  186. package/injector/module/module.js +383 -0
  187. package/injector/module/ref.d.ts +106 -0
  188. package/injector/module/ref.js +62 -0
  189. package/injector/module/token-factory.d.ts +13 -0
  190. package/injector/module/token-factory.js +71 -0
  191. package/injector/settlement-signal.d.ts +37 -0
  192. package/injector/settlement-signal.js +55 -0
  193. package/inspector/graph-inspector.d.ts +26 -0
  194. package/inspector/graph-inspector.js +163 -0
  195. package/inspector/initialize-on-preview.allowlist.d.ts +6 -0
  196. package/inspector/initialize-on-preview.allowlist.js +13 -0
  197. package/inspector/interfaces/edge.interface.d.ts +28 -0
  198. package/inspector/interfaces/edge.interface.js +2 -0
  199. package/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts +12 -0
  200. package/inspector/interfaces/enhancer-metadata-cache-entry.interface.js +2 -0
  201. package/inspector/interfaces/entrypoint.interface.d.ts +10 -0
  202. package/inspector/interfaces/entrypoint.interface.js +2 -0
  203. package/inspector/interfaces/extras.interface.d.ts +18 -0
  204. package/inspector/interfaces/extras.interface.js +2 -0
  205. package/inspector/interfaces/node.interface.d.ts +49 -0
  206. package/inspector/interfaces/node.interface.js +2 -0
  207. package/inspector/interfaces/serialized-graph-json.interface.d.ts +14 -0
  208. package/inspector/interfaces/serialized-graph-json.interface.js +2 -0
  209. package/inspector/interfaces/serialized-graph-metadata.interface.d.ts +10 -0
  210. package/inspector/interfaces/serialized-graph-metadata.interface.js +2 -0
  211. package/inspector/noop-graph-inspector.d.ts +2 -0
  212. package/inspector/noop-graph-inspector.js +8 -0
  213. package/inspector/partial-graph.host.d.ts +7 -0
  214. package/inspector/partial-graph.host.js +15 -0
  215. package/inspector/serialized-graph.d.ts +52 -0
  216. package/inspector/serialized-graph.js +121 -0
  217. package/interceptors/consumer.d.ts +9 -0
  218. package/interceptors/consumer.js +37 -0
  219. package/interceptors/context-creator.d.ts +17 -0
  220. package/interceptors/context-creator.js +67 -0
  221. package/interceptors/index.d.ts +2 -0
  222. package/interceptors/index.js +18 -0
  223. package/interfaces/abstract.interface.d.ts +3 -0
  224. package/interfaces/abstract.interface.js +2 -0
  225. package/interfaces/application/context-options.interface.d.ts +41 -0
  226. package/interfaces/application/context-options.interface.js +9 -0
  227. package/interfaces/application/context.interface.d.ts +162 -0
  228. package/interfaces/application/context.interface.js +2 -0
  229. package/interfaces/application/index.d.ts +1 -0
  230. package/interfaces/application/index.js +17 -0
  231. package/interfaces/context/arguments-host.interface.d.ts +22 -0
  232. package/interfaces/context/arguments-host.interface.js +2 -0
  233. package/interfaces/context/execution.interface.d.ts +18 -0
  234. package/interfaces/context/execution.interface.js +2 -0
  235. package/interfaces/features/exception-filter.interface.d.ts +21 -0
  236. package/interfaces/features/exception-filter.interface.js +2 -0
  237. package/interfaces/features/guards.interface.d.ts +20 -0
  238. package/interfaces/features/guards.interface.js +2 -0
  239. package/interfaces/features/interceptor.interface.d.ts +30 -0
  240. package/interfaces/features/interceptor.interface.js +2 -0
  241. package/interfaces/features/pipes.interface.d.ts +37 -0
  242. package/interfaces/features/pipes.interface.js +2 -0
  243. package/interfaces/helper.interface.d.ts +3 -0
  244. package/interfaces/helper.interface.js +2 -0
  245. package/interfaces/hooks/before-application-shutdown.interface.d.ts +3 -0
  246. package/interfaces/hooks/before-application-shutdown.interface.js +2 -0
  247. package/interfaces/hooks/index.d.ts +5 -0
  248. package/interfaces/hooks/index.js +21 -0
  249. package/interfaces/hooks/on-application-bootstrap.interface.d.ts +9 -0
  250. package/interfaces/hooks/on-application-bootstrap.interface.js +2 -0
  251. package/interfaces/hooks/on-application-shutdown.interface.d.ts +9 -0
  252. package/interfaces/hooks/on-application-shutdown.interface.js +2 -0
  253. package/interfaces/hooks/on-destroy.interface.d.ts +10 -0
  254. package/interfaces/hooks/on-destroy.interface.js +2 -0
  255. package/interfaces/hooks/on-init.interface.d.ts +8 -0
  256. package/interfaces/hooks/on-init.interface.js +2 -0
  257. package/interfaces/index.d.ts +6 -0
  258. package/interfaces/index.js +22 -0
  259. package/interfaces/injectable.interface.d.ts +1 -0
  260. package/interfaces/injectable.interface.js +2 -0
  261. package/interfaces/modules/configurable/async-options.interface.d.ts +42 -0
  262. package/interfaces/modules/configurable/async-options.interface.js +2 -0
  263. package/interfaces/modules/configurable/cls.interface.d.ts +13 -0
  264. package/interfaces/modules/configurable/cls.interface.js +2 -0
  265. package/interfaces/modules/configurable/host.interface.d.ts +62 -0
  266. package/interfaces/modules/configurable/host.interface.js +2 -0
  267. package/interfaces/modules/configurable/index.d.ts +3 -0
  268. package/interfaces/modules/configurable/index.js +19 -0
  269. package/interfaces/modules/definition.interface.d.ts +4 -0
  270. package/interfaces/modules/definition.interface.js +2 -0
  271. package/interfaces/modules/dynamic-module.interface.d.ts +23 -0
  272. package/interfaces/modules/dynamic-module.interface.js +2 -0
  273. package/interfaces/modules/forward-reference.interface.d.ts +3 -0
  274. package/interfaces/modules/forward-reference.interface.js +2 -0
  275. package/interfaces/modules/index.d.ts +9 -0
  276. package/interfaces/modules/index.js +25 -0
  277. package/interfaces/modules/injection-token.interface.d.ts +5 -0
  278. package/interfaces/modules/injection-token.interface.js +2 -0
  279. package/interfaces/modules/introspection-result.interface.d.ts +10 -0
  280. package/interfaces/modules/introspection-result.interface.js +2 -0
  281. package/interfaces/modules/module-metadata.interface.d.ts +24 -0
  282. package/interfaces/modules/module-metadata.interface.js +2 -0
  283. package/interfaces/modules/module.interface.d.ts +2 -0
  284. package/interfaces/modules/module.interface.js +2 -0
  285. package/interfaces/modules/optional-factory-dependency.interface.d.ts +8 -0
  286. package/interfaces/modules/optional-factory-dependency.interface.js +2 -0
  287. package/interfaces/modules/override.interface.d.ts +5 -0
  288. package/interfaces/modules/override.interface.js +2 -0
  289. package/interfaces/modules/provider.interface.d.ts +142 -0
  290. package/interfaces/modules/provider.interface.js +2 -0
  291. package/interfaces/scope.interface.d.ts +35 -0
  292. package/interfaces/scope.interface.js +23 -0
  293. package/interfaces/type.interface.d.ts +3 -0
  294. package/interfaces/type.interface.js +2 -0
  295. package/metadata-scanner.d.ts +4 -0
  296. package/metadata-scanner.js +34 -0
  297. package/module/configurable-module.builder.d.ts +93 -0
  298. package/module/configurable-module.builder.js +204 -0
  299. package/module/constants.d.ts +4 -0
  300. package/module/constants.js +7 -0
  301. package/module/helpers/generate-options-injection-token.helper.d.ts +1 -0
  302. package/module/helpers/generate-options-injection-token.helper.js +9 -0
  303. package/module/helpers/get-injection-providers.helper.d.ts +8 -0
  304. package/module/helpers/get-injection-providers.helper.js +36 -0
  305. package/module/helpers/index.d.ts +2 -0
  306. package/module/helpers/index.js +18 -0
  307. package/module/index.d.ts +2 -0
  308. package/module/index.js +18 -0
  309. package/package.json +35 -0
  310. package/pipes/consumer.d.ts +9 -0
  311. package/pipes/consumer.js +15 -0
  312. package/pipes/context-creator.d.ts +18 -0
  313. package/pipes/context-creator.js +70 -0
  314. package/pipes/index.d.ts +2 -0
  315. package/pipes/index.js +18 -0
  316. package/scanner.d.ts +81 -0
  317. package/scanner.js +374 -0
  318. package/services/console.service.d.ts +86 -0
  319. package/services/console.service.js +233 -0
  320. package/services/index.d.ts +1 -0
  321. package/services/index.js +17 -0
  322. package/services/logger.service.d.ts +157 -0
  323. package/services/logger.service.js +269 -0
  324. package/services/reflector.service.d.ts +110 -0
  325. package/services/reflector.service.js +87 -0
  326. package/test/context/execution-host.spec.d.ts +1 -0
  327. package/test/context/execution-host.spec.js +31 -0
  328. package/test/context/external/creator.spec.d.ts +1 -0
  329. package/test/context/external/creator.spec.js +149 -0
  330. package/test/context/external/proxy.spec.d.ts +1 -0
  331. package/test/context/external/proxy.spec.js +45 -0
  332. package/test/exceptions/external/handler.spec.d.ts +1 -0
  333. package/test/exceptions/external/handler.spec.js +89 -0
  334. package/test/exceptions/filter-context.spec.d.ts +2 -0
  335. package/test/exceptions/filter-context.spec.js +91 -0
  336. package/test/exceptions/messages.spec.d.ts +0 -0
  337. package/test/exceptions/messages.spec.js +201 -0
  338. package/test/exceptions/zona/handler.spec.d.ts +1 -0
  339. package/test/exceptions/zona/handler.spec.js +51 -0
  340. package/test/exceptions/zona/zone.spec.d.ts +1 -0
  341. package/test/exceptions/zona/zone.spec.js +66 -0
  342. package/test/guards/consumer.spec.d.ts +1 -0
  343. package/test/guards/consumer.spec.js +47 -0
  344. package/test/guards/context-creator.spec.d.ts +1 -0
  345. package/test/guards/context-creator.spec.js +138 -0
  346. package/test/helpers/context-id-factory.spec.d.ts +1 -0
  347. package/test/helpers/context-id-factory.spec.js +9 -0
  348. package/test/helpers/shared.spec.d.ts +1 -0
  349. package/test/helpers/shared.spec.js +122 -0
  350. package/test/hooks/before-app-shutdown.hook.spec.d.ts +1 -0
  351. package/test/hooks/before-app-shutdown.hook.spec.js +44 -0
  352. package/test/hooks/on-app-bootstrap.hook.spec.d.ts +1 -0
  353. package/test/hooks/on-app-bootstrap.hook.spec.js +43 -0
  354. package/test/hooks/on-app-shutdown.hook.spec.d.ts +1 -0
  355. package/test/hooks/on-app-shutdown.hook.spec.js +43 -0
  356. package/test/hooks/on-module-destroy.hook.spec.d.ts +1 -0
  357. package/test/hooks/on-module-destroy.hook.spec.js +43 -0
  358. package/test/hooks/on-module-init.hook.spec.d.ts +1 -0
  359. package/test/hooks/on-module-init.hook.spec.js +43 -0
  360. package/test/injector/compiler.spec.d.ts +1 -0
  361. package/test/injector/compiler.spec.js +42 -0
  362. package/test/injector/container.spec.d.ts +1 -0
  363. package/test/injector/container.spec.js +203 -0
  364. package/test/injector/helpers/classifier.spec.d.ts +1 -0
  365. package/test/injector/helpers/classifier.spec.js +102 -0
  366. package/test/injector/injector.spec.d.ts +1 -0
  367. package/test/injector/injector.spec.js +678 -0
  368. package/test/injector/instance/loader.spec.d.ts +1 -0
  369. package/test/injector/instance/loader.spec.js +108 -0
  370. package/test/injector/instance/wrapper.spec.d.ts +1 -0
  371. package/test/injector/instance/wrapper.spec.js +772 -0
  372. package/test/injector/internal-core-module/internal-core-module-factory.spec.d.ts +1 -0
  373. package/test/injector/internal-core-module/internal-core-module-factory.spec.js +27 -0
  374. package/test/injector/module/lazy/loader.spec.d.ts +1 -0
  375. package/test/injector/module/lazy/loader.spec.js +71 -0
  376. package/test/injector/module/module.spec.d.ts +1 -0
  377. package/test/injector/module/module.spec.js +410 -0
  378. package/test/injector/module/token-factory.spec.d.ts +1 -0
  379. package/test/injector/module/token-factory.spec.js +84 -0
  380. package/test/interceptors/consumer.spec.d.ts +1 -0
  381. package/test/interceptors/consumer.spec.js +136 -0
  382. package/test/interceptors/context-creator.spec.d.ts +1 -0
  383. package/test/interceptors/context-creator.spec.js +139 -0
  384. package/test/metadata-scanner.spec.d.ts +1 -0
  385. package/test/metadata-scanner.spec.js +41 -0
  386. package/test/module/configurable-module.builder.spec.d.ts +1 -0
  387. package/test/module/configurable-module.builder.spec.js +102 -0
  388. package/test/module/helpers/get-injection-providers.helper.spec.d.ts +1 -0
  389. package/test/module/helpers/get-injection-providers.helper.spec.js +49 -0
  390. package/test/pipes/consumer.spec.d.ts +1 -0
  391. package/test/pipes/consumer.spec.js +42 -0
  392. package/test/pipes/context-creator.spec.d.ts +1 -0
  393. package/test/pipes/context-creator.spec.js +108 -0
  394. package/test/scanner.spec.d.ts +1 -0
  395. package/test/scanner.spec.js +620 -0
  396. package/test/services/logger.service.spec.d.ts +1 -0
  397. package/test/services/logger.service.spec.js +487 -0
  398. package/test/services/reflector.service.spec.d.ts +1 -0
  399. package/test/services/reflector.service.spec.js +105 -0
  400. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InstanceLoader = void 0;
4
+ const logger_service_1 = require("@venok/core/services/logger.service");
5
+ const internal_core_module_1 = require("@venok/core/injector/internal-core-module/internal-core-module");
6
+ const messages_helper_1 = require("@venok/core/helpers/messages.helper");
7
+ class InstanceLoader {
8
+ constructor(container, injector, graphInspector, logger = new logger_service_1.Logger(InstanceLoader.name, {
9
+ timestamp: true,
10
+ })) {
11
+ this.container = container;
12
+ this.injector = injector;
13
+ this.graphInspector = graphInspector;
14
+ this.logger = logger;
15
+ }
16
+ setLogger(logger) {
17
+ this.logger = logger;
18
+ }
19
+ async createInstancesOfDependencies(modules = this.container.getModules()) {
20
+ this.createPrototypes(modules);
21
+ try {
22
+ await this.createInstances(modules);
23
+ }
24
+ catch (err) {
25
+ this.graphInspector.inspectModules(modules);
26
+ this.graphInspector.registerPartial(err);
27
+ throw err;
28
+ }
29
+ this.graphInspector.inspectModules(modules);
30
+ }
31
+ createPrototypes(modules) {
32
+ modules.forEach((moduleRef) => {
33
+ this.createPrototypesOfProviders(moduleRef);
34
+ this.createPrototypesOfInjectables(moduleRef);
35
+ });
36
+ }
37
+ async createInstances(modules) {
38
+ await Promise.all([...modules.values()].map(async (moduleRef) => {
39
+ await this.createInstancesOfProviders(moduleRef);
40
+ await this.createInstancesOfInjectables(moduleRef);
41
+ const { name } = moduleRef;
42
+ this.isModuleWhitelisted(name) && this.logger.log((0, messages_helper_1.MODULE_INIT_MESSAGE) `${name}`);
43
+ }));
44
+ }
45
+ createPrototypesOfProviders(moduleRef) {
46
+ const { providers } = moduleRef;
47
+ providers.forEach((wrapper) => this.injector.loadPrototype(wrapper, providers));
48
+ }
49
+ async createInstancesOfProviders(moduleRef) {
50
+ const { providers } = moduleRef;
51
+ const wrappers = [...providers.values()];
52
+ await Promise.all(wrappers.map(async (item) => {
53
+ await this.injector.loadProvider(item, moduleRef);
54
+ this.graphInspector.inspectInstanceWrapper(item, moduleRef);
55
+ }));
56
+ }
57
+ createPrototypesOfInjectables(moduleRef) {
58
+ const { injectables } = moduleRef;
59
+ injectables.forEach((wrapper) => this.injector.loadPrototype(wrapper, injectables));
60
+ }
61
+ async createInstancesOfInjectables(moduleRef) {
62
+ const { injectables } = moduleRef;
63
+ const wrappers = [...injectables.values()];
64
+ await Promise.all(wrappers.map(async (item) => {
65
+ await this.injector.loadInjectable(item, moduleRef);
66
+ this.graphInspector.inspectInstanceWrapper(item, moduleRef);
67
+ }));
68
+ }
69
+ isModuleWhitelisted(name) {
70
+ return name !== internal_core_module_1.InternalCoreModule.name;
71
+ }
72
+ }
73
+ exports.InstanceLoader = InstanceLoader;
@@ -0,0 +1,16 @@
1
+ import { Injector } from "@venok/core/injector/injector";
2
+ import { Abstract, Type } from "@venok/core/interfaces";
3
+ import { Module } from "@venok/core/injector/module/module";
4
+ import { ContextId } from "@venok/core/injector/instance/wrapper";
5
+ import { InstanceLinksHost } from "@venok/core/injector/instance/links-host";
6
+ import { GetOrResolveOptions } from "@venok/core/interfaces/application/context.interface";
7
+ export declare abstract class AbstractInstanceResolver {
8
+ protected abstract instanceLinksHost: InstanceLinksHost;
9
+ protected abstract injector: Injector;
10
+ protected abstract get<TInput = any, TResult = TInput>(typeOrToken: Type<TInput> | Function | string | symbol, options?: GetOrResolveOptions): TResult | Array<TResult>;
11
+ protected find<TInput = any, TResult = TInput>(typeOrToken: Type<TInput> | Abstract<TInput> | string | symbol, options: {
12
+ moduleId?: string;
13
+ each?: boolean;
14
+ }): TResult | Array<TResult>;
15
+ protected resolvePerContext<TInput = any, TResult = TInput>(typeOrToken: Type<TInput> | Abstract<TInput> | string | symbol, contextModule: Module, contextId: ContextId, options?: GetOrResolveOptions): Promise<TResult | Array<TResult>>;
16
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractInstanceResolver = void 0;
4
+ const interfaces_1 = require("@venok/core/interfaces");
5
+ const exceptions_1 = require("@venok/core/errors/exceptions");
6
+ class AbstractInstanceResolver {
7
+ find(typeOrToken, options) {
8
+ const instanceLinkOrArray = this.instanceLinksHost.get(typeOrToken, options);
9
+ const pluckInstance = ({ wrapperRef }) => {
10
+ if (wrapperRef.scope === interfaces_1.Scope.REQUEST || wrapperRef.scope === interfaces_1.Scope.TRANSIENT)
11
+ throw new exceptions_1.InvalidClassScopeException(typeOrToken);
12
+ return wrapperRef.instance;
13
+ };
14
+ if (Array.isArray(instanceLinkOrArray))
15
+ return instanceLinkOrArray.map(pluckInstance);
16
+ return pluckInstance(instanceLinkOrArray);
17
+ }
18
+ async resolvePerContext(typeOrToken, contextModule, contextId, options) {
19
+ const instanceLinkOrArray = options?.strict
20
+ ? this.instanceLinksHost.get(typeOrToken, {
21
+ moduleId: contextModule.id,
22
+ each: options.each,
23
+ })
24
+ : this.instanceLinksHost.get(typeOrToken, {
25
+ each: options?.each ? options.each : false,
26
+ });
27
+ const pluckInstance = async (instanceLink) => {
28
+ const { wrapperRef, collection } = instanceLink;
29
+ if (wrapperRef.isDependencyTreeStatic() && !wrapperRef.isTransient)
30
+ return this.get(typeOrToken, { strict: options?.strict });
31
+ const ctorHost = wrapperRef.instance || { constructor: typeOrToken };
32
+ const instance = await this.injector.loadPerContext(ctorHost, wrapperRef.host, collection, contextId, wrapperRef);
33
+ if (!instance)
34
+ throw new exceptions_1.UnknownElementException();
35
+ return instance;
36
+ };
37
+ if (Array.isArray(instanceLinkOrArray)) {
38
+ return Promise.all(instanceLinkOrArray.map((instanceLink) => pluckInstance(instanceLink)));
39
+ }
40
+ return pluckInstance(instanceLinkOrArray);
41
+ }
42
+ }
43
+ exports.AbstractInstanceResolver = AbstractInstanceResolver;
@@ -0,0 +1,90 @@
1
+ import { FactoryProvider, InjectionToken, Provider } from "@venok/core/interfaces/modules";
2
+ import { Module } from "@venok/core/injector/module/module";
3
+ import { EnhancerSubtype } from "@venok/core/constants";
4
+ import { Scope, Type } from "@venok/core/interfaces";
5
+ import { SettlementSignal } from "@venok/core/injector/settlement-signal";
6
+ export declare const INSTANCE_METADATA_SYMBOL: unique symbol;
7
+ export declare const INSTANCE_ID_SYMBOL: unique symbol;
8
+ export interface HostComponentInfo {
9
+ /**
10
+ * Injection token (or class reference)
11
+ */
12
+ token: InjectionToken;
13
+ /**
14
+ * Flag that indicates whether DI subtree is durable
15
+ */
16
+ isTreeDurable: boolean;
17
+ }
18
+ export interface ContextId {
19
+ readonly id: number;
20
+ payload?: unknown;
21
+ getParent?(info: HostComponentInfo): ContextId;
22
+ }
23
+ export interface InstancePerContext<T> {
24
+ instance: T | undefined;
25
+ isResolved?: boolean;
26
+ isPending?: boolean;
27
+ donePromise?: Promise<unknown>;
28
+ [INSTANCE_ID_SYMBOL]?: string;
29
+ }
30
+ export interface PropertyMetadata {
31
+ key: symbol | string;
32
+ wrapper: InstanceWrapper;
33
+ }
34
+ export declare class InstanceWrapper<T = any> {
35
+ readonly isAlias: boolean;
36
+ scope?: Scope;
37
+ readonly name: string;
38
+ readonly token: InjectionToken;
39
+ readonly async?: boolean;
40
+ readonly host?: Module;
41
+ readonly subtype?: EnhancerSubtype;
42
+ metatype?: Type<T> | Function | null;
43
+ inject?: FactoryProvider["inject"] | null;
44
+ forwardRef?: boolean;
45
+ durable?: boolean;
46
+ initTime?: number;
47
+ settlementSignal?: SettlementSignal;
48
+ private static logger;
49
+ private readonly values;
50
+ private readonly [INSTANCE_METADATA_SYMBOL];
51
+ private readonly [INSTANCE_ID_SYMBOL];
52
+ private transientMap;
53
+ private isTreeStatic;
54
+ private isTreeDurable;
55
+ constructor(metadata?: Partial<InstanceWrapper<T>> & Partial<InstancePerContext<T>>);
56
+ get id(): string;
57
+ set instance(value: T);
58
+ get instance(): T | undefined;
59
+ get isNotMetatype(): boolean;
60
+ get isFactory(): boolean;
61
+ get isTransient(): boolean;
62
+ getInstanceByContextId(contextId: ContextId, inquirerId?: string): InstancePerContext<T>;
63
+ getInstanceByInquirerId(contextId: ContextId, inquirerId: string): InstancePerContext<T>;
64
+ setInstanceByContextId(contextId: ContextId, value: InstancePerContext<T>, inquirerId?: string): void;
65
+ setInstanceByInquirerId(contextId: ContextId, inquirerId: string, value: InstancePerContext<T>): void;
66
+ addCtorMetadata(index: number, wrapper: InstanceWrapper): void;
67
+ getCtorMetadata(): InstanceWrapper[];
68
+ addPropertiesMetadata(key: symbol | string, wrapper: InstanceWrapper): void;
69
+ getPropertiesMetadata(): PropertyMetadata[];
70
+ addEnhancerMetadata(wrapper: InstanceWrapper): void;
71
+ getEnhancersMetadata(): InstanceWrapper[];
72
+ isDependencyTreeDurable(lookupRegistry?: string[]): boolean;
73
+ introspectDepsAttribute(callback: (collection: InstanceWrapper[], lookupRegistry: string[]) => boolean, lookupRegistry?: string[]): boolean;
74
+ isDependencyTreeStatic(lookupRegistry?: string[]): boolean;
75
+ cloneStaticInstance(contextId: ContextId): InstancePerContext<T>;
76
+ cloneTransientInstance(contextId: ContextId, inquirerId: string): InstancePerContext<T>;
77
+ createPrototype(contextId: ContextId): any;
78
+ isInRequestScope(contextId: ContextId, inquirer?: InstanceWrapper | undefined): boolean;
79
+ isLazyTransient(contextId: ContextId, inquirer: InstanceWrapper | undefined): boolean;
80
+ isExplicitlyRequested(contextId: ContextId, inquirer?: InstanceWrapper): boolean;
81
+ isStatic(contextId: ContextId, inquirer: InstanceWrapper | undefined): boolean;
82
+ getStaticTransientInstances(): InstancePerContext<T>[];
83
+ mergeWith(provider: Provider): void;
84
+ private isNewable;
85
+ private initialize;
86
+ private printIntrospectedAsRequestScoped;
87
+ private printIntrospectedAsDurable;
88
+ private isDebugMode;
89
+ private generateUuid;
90
+ }
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.InstanceWrapper = exports.INSTANCE_ID_SYMBOL = exports.INSTANCE_METADATA_SYMBOL = void 0;
5
+ const interfaces_1 = require("@venok/core/interfaces");
6
+ const constants_1 = require("@venok/core/injector/constants");
7
+ const shared_helper_1 = require("@venok/core/helpers/shared.helper");
8
+ const uuid_helper_1 = require("@venok/core/helpers/uuid.helper");
9
+ const random_string_generator_helper_1 = require("@venok/core/helpers/random-string-generator.helper");
10
+ const color_helper_1 = require("@venok/core/helpers/color.helper");
11
+ const classifier_helper_1 = require("@venok/core/injector/helpers/classifier.helper");
12
+ const logger_service_1 = require("@venok/core/services/logger.service");
13
+ exports.INSTANCE_METADATA_SYMBOL = Symbol.for("instance_metadata:cache");
14
+ exports.INSTANCE_ID_SYMBOL = Symbol.for("instance_metadata:id");
15
+ class InstanceWrapper {
16
+ constructor(metadata = {}) {
17
+ this.isAlias = false;
18
+ this.scope = interfaces_1.Scope.DEFAULT;
19
+ this.values = new WeakMap();
20
+ this[_a] = {};
21
+ this.transientMap = new Map();
22
+ this.initialize(metadata);
23
+ this[exports.INSTANCE_ID_SYMBOL] = metadata[exports.INSTANCE_ID_SYMBOL] ?? this.generateUuid();
24
+ }
25
+ get id() {
26
+ return this[exports.INSTANCE_ID_SYMBOL];
27
+ }
28
+ set instance(value) {
29
+ this.values.set(constants_1.STATIC_CONTEXT, { instance: value });
30
+ }
31
+ get instance() {
32
+ const instancePerContext = this.getInstanceByContextId(constants_1.STATIC_CONTEXT);
33
+ return instancePerContext.instance;
34
+ }
35
+ get isNotMetatype() {
36
+ return !this.metatype || this.isFactory;
37
+ }
38
+ get isFactory() {
39
+ return !!(this.metatype && !(0, shared_helper_1.isNull)(this.inject));
40
+ }
41
+ get isTransient() {
42
+ return this.scope === interfaces_1.Scope.TRANSIENT;
43
+ }
44
+ getInstanceByContextId(contextId, inquirerId) {
45
+ if (this.scope === interfaces_1.Scope.TRANSIENT && inquirerId) {
46
+ return this.getInstanceByInquirerId(contextId, inquirerId);
47
+ }
48
+ const instancePerContext = this.values.get(contextId);
49
+ return instancePerContext ? instancePerContext : this.cloneStaticInstance(contextId);
50
+ }
51
+ getInstanceByInquirerId(contextId, inquirerId) {
52
+ let collectionPerContext = this.transientMap.get(inquirerId);
53
+ if (!collectionPerContext) {
54
+ collectionPerContext = new WeakMap();
55
+ this.transientMap.set(inquirerId, collectionPerContext);
56
+ }
57
+ const instancePerContext = collectionPerContext.get(contextId);
58
+ return instancePerContext ? instancePerContext : this.cloneTransientInstance(contextId, inquirerId);
59
+ }
60
+ setInstanceByContextId(contextId, value, inquirerId) {
61
+ if (this.scope === interfaces_1.Scope.TRANSIENT && inquirerId) {
62
+ return this.setInstanceByInquirerId(contextId, inquirerId, value);
63
+ }
64
+ this.values.set(contextId, value);
65
+ }
66
+ setInstanceByInquirerId(contextId, inquirerId, value) {
67
+ let collection = this.transientMap.get(inquirerId);
68
+ if (!collection) {
69
+ collection = new WeakMap();
70
+ this.transientMap.set(inquirerId, collection);
71
+ }
72
+ collection.set(contextId, value);
73
+ }
74
+ addCtorMetadata(index, wrapper) {
75
+ if (!this[exports.INSTANCE_METADATA_SYMBOL].dependencies) {
76
+ this[exports.INSTANCE_METADATA_SYMBOL].dependencies = [];
77
+ }
78
+ this[exports.INSTANCE_METADATA_SYMBOL].dependencies[index] = wrapper;
79
+ }
80
+ getCtorMetadata() {
81
+ return this[exports.INSTANCE_METADATA_SYMBOL].dependencies ?? [];
82
+ }
83
+ addPropertiesMetadata(key, wrapper) {
84
+ if (!this[exports.INSTANCE_METADATA_SYMBOL].properties) {
85
+ this[exports.INSTANCE_METADATA_SYMBOL].properties = [];
86
+ }
87
+ this[exports.INSTANCE_METADATA_SYMBOL].properties.push({
88
+ key,
89
+ wrapper,
90
+ });
91
+ }
92
+ getPropertiesMetadata() {
93
+ return this[exports.INSTANCE_METADATA_SYMBOL].properties ?? [];
94
+ }
95
+ addEnhancerMetadata(wrapper) {
96
+ if (!this[exports.INSTANCE_METADATA_SYMBOL].enhancers) {
97
+ this[exports.INSTANCE_METADATA_SYMBOL].enhancers = [];
98
+ }
99
+ this[exports.INSTANCE_METADATA_SYMBOL].enhancers.push(wrapper);
100
+ }
101
+ getEnhancersMetadata() {
102
+ return this[exports.INSTANCE_METADATA_SYMBOL].enhancers ?? [];
103
+ }
104
+ isDependencyTreeDurable(lookupRegistry = []) {
105
+ if (!(0, shared_helper_1.isUndefined)(this.isTreeDurable)) {
106
+ return this.isTreeDurable;
107
+ }
108
+ if (this.scope === interfaces_1.Scope.REQUEST) {
109
+ this.isTreeDurable = this.durable === undefined ? false : this.durable;
110
+ if (this.isTreeDurable) {
111
+ this.printIntrospectedAsDurable();
112
+ }
113
+ return this.isTreeDurable;
114
+ }
115
+ const isStatic = this.isDependencyTreeStatic();
116
+ if (isStatic)
117
+ return false;
118
+ const isTreeNonDurable = this.introspectDepsAttribute((collection, registry) => collection.some((item) => !item.isDependencyTreeStatic() && !item.isDependencyTreeDurable(registry)), lookupRegistry);
119
+ this.isTreeDurable = !isTreeNonDurable;
120
+ if (this.isTreeDurable)
121
+ this.printIntrospectedAsDurable();
122
+ return this.isTreeDurable;
123
+ }
124
+ introspectDepsAttribute(callback, lookupRegistry = []) {
125
+ if (lookupRegistry.includes(this[exports.INSTANCE_ID_SYMBOL])) {
126
+ return false;
127
+ }
128
+ lookupRegistry = lookupRegistry.concat(this[exports.INSTANCE_ID_SYMBOL]);
129
+ const { dependencies, properties, enhancers } = this[exports.INSTANCE_METADATA_SYMBOL];
130
+ let introspectionResult = dependencies ? callback(dependencies, lookupRegistry) : false;
131
+ if (introspectionResult || !(properties || enhancers))
132
+ return introspectionResult;
133
+ introspectionResult = properties
134
+ ? callback(properties.map((item) => item.wrapper), lookupRegistry)
135
+ : false;
136
+ if (introspectionResult || !enhancers)
137
+ return introspectionResult;
138
+ return enhancers ? callback(enhancers, lookupRegistry) : false;
139
+ }
140
+ isDependencyTreeStatic(lookupRegistry = []) {
141
+ if (!(0, shared_helper_1.isUndefined)(this.isTreeStatic))
142
+ return this.isTreeStatic;
143
+ if (this.scope === interfaces_1.Scope.REQUEST) {
144
+ this.isTreeStatic = false;
145
+ this.printIntrospectedAsRequestScoped();
146
+ return this.isTreeStatic;
147
+ }
148
+ this.isTreeStatic = !this.introspectDepsAttribute((collection, registry) => collection.some((item) => !item.isDependencyTreeStatic(registry)), lookupRegistry);
149
+ if (!this.isTreeStatic)
150
+ this.printIntrospectedAsRequestScoped();
151
+ return this.isTreeStatic;
152
+ }
153
+ cloneStaticInstance(contextId) {
154
+ const staticInstance = this.getInstanceByContextId(constants_1.STATIC_CONTEXT);
155
+ if (this.isDependencyTreeStatic())
156
+ return staticInstance;
157
+ const instancePerContext = {
158
+ ...staticInstance,
159
+ instance: undefined,
160
+ isResolved: false,
161
+ isPending: false,
162
+ };
163
+ if (this.isNewable())
164
+ instancePerContext.instance = Object.create(this.metatype.prototype);
165
+ this.setInstanceByContextId(contextId, instancePerContext);
166
+ return instancePerContext;
167
+ }
168
+ cloneTransientInstance(contextId, inquirerId) {
169
+ const staticInstance = this.getInstanceByContextId(constants_1.STATIC_CONTEXT);
170
+ const instancePerContext = {
171
+ ...staticInstance,
172
+ instance: undefined,
173
+ isResolved: false,
174
+ isPending: false,
175
+ };
176
+ if (this.isNewable()) {
177
+ instancePerContext.instance = Object.create(this.metatype.prototype);
178
+ }
179
+ this.setInstanceByInquirerId(contextId, inquirerId, instancePerContext);
180
+ return instancePerContext;
181
+ }
182
+ createPrototype(contextId) {
183
+ const host = this.getInstanceByContextId(contextId);
184
+ if (!this.isNewable() || host.isResolved)
185
+ return;
186
+ return Object.create(this.metatype.prototype);
187
+ }
188
+ isInRequestScope(contextId, inquirer) {
189
+ const isDependencyTreeStatic = this.isDependencyTreeStatic();
190
+ return (!isDependencyTreeStatic && contextId !== constants_1.STATIC_CONTEXT && (!this.isTransient || (this.isTransient && !!inquirer)));
191
+ }
192
+ isLazyTransient(contextId, inquirer) {
193
+ const isInquirerRequestScoped = inquirer && !inquirer.isDependencyTreeStatic();
194
+ return (this.isDependencyTreeStatic() && contextId !== constants_1.STATIC_CONTEXT && this.isTransient && !!isInquirerRequestScoped);
195
+ }
196
+ isExplicitlyRequested(contextId, inquirer) {
197
+ const isSelfRequested = inquirer === this;
198
+ return (this.isDependencyTreeStatic() &&
199
+ contextId !== constants_1.STATIC_CONTEXT &&
200
+ !!(isSelfRequested || (inquirer && inquirer.scope === interfaces_1.Scope.TRANSIENT)));
201
+ }
202
+ isStatic(contextId, inquirer) {
203
+ const isInquirerRequestScoped = inquirer && !inquirer.isDependencyTreeStatic();
204
+ const isStaticTransient = this.isTransient && !isInquirerRequestScoped;
205
+ return (this.isDependencyTreeStatic() &&
206
+ contextId === constants_1.STATIC_CONTEXT &&
207
+ (!this.isTransient || (isStaticTransient && !!inquirer && !inquirer.isTransient)));
208
+ }
209
+ getStaticTransientInstances() {
210
+ if (!this.transientMap)
211
+ return [];
212
+ const instances = [...this.transientMap.values()];
213
+ return instances.map((item) => item.get(constants_1.STATIC_CONTEXT)).filter(Boolean);
214
+ }
215
+ mergeWith(provider) {
216
+ if ((0, classifier_helper_1.isValueProvider)(provider)) {
217
+ // @ts-ignore
218
+ this.metatype = null;
219
+ this.inject = null;
220
+ this.scope = interfaces_1.Scope.DEFAULT;
221
+ this.setInstanceByContextId(constants_1.STATIC_CONTEXT, {
222
+ instance: provider.useValue,
223
+ isResolved: true,
224
+ isPending: false,
225
+ });
226
+ }
227
+ else if ((0, classifier_helper_1.isClassProvider)(provider)) {
228
+ this.inject = null;
229
+ this.metatype = provider.useClass;
230
+ }
231
+ else if ((0, classifier_helper_1.isFactoryProvider)(provider)) {
232
+ this.metatype = provider.useFactory;
233
+ this.inject = provider.inject || [];
234
+ }
235
+ }
236
+ isNewable() {
237
+ return (0, shared_helper_1.isNull)(this.inject) && this.metatype && this.metatype.prototype;
238
+ }
239
+ initialize(metadata) {
240
+ const { instance, isResolved, ...wrapperPartial } = metadata;
241
+ Object.assign(this, wrapperPartial);
242
+ this.setInstanceByContextId(constants_1.STATIC_CONTEXT, { instance, isResolved });
243
+ this.scope === interfaces_1.Scope.TRANSIENT && (this.transientMap = new Map());
244
+ }
245
+ printIntrospectedAsRequestScoped() {
246
+ if (!this.isDebugMode() || this.name === "REQUEST") {
247
+ return;
248
+ }
249
+ if ((0, shared_helper_1.isString)(this.name)) {
250
+ InstanceWrapper.logger.log(`${color_helper_1.colors.cyanBright(this.name)}${color_helper_1.colors.green(" introspected as ")}${color_helper_1.colors.magentaBright("request-scoped")}`);
251
+ }
252
+ }
253
+ printIntrospectedAsDurable() {
254
+ if (!this.isDebugMode()) {
255
+ return;
256
+ }
257
+ if ((0, shared_helper_1.isString)(this.name)) {
258
+ InstanceWrapper.logger.log(`${color_helper_1.colors.cyanBright(this.name)}${color_helper_1.colors.green(" introspected as ")}${color_helper_1.colors.magentaBright("durable")}`);
259
+ }
260
+ }
261
+ isDebugMode() {
262
+ return !!process.env.VENOK_DEBUG;
263
+ }
264
+ generateUuid() {
265
+ let key = this.name?.toString() ?? this.token?.toString();
266
+ key += this.host?.name ?? "";
267
+ return key ? uuid_helper_1.UuidFactory.get(key) : (0, random_string_generator_helper_1.randomStringGenerator)();
268
+ }
269
+ }
270
+ exports.InstanceWrapper = InstanceWrapper;
271
+ _a = exports.INSTANCE_METADATA_SYMBOL;
272
+ InstanceWrapper.logger = new logger_service_1.Logger(InstanceWrapper.name);
@@ -0,0 +1,4 @@
1
+ import { Provider } from "@venok/core/interfaces/modules";
2
+ export declare const ReflectorAliasProvider: Provider;
3
+ export declare const requestProvider: Provider;
4
+ export declare const inquirerProvider: Provider;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inquirerProvider = exports.requestProvider = exports.ReflectorAliasProvider = void 0;
4
+ const services_1 = require("@venok/core/services");
5
+ const constants_1 = require("@venok/core/constants");
6
+ const interfaces_1 = require("@venok/core/interfaces");
7
+ const noop_helper_1 = require("@venok/core/helpers/noop.helper");
8
+ exports.ReflectorAliasProvider = {
9
+ provide: services_1.Reflector.name,
10
+ useExisting: services_1.Reflector,
11
+ };
12
+ exports.requestProvider = {
13
+ provide: constants_1.REQUEST,
14
+ scope: interfaces_1.Scope.REQUEST,
15
+ useFactory: noop_helper_1.noop,
16
+ };
17
+ exports.inquirerProvider = {
18
+ provide: constants_1.INQUIRER,
19
+ scope: interfaces_1.Scope.TRANSIENT,
20
+ useFactory: noop_helper_1.noop,
21
+ };
@@ -0,0 +1,8 @@
1
+ import { VenokContainer } from "@venok/core/injector/container";
2
+ import { DependenciesScanner } from "@venok/core/scanner";
3
+ import { ModuleCompiler } from "@venok/core/injector/module/compiler";
4
+ import { GraphInspector } from "@venok/core/inspector/graph-inspector";
5
+ import { ModuleOverride } from "@venok/core/interfaces/modules/override.interface";
6
+ export declare class InternalCoreModuleFactory {
7
+ static create(container: VenokContainer, scanner: DependenciesScanner, moduleCompiler: ModuleCompiler, graphInspector: GraphInspector, moduleOverrides?: ModuleOverride[]): import("../..").DynamicModule;
8
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InternalCoreModuleFactory = void 0;
4
+ const logger_service_1 = require("@venok/core/services/logger.service");
5
+ const loader_1 = require("@venok/core/injector/module/lazy/loader");
6
+ const injector_1 = require("@venok/core/injector/injector");
7
+ const loader_2 = require("@venok/core/injector/instance/loader");
8
+ const internal_core_module_1 = require("@venok/core/injector/internal-core-module/internal-core-module");
9
+ const container_1 = require("@venok/core/injector/module/container");
10
+ const serialized_graph_1 = require("@venok/core/inspector/serialized-graph");
11
+ const creator_1 = require("@venok/core/context/external/creator");
12
+ class InternalCoreModuleFactory {
13
+ static create(container, scanner, moduleCompiler, graphInspector, moduleOverrides) {
14
+ const lazyModuleLoaderFactory = () => {
15
+ const logger = new logger_service_1.Logger(loader_1.LazyModuleLoader.name, {
16
+ timestamp: false,
17
+ });
18
+ const injector = new injector_1.Injector();
19
+ const instanceLoader = new loader_2.InstanceLoader(container, injector, graphInspector, logger);
20
+ return new loader_1.LazyModuleLoader(scanner, instanceLoader, moduleCompiler, container.getModules(), moduleOverrides);
21
+ };
22
+ return internal_core_module_1.InternalCoreModule.register([
23
+ {
24
+ provide: creator_1.ExternalContextCreator,
25
+ useValue: creator_1.ExternalContextCreator.fromContainer(container),
26
+ },
27
+ {
28
+ provide: container_1.ModulesContainer,
29
+ useValue: container.getModules(),
30
+ },
31
+ {
32
+ provide: loader_1.LazyModuleLoader,
33
+ useFactory: lazyModuleLoaderFactory,
34
+ },
35
+ {
36
+ provide: serialized_graph_1.SerializedGraph,
37
+ useValue: container.serializedGraph,
38
+ },
39
+ ]);
40
+ }
41
+ }
42
+ exports.InternalCoreModuleFactory = InternalCoreModuleFactory;
@@ -0,0 +1,4 @@
1
+ import { DynamicModule, ExistingProvider, FactoryProvider, ValueProvider } from "@venok/core/interfaces/modules";
2
+ export declare class InternalCoreModule {
3
+ static register(providers: Array<ValueProvider | FactoryProvider | ExistingProvider>): DynamicModule;
4
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var InternalCoreModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.InternalCoreModule = void 0;
11
+ const services_1 = require("@venok/core/services");
12
+ const global_decorator_1 = require("@venok/core/decorators/global.decorator");
13
+ const module_decorator_1 = require("@venok/core/decorators/module.decorator");
14
+ const core_providers_1 = require("@venok/core/injector/internal-core-module/core-providers");
15
+ let InternalCoreModule = InternalCoreModule_1 = class InternalCoreModule {
16
+ static register(providers) {
17
+ return {
18
+ module: InternalCoreModule_1,
19
+ providers: [...providers],
20
+ exports: [...providers.map((item) => item.provide)],
21
+ };
22
+ }
23
+ };
24
+ exports.InternalCoreModule = InternalCoreModule;
25
+ exports.InternalCoreModule = InternalCoreModule = InternalCoreModule_1 = __decorate([
26
+ (0, global_decorator_1.Global)(),
27
+ (0, module_decorator_1.Module)({
28
+ providers: [services_1.Reflector, core_providers_1.ReflectorAliasProvider, core_providers_1.requestProvider, core_providers_1.inquirerProvider],
29
+ exports: [services_1.Reflector, core_providers_1.ReflectorAliasProvider, core_providers_1.requestProvider, core_providers_1.inquirerProvider],
30
+ })
31
+ ], InternalCoreModule);
@@ -0,0 +1,19 @@
1
+ import { Type } from "@venok/core/interfaces";
2
+ import { DynamicModule } from "@venok/core/interfaces/modules/dynamic-module.interface";
3
+ import { ForwardReference } from "@venok/core/interfaces/modules/forward-reference.interface";
4
+ import { TokenFactory } from "@venok/core/injector/module/token-factory";
5
+ export interface ModuleFactory {
6
+ type: Type<any>;
7
+ token: string;
8
+ dynamicMetadata?: Partial<DynamicModule>;
9
+ }
10
+ export declare class ModuleCompiler {
11
+ private readonly moduleTokenFactory;
12
+ constructor(moduleTokenFactory?: TokenFactory);
13
+ compile(metatype: Type<any> | DynamicModule | Promise<DynamicModule>): Promise<ModuleFactory>;
14
+ extractMetadata(metatype: Type<any> | ForwardReference | DynamicModule): {
15
+ type: Type<any>;
16
+ dynamicMetadata?: Partial<DynamicModule> | undefined;
17
+ };
18
+ isDynamicModule(module: Type<any> | DynamicModule | ForwardReference): module is DynamicModule;
19
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleCompiler = void 0;
4
+ const token_factory_1 = require("@venok/core/injector/module/token-factory");
5
+ class ModuleCompiler {
6
+ constructor(moduleTokenFactory = new token_factory_1.TokenFactory()) {
7
+ this.moduleTokenFactory = moduleTokenFactory;
8
+ }
9
+ async compile(metatype) {
10
+ const { type, dynamicMetadata } = this.extractMetadata(await metatype);
11
+ const token = this.moduleTokenFactory.create(type, dynamicMetadata);
12
+ return { type, dynamicMetadata, token };
13
+ }
14
+ extractMetadata(metatype) {
15
+ if (!this.isDynamicModule(metatype)) {
16
+ return {
17
+ type: metatype?.forwardRef ? metatype.forwardRef() : metatype,
18
+ };
19
+ }
20
+ const { module: type, ...dynamicMetadata } = metatype;
21
+ return { type, dynamicMetadata };
22
+ }
23
+ isDynamicModule(module) {
24
+ return !!module.module;
25
+ }
26
+ }
27
+ exports.ModuleCompiler = ModuleCompiler;