@venok/core 1.1.0 → 2.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 (579) hide show
  1. package/dist/application/config.js +92 -0
  2. package/dist/application/context.js +252 -0
  3. package/dist/application/factory.js +136 -0
  4. package/dist/constants.js +100 -0
  5. package/dist/context/context-id.factory.js +58 -0
  6. package/dist/context/context.js +186 -0
  7. package/dist/context/creator.js +49 -0
  8. package/dist/context/execution-host.js +51 -0
  9. package/dist/context/proxy.js +55 -0
  10. package/dist/decorators/apply.decorator.js +33 -0
  11. package/dist/decorators/bind.decorator.js +28 -0
  12. package/dist/decorators/catch.decorator.js +29 -0
  13. package/dist/decorators/dependencies.decorator.js +30 -0
  14. package/dist/decorators/exception-filters.decorator.js +40 -0
  15. package/dist/decorators/global.decorator.js +28 -0
  16. package/dist/decorators/inject.decorator.js +42 -0
  17. package/dist/decorators/injectable.decorator.js +38 -0
  18. package/dist/decorators/module.decorator.js +42 -0
  19. package/dist/decorators/optional.decorator.js +35 -0
  20. package/dist/decorators/set-metadata.decorator.js +35 -0
  21. package/dist/decorators/use-guards.decorator.js +39 -0
  22. package/dist/decorators/use-interceptors.decorator.js +39 -0
  23. package/dist/decorators/use-pipes.decorator.js +38 -0
  24. package/dist/enums/scope.enum.js +28 -0
  25. package/dist/enums/shutdown-signal.enum.js +36 -0
  26. package/dist/errors/exceptions/circular-dependency.exception.js +30 -0
  27. package/dist/errors/exceptions/invalid-class-module.exception.js +30 -0
  28. package/dist/errors/exceptions/invalid-class-scope.exception.js +33 -0
  29. package/dist/errors/exceptions/invalid-class.exception.js +30 -0
  30. package/dist/errors/exceptions/invalid-exception-filter.exception.js +30 -0
  31. package/dist/errors/exceptions/invalid-module.exception.js +30 -0
  32. package/dist/errors/exceptions/runtime.exception.js +30 -0
  33. package/dist/errors/exceptions/undefined-dependency.exception.js +30 -0
  34. package/dist/errors/exceptions/undefined-forwardref.exception.js +30 -0
  35. package/dist/errors/exceptions/undefined-module.exception.js +30 -0
  36. package/dist/errors/exceptions/unknown-dependencies.exception.js +38 -0
  37. package/dist/errors/exceptions/unknown-element.exception.js +31 -0
  38. package/dist/errors/exceptions/unknown-export.exception.js +30 -0
  39. package/dist/errors/exceptions/unknown-module.exception.js +29 -0
  40. package/dist/errors/messages.js +134 -0
  41. package/dist/exceptions/handler.js +53 -0
  42. package/dist/exceptions/zone/handler.js +30 -0
  43. package/dist/exceptions/zone/zone.js +49 -0
  44. package/dist/filters/context-creator.js +65 -0
  45. package/dist/filters/context.js +58 -0
  46. package/dist/filters/filter.js +36 -0
  47. package/dist/guards/consumer.js +54 -0
  48. package/dist/guards/context-creator.js +76 -0
  49. package/dist/helpers/color.helper.js +35 -0
  50. package/dist/helpers/context-id-factory.helper.js +25 -0
  51. package/dist/helpers/context.helper.js +65 -0
  52. package/dist/helpers/create-param-decorator.helper.js +73 -0
  53. package/dist/helpers/filter-log-levels.util.js +38 -0
  54. package/dist/helpers/flatten.helper.js +26 -0
  55. package/dist/helpers/is-log-level-enabled.util.js +39 -0
  56. package/dist/helpers/is-log-level.util.js +26 -0
  57. package/dist/helpers/messages.helper.js +23 -0
  58. package/dist/helpers/metadata.helper.js +51 -0
  59. package/dist/helpers/noop.helper.js +23 -0
  60. package/dist/helpers/random-string-generator.helper.js +24 -0
  61. package/dist/helpers/rethrow.helper.js +25 -0
  62. package/dist/helpers/shared.helper.js +49 -0
  63. package/dist/helpers/silent.helper.js +34 -0
  64. package/dist/helpers/transient.helper.js +30 -0
  65. package/dist/helpers/uuid.helper.js +60 -0
  66. package/dist/helpers/validate-each.helper.js +42 -0
  67. package/dist/hooks/before-app-shutdown.hook.js +43 -0
  68. package/dist/hooks/on-app-bootstrap.hook.js +43 -0
  69. package/dist/hooks/on-app-shutdown.hook.js +43 -0
  70. package/dist/hooks/on-module-destroy.hook.js +43 -0
  71. package/dist/hooks/on-module-init.hook.js +43 -0
  72. package/dist/index.d.ts +3142 -0
  73. package/dist/index.js +115 -0
  74. package/dist/injector/constants.js +28 -0
  75. package/dist/injector/container.js +229 -0
  76. package/dist/injector/helpers/barrier.js +48 -0
  77. package/dist/injector/helpers/class-scope.helper.js +27 -0
  78. package/dist/injector/helpers/classifier.helper.js +35 -0
  79. package/dist/injector/helpers/is-durable.helper.js +27 -0
  80. package/dist/injector/injector.js +490 -0
  81. package/dist/injector/instance/links-host.js +68 -0
  82. package/dist/injector/instance/loader.js +95 -0
  83. package/dist/injector/instance/resolver.js +61 -0
  84. package/dist/injector/instance/wrapper.js +324 -0
  85. package/dist/injector/internal-core-module/core-providers.js +42 -0
  86. package/dist/injector/internal-core-module/internal-core-module-factory.js +66 -0
  87. package/dist/injector/internal-core-module/internal-core-module.js +46 -0
  88. package/dist/injector/module/compiler.js +47 -0
  89. package/dist/injector/module/container.js +33 -0
  90. package/dist/injector/module/lazy/loader.js +71 -0
  91. package/dist/injector/module/module.js +395 -0
  92. package/dist/injector/module/ref.js +78 -0
  93. package/dist/injector/module/token-factory.js +82 -0
  94. package/dist/injector/settlement-signal.js +50 -0
  95. package/dist/injector/topology-tree/topology-tree.js +68 -0
  96. package/dist/injector/topology-tree/tree-node.js +68 -0
  97. package/dist/inspector/graph-inspector.js +182 -0
  98. package/dist/inspector/initialize-on-preview.allowlist.js +31 -0
  99. package/dist/inspector/noop-graph-inspector.js +27 -0
  100. package/dist/inspector/partial-graph.host.js +34 -0
  101. package/dist/inspector/serialized-graph.js +128 -0
  102. package/dist/interceptors/consumer.js +54 -0
  103. package/dist/interceptors/context-creator.js +75 -0
  104. package/dist/interfaces/application/context-options.interface.js +31 -0
  105. package/dist/interfaces/application/context.interface.js +0 -0
  106. package/dist/interfaces/application/index.js +3 -0
  107. package/dist/interfaces/context/arguments-host.interface.js +0 -0
  108. package/dist/interfaces/context/context-id-factory.interface.js +0 -0
  109. package/dist/interfaces/context/context.interface.js +0 -0
  110. package/dist/interfaces/context/creator.interface.js +0 -0
  111. package/dist/interfaces/context/execution.interface.js +0 -0
  112. package/dist/interfaces/context/index.js +7 -0
  113. package/dist/interfaces/context/params.interface.js +0 -0
  114. package/dist/interfaces/features/exception-filter.interface.js +0 -0
  115. package/dist/interfaces/features/guards.interface.js +0 -0
  116. package/dist/interfaces/features/index.js +5 -0
  117. package/dist/interfaces/features/interceptor.interface.js +0 -0
  118. package/dist/interfaces/features/pipes.interface.js +0 -0
  119. package/dist/interfaces/helper.interface.js +0 -0
  120. package/dist/interfaces/hooks/before-application-shutdown.interface.js +0 -0
  121. package/dist/interfaces/hooks/index.js +6 -0
  122. package/dist/interfaces/hooks/on-application-bootstrap.interface.js +0 -0
  123. package/dist/interfaces/hooks/on-application-shutdown.interface.js +0 -0
  124. package/dist/interfaces/hooks/on-destroy.interface.js +0 -0
  125. package/dist/interfaces/hooks/on-init.interface.js +0 -0
  126. package/dist/interfaces/index.js +16 -0
  127. package/dist/interfaces/injectable.interface.js +0 -0
  128. package/dist/interfaces/injector/index.js +6 -0
  129. package/dist/interfaces/injector/injector.interface.js +0 -0
  130. package/dist/interfaces/injector/instance-wrapper.interface.js +0 -0
  131. package/dist/interfaces/injector/lazy-module-options.interface.js +0 -0
  132. package/dist/interfaces/injector/module-compiler.interface.js +0 -0
  133. package/dist/interfaces/injector/module-ref.interface.js +0 -0
  134. package/dist/interfaces/inspector/edge.interface.js +0 -0
  135. package/dist/interfaces/inspector/enhancer-metadata-cache-entry.interface.js +0 -0
  136. package/dist/interfaces/inspector/entrypoint.interface.js +0 -0
  137. package/dist/interfaces/inspector/extras.interface.js +0 -0
  138. package/dist/interfaces/inspector/index.js +8 -0
  139. package/dist/interfaces/inspector/node.interface.js +0 -0
  140. package/dist/interfaces/inspector/serialized-graph-json.interface.js +0 -0
  141. package/dist/interfaces/inspector/serialized-graph-metadata.interface.js +0 -0
  142. package/dist/interfaces/modules/definition.interface.js +0 -0
  143. package/dist/interfaces/modules/dynamic-module.interface.js +0 -0
  144. package/dist/interfaces/modules/forward-reference.interface.js +0 -0
  145. package/dist/interfaces/modules/index.js +10 -0
  146. package/dist/interfaces/modules/injection-token.interface.js +0 -0
  147. package/dist/interfaces/modules/introspection-result.interface.js +0 -0
  148. package/dist/interfaces/modules/module-metadata.interface.js +0 -0
  149. package/dist/interfaces/modules/module.interface.js +0 -0
  150. package/dist/interfaces/modules/optional-factory-dependency.interface.js +0 -0
  151. package/dist/interfaces/modules/override.interface.js +0 -0
  152. package/dist/interfaces/modules/provider.interface.js +0 -0
  153. package/dist/interfaces/param-decorator.interface.js +0 -0
  154. package/dist/interfaces/scope.interface.js +0 -0
  155. package/dist/interfaces/services/console.interface.js +0 -0
  156. package/dist/interfaces/services/index.js +4 -0
  157. package/dist/interfaces/services/logger.interface.js +0 -0
  158. package/dist/interfaces/services/reflector.interface.js +0 -0
  159. package/dist/interfaces/set-metadata.interface.js +0 -0
  160. package/dist/interfaces/type.interface.js +0 -0
  161. package/dist/metadata-scanner.js +50 -0
  162. package/dist/pipes/consumer.js +33 -0
  163. package/dist/pipes/context-creator.js +78 -0
  164. package/dist/scanner.js +371 -0
  165. package/dist/services/console.service.js +347 -0
  166. package/dist/services/logger.service.js +276 -0
  167. package/dist/services/reflector.service.js +82 -0
  168. package/dist/storage/handler-metadata.storage.js +42 -0
  169. package/dist/storage/meta-host.storage.js +62 -0
  170. package/package.json +52 -40
  171. package/application/config.d.ts +0 -35
  172. package/application/config.js +0 -85
  173. package/application/context.d.ts +0 -198
  174. package/application/context.js +0 -325
  175. package/application/factory.d.ts +0 -43
  176. package/application/factory.js +0 -147
  177. package/constants.d.ts +0 -44
  178. package/constants.js +0 -51
  179. package/context/context.d.ts +0 -66
  180. package/context/context.js +0 -156
  181. package/context/creator.d.ts +0 -9
  182. package/context/creator.js +0 -32
  183. package/context/execution-host.d.ts +0 -16
  184. package/context/execution-host.js +0 -30
  185. package/context/index.d.ts +0 -4
  186. package/context/index.js +0 -20
  187. package/context/proxy.d.ts +0 -6
  188. package/context/proxy.js +0 -33
  189. package/decorators/apply.decorator.d.ts +0 -10
  190. package/decorators/apply.decorator.js +0 -24
  191. package/decorators/bind.decorator.d.ts +0 -11
  192. package/decorators/bind.decorator.js +0 -20
  193. package/decorators/catch.decorator.d.ts +0 -17
  194. package/decorators/catch.decorator.js +0 -26
  195. package/decorators/create-param.decorator.d.ts +0 -29
  196. package/decorators/create-param.decorator.js +0 -51
  197. package/decorators/dependencies.decorator.d.ts +0 -6
  198. package/decorators/dependencies.decorator.js +0 -17
  199. package/decorators/exception-filters.decorator.d.ts +0 -21
  200. package/decorators/exception-filters.decorator.js +0 -41
  201. package/decorators/global.decorator.d.ts +0 -10
  202. package/decorators/global.decorator.js +0 -19
  203. package/decorators/index.d.ts +0 -15
  204. package/decorators/index.js +0 -31
  205. package/decorators/inject.decorator.d.ts +0 -26
  206. package/decorators/inject.decorator.js +0 -45
  207. package/decorators/injectable.decorator.d.ts +0 -40
  208. package/decorators/injectable.decorator.js +0 -51
  209. package/decorators/module.decorator.d.ts +0 -14
  210. package/decorators/module.decorator.js +0 -38
  211. package/decorators/optional.decorator.d.ts +0 -14
  212. package/decorators/optional.decorator.js +0 -30
  213. package/decorators/set-metadata.decorator.d.ts +0 -18
  214. package/decorators/set-metadata.decorator.js +0 -30
  215. package/decorators/use-guards.decorator.d.ts +0 -21
  216. package/decorators/use-guards.decorator.js +0 -40
  217. package/decorators/use-interceptors.decorator.d.ts +0 -21
  218. package/decorators/use-interceptors.decorator.js +0 -40
  219. package/decorators/use-pipes.decorator.d.ts +0 -21
  220. package/decorators/use-pipes.decorator.js +0 -39
  221. package/discovery/meta-host-collection.d.ts +0 -32
  222. package/discovery/meta-host-collection.js +0 -79
  223. package/discovery/module.d.ts +0 -5
  224. package/discovery/module.js +0 -24
  225. package/discovery/service.d.ts +0 -68
  226. package/discovery/service.js +0 -90
  227. package/errors/exceptions/circular-dependency.exception.d.ts +0 -4
  228. package/errors/exceptions/circular-dependency.exception.js +0 -11
  229. package/errors/exceptions/index.d.ts +0 -8
  230. package/errors/exceptions/index.js +0 -24
  231. package/errors/exceptions/invalid-class-module.exception.d.ts +0 -4
  232. package/errors/exceptions/invalid-class-module.exception.js +0 -11
  233. package/errors/exceptions/invalid-class-scope.exception.d.ts +0 -5
  234. package/errors/exceptions/invalid-class-scope.exception.js +0 -14
  235. package/errors/exceptions/invalid-class.exception.d.ts +0 -4
  236. package/errors/exceptions/invalid-class.exception.js +0 -11
  237. package/errors/exceptions/invalid-exception-filter.exception.d.ts +0 -4
  238. package/errors/exceptions/invalid-exception-filter.exception.js +0 -11
  239. package/errors/exceptions/invalid-module.exception.d.ts +0 -4
  240. package/errors/exceptions/invalid-module.exception.js +0 -11
  241. package/errors/exceptions/runtime.exception.d.ts +0 -4
  242. package/errors/exceptions/runtime.exception.js +0 -12
  243. package/errors/exceptions/undefined-dependency.exception.d.ts +0 -6
  244. package/errors/exceptions/undefined-dependency.exception.js +0 -11
  245. package/errors/exceptions/undefined-forwardref.exception.d.ts +0 -5
  246. package/errors/exceptions/undefined-forwardref.exception.js +0 -11
  247. package/errors/exceptions/undefined-module.exception.d.ts +0 -4
  248. package/errors/exceptions/undefined-module.exception.js +0 -11
  249. package/errors/exceptions/unknown-dependencies.exception.d.ts +0 -16
  250. package/errors/exceptions/unknown-dependencies.exception.js +0 -15
  251. package/errors/exceptions/unknown-element.exception.d.ts +0 -4
  252. package/errors/exceptions/unknown-element.exception.js +0 -12
  253. package/errors/exceptions/unknown-export.exception.d.ts +0 -4
  254. package/errors/exceptions/unknown-export.exception.js +0 -11
  255. package/errors/exceptions/unknown-module.exception.d.ts +0 -4
  256. package/errors/exceptions/unknown-module.exception.js +0 -10
  257. package/errors/messages.d.ts +0 -15
  258. package/errors/messages.js +0 -126
  259. package/exceptions/handler.d.ts +0 -10
  260. package/exceptions/handler.js +0 -34
  261. package/exceptions/index.d.ts +0 -2
  262. package/exceptions/index.js +0 -18
  263. package/exceptions/zone/handler.d.ts +0 -5
  264. package/exceptions/zone/handler.js +0 -15
  265. package/exceptions/zone/index.d.ts +0 -2
  266. package/exceptions/zone/index.js +0 -18
  267. package/exceptions/zone/zone.d.ts +0 -5
  268. package/exceptions/zone/zone.js +0 -32
  269. package/filters/context-creator.d.ts +0 -14
  270. package/filters/context-creator.js +0 -48
  271. package/filters/context.d.ts +0 -12
  272. package/filters/context.js +0 -41
  273. package/filters/filter.d.ts +0 -6
  274. package/filters/filter.js +0 -16
  275. package/filters/index.d.ts +0 -3
  276. package/filters/index.js +0 -19
  277. package/guards/consumer.d.ts +0 -9
  278. package/guards/consumer.js +0 -33
  279. package/guards/context-creator.d.ts +0 -17
  280. package/guards/context-creator.js +0 -69
  281. package/guards/index.d.ts +0 -2
  282. package/guards/index.js +0 -18
  283. package/helpers/color.helper.d.ts +0 -9
  284. package/helpers/color.helper.js +0 -14
  285. package/helpers/context-id-factory.helper.d.ts +0 -2
  286. package/helpers/context-id-factory.helper.js +0 -15
  287. package/helpers/context.helper.d.ts +0 -23
  288. package/helpers/context.helper.js +0 -49
  289. package/helpers/extends-metadata.helper.d.ts +0 -1
  290. package/helpers/extends-metadata.helper.js +0 -9
  291. package/helpers/flatten.helper.d.ts +0 -1
  292. package/helpers/flatten.helper.js +0 -9
  293. package/helpers/messages.helper.d.ts +0 -2
  294. package/helpers/messages.helper.js +0 -7
  295. package/helpers/noop.helper.d.ts +0 -1
  296. package/helpers/noop.helper.js +0 -5
  297. package/helpers/random-string-generator.helper.d.ts +0 -1
  298. package/helpers/random-string-generator.helper.js +0 -6
  299. package/helpers/rethrow.helper.d.ts +0 -1
  300. package/helpers/rethrow.helper.js +0 -7
  301. package/helpers/shared.helper.d.ts +0 -10
  302. package/helpers/shared.helper.js +0 -33
  303. package/helpers/silent.helper.d.ts +0 -10
  304. package/helpers/silent.helper.js +0 -18
  305. package/helpers/transient.helper.d.ts +0 -12
  306. package/helpers/transient.helper.js +0 -26
  307. package/helpers/uuid.helper.d.ts +0 -15
  308. package/helpers/uuid.helper.js +0 -54
  309. package/helpers/validate-each.helper.d.ts +0 -8
  310. package/helpers/validate-each.helper.js +0 -25
  311. package/hooks/before-app-shutdown.hook.d.ts +0 -9
  312. package/hooks/before-app-shutdown.hook.js +0 -45
  313. package/hooks/index.d.ts +0 -5
  314. package/hooks/index.js +0 -21
  315. package/hooks/on-app-bootstrap.hook.d.ts +0 -8
  316. package/hooks/on-app-bootstrap.hook.js +0 -45
  317. package/hooks/on-app-shutdown.hook.d.ts +0 -9
  318. package/hooks/on-app-shutdown.hook.js +0 -46
  319. package/hooks/on-module-destroy.hook.d.ts +0 -8
  320. package/hooks/on-module-destroy.hook.js +0 -45
  321. package/hooks/on-module-init.hook.d.ts +0 -8
  322. package/hooks/on-module-init.hook.js +0 -45
  323. package/index.d.ts +0 -10
  324. package/index.js +0 -32
  325. package/injector/constants.d.ts +0 -2
  326. package/injector/constants.js +0 -7
  327. package/injector/container.d.ts +0 -61
  328. package/injector/container.js +0 -194
  329. package/injector/helpers/class-scope.helper.d.ts +0 -2
  330. package/injector/helpers/class-scope.helper.js +0 -9
  331. package/injector/helpers/classifier.helper.d.ts +0 -4
  332. package/injector/helpers/classifier.helper.js +0 -17
  333. package/injector/helpers/is-durable.helper.d.ts +0 -2
  334. package/injector/helpers/is-durable.helper.js +0 -9
  335. package/injector/index.d.ts +0 -5
  336. package/injector/index.js +0 -20
  337. package/injector/injector.d.ts +0 -87
  338. package/injector/injector.js +0 -452
  339. package/injector/instance/links-host.d.ts +0 -22
  340. package/injector/instance/links-host.js +0 -50
  341. package/injector/instance/loader.d.ts +0 -21
  342. package/injector/instance/loader.js +0 -73
  343. package/injector/instance/resolver.d.ts +0 -16
  344. package/injector/instance/resolver.js +0 -43
  345. package/injector/instance/wrapper.d.ts +0 -90
  346. package/injector/instance/wrapper.js +0 -272
  347. package/injector/internal-core-module/core-providers.d.ts +0 -4
  348. package/injector/internal-core-module/core-providers.js +0 -21
  349. package/injector/internal-core-module/internal-core-module-factory.d.ts +0 -8
  350. package/injector/internal-core-module/internal-core-module-factory.js +0 -47
  351. package/injector/internal-core-module/internal-core-module.d.ts +0 -4
  352. package/injector/internal-core-module/internal-core-module.js +0 -31
  353. package/injector/module/compiler.d.ts +0 -19
  354. package/injector/module/compiler.js +0 -27
  355. package/injector/module/container.d.ts +0 -6
  356. package/injector/module/container.js +0 -24
  357. package/injector/module/lazy/loader.d.ts +0 -21
  358. package/injector/module/lazy/loader.js +0 -49
  359. package/injector/module/lazy/options.d.ts +0 -6
  360. package/injector/module/lazy/options.js +0 -2
  361. package/injector/module/module.d.ts +0 -74
  362. package/injector/module/module.js +0 -383
  363. package/injector/module/ref.d.ts +0 -106
  364. package/injector/module/ref.js +0 -62
  365. package/injector/module/token-factory.d.ts +0 -13
  366. package/injector/module/token-factory.js +0 -71
  367. package/injector/settlement-signal.d.ts +0 -37
  368. package/injector/settlement-signal.js +0 -55
  369. package/inspector/graph-inspector.d.ts +0 -26
  370. package/inspector/graph-inspector.js +0 -163
  371. package/inspector/initialize-on-preview.allowlist.d.ts +0 -6
  372. package/inspector/initialize-on-preview.allowlist.js +0 -13
  373. package/inspector/interfaces/edge.interface.d.ts +0 -28
  374. package/inspector/interfaces/edge.interface.js +0 -2
  375. package/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts +0 -12
  376. package/inspector/interfaces/enhancer-metadata-cache-entry.interface.js +0 -2
  377. package/inspector/interfaces/entrypoint.interface.d.ts +0 -10
  378. package/inspector/interfaces/entrypoint.interface.js +0 -2
  379. package/inspector/interfaces/extras.interface.d.ts +0 -18
  380. package/inspector/interfaces/extras.interface.js +0 -2
  381. package/inspector/interfaces/node.interface.d.ts +0 -49
  382. package/inspector/interfaces/node.interface.js +0 -2
  383. package/inspector/interfaces/serialized-graph-json.interface.d.ts +0 -14
  384. package/inspector/interfaces/serialized-graph-json.interface.js +0 -2
  385. package/inspector/interfaces/serialized-graph-metadata.interface.d.ts +0 -10
  386. package/inspector/interfaces/serialized-graph-metadata.interface.js +0 -2
  387. package/inspector/noop-graph-inspector.d.ts +0 -2
  388. package/inspector/noop-graph-inspector.js +0 -8
  389. package/inspector/partial-graph.host.d.ts +0 -7
  390. package/inspector/partial-graph.host.js +0 -15
  391. package/inspector/serialized-graph.d.ts +0 -52
  392. package/inspector/serialized-graph.js +0 -121
  393. package/interceptors/consumer.d.ts +0 -9
  394. package/interceptors/consumer.js +0 -37
  395. package/interceptors/context-creator.d.ts +0 -17
  396. package/interceptors/context-creator.js +0 -67
  397. package/interceptors/index.d.ts +0 -2
  398. package/interceptors/index.js +0 -18
  399. package/interfaces/abstract.interface.d.ts +0 -3
  400. package/interfaces/abstract.interface.js +0 -2
  401. package/interfaces/application/context-options.interface.d.ts +0 -41
  402. package/interfaces/application/context-options.interface.js +0 -9
  403. package/interfaces/application/context.interface.d.ts +0 -162
  404. package/interfaces/application/context.interface.js +0 -2
  405. package/interfaces/application/index.d.ts +0 -1
  406. package/interfaces/application/index.js +0 -17
  407. package/interfaces/context/arguments-host.interface.d.ts +0 -22
  408. package/interfaces/context/arguments-host.interface.js +0 -2
  409. package/interfaces/context/execution.interface.d.ts +0 -18
  410. package/interfaces/context/execution.interface.js +0 -2
  411. package/interfaces/context/index.d.ts +0 -2
  412. package/interfaces/context/index.js +0 -18
  413. package/interfaces/features/exception-filter.interface.d.ts +0 -21
  414. package/interfaces/features/exception-filter.interface.js +0 -2
  415. package/interfaces/features/guards.interface.d.ts +0 -20
  416. package/interfaces/features/guards.interface.js +0 -2
  417. package/interfaces/features/index.d.ts +0 -4
  418. package/interfaces/features/index.js +0 -20
  419. package/interfaces/features/interceptor.interface.d.ts +0 -30
  420. package/interfaces/features/interceptor.interface.js +0 -2
  421. package/interfaces/features/pipes.interface.d.ts +0 -37
  422. package/interfaces/features/pipes.interface.js +0 -2
  423. package/interfaces/helper.interface.d.ts +0 -3
  424. package/interfaces/helper.interface.js +0 -2
  425. package/interfaces/hooks/before-application-shutdown.interface.d.ts +0 -3
  426. package/interfaces/hooks/before-application-shutdown.interface.js +0 -2
  427. package/interfaces/hooks/index.d.ts +0 -5
  428. package/interfaces/hooks/index.js +0 -21
  429. package/interfaces/hooks/on-application-bootstrap.interface.d.ts +0 -9
  430. package/interfaces/hooks/on-application-bootstrap.interface.js +0 -2
  431. package/interfaces/hooks/on-application-shutdown.interface.d.ts +0 -9
  432. package/interfaces/hooks/on-application-shutdown.interface.js +0 -2
  433. package/interfaces/hooks/on-destroy.interface.d.ts +0 -10
  434. package/interfaces/hooks/on-destroy.interface.js +0 -2
  435. package/interfaces/hooks/on-init.interface.d.ts +0 -8
  436. package/interfaces/hooks/on-init.interface.js +0 -2
  437. package/interfaces/index.d.ts +0 -8
  438. package/interfaces/index.js +0 -24
  439. package/interfaces/injectable.interface.d.ts +0 -1
  440. package/interfaces/injectable.interface.js +0 -2
  441. package/interfaces/modules/configurable/async-options.interface.d.ts +0 -42
  442. package/interfaces/modules/configurable/async-options.interface.js +0 -2
  443. package/interfaces/modules/configurable/cls.interface.d.ts +0 -13
  444. package/interfaces/modules/configurable/cls.interface.js +0 -2
  445. package/interfaces/modules/configurable/host.interface.d.ts +0 -62
  446. package/interfaces/modules/configurable/host.interface.js +0 -2
  447. package/interfaces/modules/configurable/index.d.ts +0 -3
  448. package/interfaces/modules/configurable/index.js +0 -19
  449. package/interfaces/modules/definition.interface.d.ts +0 -4
  450. package/interfaces/modules/definition.interface.js +0 -2
  451. package/interfaces/modules/dynamic-module.interface.d.ts +0 -23
  452. package/interfaces/modules/dynamic-module.interface.js +0 -2
  453. package/interfaces/modules/forward-reference.interface.d.ts +0 -3
  454. package/interfaces/modules/forward-reference.interface.js +0 -2
  455. package/interfaces/modules/index.d.ts +0 -9
  456. package/interfaces/modules/index.js +0 -25
  457. package/interfaces/modules/injection-token.interface.d.ts +0 -5
  458. package/interfaces/modules/injection-token.interface.js +0 -2
  459. package/interfaces/modules/introspection-result.interface.d.ts +0 -10
  460. package/interfaces/modules/introspection-result.interface.js +0 -2
  461. package/interfaces/modules/module-metadata.interface.d.ts +0 -24
  462. package/interfaces/modules/module-metadata.interface.js +0 -2
  463. package/interfaces/modules/module.interface.d.ts +0 -2
  464. package/interfaces/modules/module.interface.js +0 -2
  465. package/interfaces/modules/optional-factory-dependency.interface.d.ts +0 -8
  466. package/interfaces/modules/optional-factory-dependency.interface.js +0 -2
  467. package/interfaces/modules/override.interface.d.ts +0 -5
  468. package/interfaces/modules/override.interface.js +0 -2
  469. package/interfaces/modules/provider.interface.d.ts +0 -142
  470. package/interfaces/modules/provider.interface.js +0 -2
  471. package/interfaces/scope.interface.d.ts +0 -35
  472. package/interfaces/scope.interface.js +0 -23
  473. package/interfaces/type.interface.d.ts +0 -3
  474. package/interfaces/type.interface.js +0 -2
  475. package/metadata-scanner.d.ts +0 -4
  476. package/metadata-scanner.js +0 -34
  477. package/module/configurable-module.builder.d.ts +0 -93
  478. package/module/configurable-module.builder.js +0 -204
  479. package/module/constants.d.ts +0 -4
  480. package/module/constants.js +0 -7
  481. package/module/helpers/generate-options-injection-token.helper.d.ts +0 -1
  482. package/module/helpers/generate-options-injection-token.helper.js +0 -9
  483. package/module/helpers/get-injection-providers.helper.d.ts +0 -8
  484. package/module/helpers/get-injection-providers.helper.js +0 -36
  485. package/module/helpers/index.d.ts +0 -2
  486. package/module/helpers/index.js +0 -18
  487. package/module/index.d.ts +0 -2
  488. package/module/index.js +0 -18
  489. package/pipes/consumer.d.ts +0 -9
  490. package/pipes/consumer.js +0 -15
  491. package/pipes/context-creator.d.ts +0 -18
  492. package/pipes/context-creator.js +0 -70
  493. package/pipes/index.d.ts +0 -2
  494. package/pipes/index.js +0 -18
  495. package/scanner.d.ts +0 -81
  496. package/scanner.js +0 -374
  497. package/services/console.service.d.ts +0 -86
  498. package/services/console.service.js +0 -233
  499. package/services/index.d.ts +0 -1
  500. package/services/index.js +0 -17
  501. package/services/logger.service.d.ts +0 -157
  502. package/services/logger.service.js +0 -269
  503. package/services/reflector.service.d.ts +0 -110
  504. package/services/reflector.service.js +0 -87
  505. package/test/context/creator.spec.d.ts +0 -1
  506. package/test/context/creator.spec.js +0 -149
  507. package/test/context/execution-host.spec.d.ts +0 -1
  508. package/test/context/execution-host.spec.js +0 -31
  509. package/test/context/proxy.spec.d.ts +0 -1
  510. package/test/context/proxy.spec.js +0 -46
  511. package/test/exceptions/handler.spec.d.ts +0 -1
  512. package/test/exceptions/handler.spec.js +0 -90
  513. package/test/exceptions/messages.spec.js +0 -201
  514. package/test/exceptions/zona/handler.spec.d.ts +0 -1
  515. package/test/exceptions/zona/handler.spec.js +0 -51
  516. package/test/exceptions/zona/zone.spec.d.ts +0 -1
  517. package/test/exceptions/zona/zone.spec.js +0 -66
  518. package/test/filters/context-creator.spec.d.ts +0 -2
  519. package/test/filters/context-creator.spec.js +0 -91
  520. package/test/guards/consumer.spec.d.ts +0 -1
  521. package/test/guards/consumer.spec.js +0 -47
  522. package/test/guards/context-creator.spec.d.ts +0 -1
  523. package/test/guards/context-creator.spec.js +0 -138
  524. package/test/helpers/context-id-factory.spec.d.ts +0 -1
  525. package/test/helpers/context-id-factory.spec.js +0 -9
  526. package/test/helpers/shared.spec.d.ts +0 -1
  527. package/test/helpers/shared.spec.js +0 -122
  528. package/test/hooks/before-app-shutdown.hook.spec.d.ts +0 -1
  529. package/test/hooks/before-app-shutdown.hook.spec.js +0 -44
  530. package/test/hooks/on-app-bootstrap.hook.spec.d.ts +0 -1
  531. package/test/hooks/on-app-bootstrap.hook.spec.js +0 -43
  532. package/test/hooks/on-app-shutdown.hook.spec.d.ts +0 -1
  533. package/test/hooks/on-app-shutdown.hook.spec.js +0 -43
  534. package/test/hooks/on-module-destroy.hook.spec.d.ts +0 -1
  535. package/test/hooks/on-module-destroy.hook.spec.js +0 -43
  536. package/test/hooks/on-module-init.hook.spec.d.ts +0 -1
  537. package/test/hooks/on-module-init.hook.spec.js +0 -43
  538. package/test/injector/compiler.spec.d.ts +0 -1
  539. package/test/injector/compiler.spec.js +0 -42
  540. package/test/injector/container.spec.d.ts +0 -1
  541. package/test/injector/container.spec.js +0 -203
  542. package/test/injector/helpers/classifier.spec.d.ts +0 -1
  543. package/test/injector/helpers/classifier.spec.js +0 -102
  544. package/test/injector/injector.spec.d.ts +0 -1
  545. package/test/injector/injector.spec.js +0 -678
  546. package/test/injector/instance/loader.spec.d.ts +0 -1
  547. package/test/injector/instance/loader.spec.js +0 -108
  548. package/test/injector/instance/wrapper.spec.d.ts +0 -1
  549. package/test/injector/instance/wrapper.spec.js +0 -772
  550. package/test/injector/internal-core-module/internal-core-module-factory.spec.d.ts +0 -1
  551. package/test/injector/internal-core-module/internal-core-module-factory.spec.js +0 -27
  552. package/test/injector/module/lazy/loader.spec.d.ts +0 -1
  553. package/test/injector/module/lazy/loader.spec.js +0 -71
  554. package/test/injector/module/module.spec.d.ts +0 -1
  555. package/test/injector/module/module.spec.js +0 -410
  556. package/test/injector/module/token-factory.spec.d.ts +0 -1
  557. package/test/injector/module/token-factory.spec.js +0 -84
  558. package/test/interceptors/consumer.spec.d.ts +0 -1
  559. package/test/interceptors/consumer.spec.js +0 -136
  560. package/test/interceptors/context-creator.spec.d.ts +0 -1
  561. package/test/interceptors/context-creator.spec.js +0 -139
  562. package/test/metadata-scanner.spec.d.ts +0 -1
  563. package/test/metadata-scanner.spec.js +0 -41
  564. package/test/module/configurable-module.builder.spec.d.ts +0 -1
  565. package/test/module/configurable-module.builder.spec.js +0 -102
  566. package/test/module/helpers/get-injection-providers.helper.spec.d.ts +0 -1
  567. package/test/module/helpers/get-injection-providers.helper.spec.js +0 -49
  568. package/test/pipes/consumer.spec.d.ts +0 -1
  569. package/test/pipes/consumer.spec.js +0 -42
  570. package/test/pipes/context-creator.spec.d.ts +0 -1
  571. package/test/pipes/context-creator.spec.js +0 -108
  572. package/test/scanner.spec.d.ts +0 -1
  573. package/test/scanner.spec.js +0 -620
  574. package/test/services/logger.service.spec.d.ts +0 -1
  575. package/test/services/logger.service.spec.js +0 -487
  576. package/test/services/reflector.service.spec.d.ts +0 -1
  577. package/test/services/reflector.service.spec.js +0 -105
  578. package/tsconfig.tsbuildinfo +0 -1
  579. /package/{test/exceptions/messages.spec.d.ts → dist/interfaces/abstract.interface.js} +0 -0
@@ -1,678 +0,0 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- require("reflect-metadata");
19
- const chai_1 = __importDefault(require("chai"));
20
- const chai_2 = require("chai");
21
- const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
22
- const sinon_1 = __importDefault(require("sinon"));
23
- const wrapper_1 = require("@venok/core/injector/instance/wrapper");
24
- const injector_1 = require("@venok/core/injector/injector");
25
- const injectable_decorator_1 = require("@venok/core/decorators/injectable.decorator");
26
- const constants_1 = require("@venok/core/injector/constants");
27
- const container_1 = require("@venok/core/injector/container");
28
- const module_1 = require("@venok/core/injector/module/module");
29
- const optional_decorator_1 = require("@venok/core/decorators/optional.decorator");
30
- const constants_2 = require("@venok/core/constants");
31
- const inject_decorator_1 = require("@venok/core/decorators/inject.decorator");
32
- chai_1.default.use(chai_as_promised_1.default);
33
- describe("Injector", () => {
34
- let injector;
35
- beforeEach(() => {
36
- injector = new injector_1.Injector();
37
- });
38
- describe("loadInstance", () => {
39
- let DependencyOne = class DependencyOne {
40
- };
41
- DependencyOne = __decorate([
42
- (0, injectable_decorator_1.Injectable)()
43
- ], DependencyOne);
44
- let DependencyTwo = class DependencyTwo {
45
- };
46
- DependencyTwo = __decorate([
47
- (0, injectable_decorator_1.Injectable)()
48
- ], DependencyTwo);
49
- let MainTest = class MainTest {
50
- constructor(one, two) {
51
- this.one = one;
52
- this.two = two;
53
- }
54
- };
55
- __decorate([
56
- (0, inject_decorator_1.Inject)(),
57
- __metadata("design:type", DependencyOne)
58
- ], MainTest.prototype, "property", void 0);
59
- MainTest = __decorate([
60
- (0, injectable_decorator_1.Injectable)(),
61
- __metadata("design:paramtypes", [DependencyOne,
62
- DependencyTwo])
63
- ], MainTest);
64
- let moduleDeps;
65
- let mainTest, depOne, depTwo;
66
- beforeEach(() => {
67
- moduleDeps = new module_1.Module(DependencyTwo, new container_1.VenokContainer());
68
- mainTest = new wrapper_1.InstanceWrapper({
69
- name: "MainTest",
70
- token: "MainTest",
71
- metatype: MainTest,
72
- instance: Object.create(MainTest.prototype),
73
- isResolved: false,
74
- });
75
- depOne = new wrapper_1.InstanceWrapper({
76
- name: DependencyOne,
77
- token: DependencyOne,
78
- metatype: DependencyOne,
79
- instance: Object.create(DependencyOne.prototype),
80
- isResolved: false,
81
- });
82
- depTwo = new wrapper_1.InstanceWrapper({
83
- name: DependencyTwo,
84
- token: DependencyTwo,
85
- metatype: DependencyTwo,
86
- instance: Object.create(DependencyOne.prototype),
87
- isResolved: false,
88
- });
89
- moduleDeps.providers.set("MainTest", mainTest);
90
- moduleDeps.providers.set(DependencyOne, depOne);
91
- moduleDeps.providers.set(DependencyTwo, depTwo);
92
- moduleDeps.providers.set("MainTestResolved", {
93
- ...mainTest,
94
- isResolved: true,
95
- });
96
- });
97
- it("should create an instance of component with proper dependencies", async () => {
98
- await injector.loadInstance(mainTest, moduleDeps.providers, moduleDeps);
99
- const { instance } = moduleDeps.providers.get("MainTest");
100
- (0, chai_2.expect)(instance.one).instanceof(DependencyOne);
101
- (0, chai_2.expect)(instance.two).instanceof(DependencyTwo);
102
- (0, chai_2.expect)(instance).instanceof(MainTest);
103
- });
104
- it('should set "isResolved" property to true after instance initialization', async () => {
105
- await injector.loadInstance(mainTest, moduleDeps.providers, moduleDeps);
106
- const { isResolved } = moduleDeps.providers.get("MainTest").getInstanceByContextId(constants_1.STATIC_CONTEXT);
107
- (0, chai_2.expect)(isResolved).to.be.true;
108
- });
109
- it("should throw RuntimeException when type is not stored in collection", () => {
110
- return (0, chai_2.expect)(injector.loadInstance({}, moduleDeps.providers, moduleDeps)).to.eventually.be.rejected;
111
- });
112
- it('should await done$ when "isPending"', () => {
113
- const wrapper = new wrapper_1.InstanceWrapper({
114
- name: "MainTest",
115
- metatype: MainTest,
116
- instance: Object.create(MainTest.prototype),
117
- isResolved: false,
118
- });
119
- const host = wrapper.getInstanceByContextId(constants_1.STATIC_CONTEXT);
120
- host.donePromise = Promise.resolve();
121
- host.isPending = true;
122
- (0, chai_2.expect)(injector.loadInstance(wrapper, moduleDeps.providers, moduleDeps)).to.eventually.not.throw();
123
- });
124
- it('should await done$ when "isPending" and rethrow an exception (if thrown)', () => {
125
- const error = new Error("Test error");
126
- const wrapper = new wrapper_1.InstanceWrapper({
127
- name: "MainTest",
128
- metatype: MainTest,
129
- instance: Object.create(MainTest.prototype),
130
- isResolved: false,
131
- });
132
- const host = wrapper.getInstanceByContextId(constants_1.STATIC_CONTEXT);
133
- host.donePromise = Promise.resolve(error);
134
- host.isPending = true;
135
- (0, chai_2.expect)(injector.loadInstance(wrapper, moduleDeps.providers, moduleDeps)).to.eventually.throw(error);
136
- });
137
- it("should return undefined when metatype is resolved", async () => {
138
- const result = await injector.loadInstance(new wrapper_1.InstanceWrapper({
139
- name: "MainTestResolved",
140
- metatype: MainTest,
141
- instance: Object.create(MainTest.prototype),
142
- isResolved: true,
143
- }), moduleDeps.providers, moduleDeps);
144
- (0, chai_2.expect)(result).to.be.undefined;
145
- });
146
- });
147
- describe("loadPrototype", () => {
148
- let Test = class Test {
149
- };
150
- Test = __decorate([
151
- (0, injectable_decorator_1.Injectable)()
152
- ], Test);
153
- let moduleDeps;
154
- let test;
155
- beforeEach(() => {
156
- moduleDeps = new module_1.Module(Test, new container_1.VenokContainer());
157
- test = new wrapper_1.InstanceWrapper({
158
- name: "Test",
159
- token: "Test",
160
- metatype: Test,
161
- instance: null,
162
- isResolved: false,
163
- });
164
- moduleDeps.providers.set("Test", test);
165
- });
166
- it("should create prototype of instance", () => {
167
- injector.loadPrototype(test, moduleDeps.providers);
168
- (0, chai_2.expect)(moduleDeps.providers.get("Test").instance).to.deep.equal(Object.create(Test.prototype));
169
- });
170
- it("should return undefined when collection is nil", () => {
171
- const result = injector.loadPrototype(test, null);
172
- (0, chai_2.expect)(result).to.be.undefined;
173
- });
174
- it("should return undefined when target isResolved", () => {
175
- const collection = {
176
- get: () => ({
177
- getInstanceByContextId: () => ({ isResolved: true }),
178
- createPrototype: () => { },
179
- }),
180
- };
181
- const result = injector.loadPrototype(test, collection);
182
- (0, chai_2.expect)(result).to.be.undefined;
183
- });
184
- it('should return undefined when "inject" is not nil', () => {
185
- const collection = {
186
- get: () => new wrapper_1.InstanceWrapper({ inject: [] }),
187
- };
188
- const result = injector.loadPrototype(test, collection);
189
- (0, chai_2.expect)(result).to.be.undefined;
190
- });
191
- });
192
- describe("resolveSingleParam", () => {
193
- it('should throw "RuntimeException" when param is undefined', async () => {
194
- return (0, chai_2.expect)(injector.resolveSingleParam(null, undefined, { index: 0, dependencies: [] }, null)).to
195
- .eventually.be.rejected;
196
- });
197
- });
198
- describe("loadInjectable", () => {
199
- let loadInstance;
200
- beforeEach(() => {
201
- loadInstance = sinon_1.default.spy();
202
- injector.loadInstance = loadInstance;
203
- });
204
- it('should call "loadInstance" with expected arguments', async () => {
205
- const module = { injectables: [] };
206
- const wrapper = { test: "test" };
207
- await injector.loadInjectable(wrapper, module);
208
- (0, chai_2.expect)(loadInstance.calledWith(wrapper, module.injectables, module)).to.be.true;
209
- });
210
- });
211
- describe("lookupComponent", () => {
212
- let lookupComponentInImports;
213
- const metatype = { name: "test", metatype: { name: "test" } };
214
- const wrapper = new wrapper_1.InstanceWrapper({
215
- name: "Test",
216
- metatype: metatype,
217
- instance: null,
218
- isResolved: false,
219
- });
220
- beforeEach(() => {
221
- lookupComponentInImports = sinon_1.default.stub();
222
- injector.lookupComponentInImports = lookupComponentInImports;
223
- });
224
- it("should return object from collection if exists", async () => {
225
- const instance = { test: 3 };
226
- const collection = {
227
- has: () => true,
228
- get: () => instance,
229
- };
230
- const result = await injector.lookupComponent(collection, null, { name: metatype.name, index: 0, dependencies: [] }, wrapper);
231
- (0, chai_2.expect)(result).to.be.equal(instance);
232
- });
233
- it("should throw an exception if recursion happens", () => {
234
- const name = "RecursionService";
235
- const instance = { test: 3 };
236
- const collection = {
237
- has: () => true,
238
- get: () => instance,
239
- };
240
- const result = injector.lookupComponent(collection, null, { name, index: 0, dependencies: [] }, Object.assign(wrapper, {
241
- name,
242
- }));
243
- (0, chai_2.expect)(result).to.eventually.be.rejected;
244
- });
245
- it('should call "lookupComponentInImports" when object is not in collection', async () => {
246
- lookupComponentInImports.returns({});
247
- const collection = {
248
- has: () => false,
249
- };
250
- await injector.lookupComponent(collection, null, { name: metatype.name, index: 0, dependencies: [] }, wrapper);
251
- (0, chai_2.expect)(lookupComponentInImports.called).to.be.true;
252
- });
253
- it('should throw "UnknownDependenciesException" when instanceWrapper is null and "exports" collection does not contain token', () => {
254
- lookupComponentInImports.returns(null);
255
- const collection = {
256
- has: () => false,
257
- };
258
- const module = { exports: collection };
259
- (0, chai_2.expect)(injector.lookupComponent(collection, module, { name: metatype.name, index: 0, dependencies: [] }, wrapper)).to.eventually.be.rejected;
260
- });
261
- it('should not throw "UnknownDependenciesException" instanceWrapper is not null', () => {
262
- lookupComponentInImports.returns({});
263
- const collection = {
264
- has: () => false,
265
- };
266
- const module = { exports: collection };
267
- (0, chai_2.expect)(injector.lookupComponent(collection, module, { name: metatype.name, index: 0, dependencies: [] }, wrapper)).to.eventually.be.not.rejected;
268
- });
269
- });
270
- describe("lookupComponentInImports", () => {
271
- let loadProvider;
272
- const metatype = { name: "test" };
273
- const module = {
274
- relatedModules: new Map(),
275
- };
276
- beforeEach(() => {
277
- loadProvider = sinon_1.default.spy();
278
- injector.loadProvider = loadProvider;
279
- });
280
- it("should return null when there is no related modules", async () => {
281
- const result = await injector.lookupComponentInImports(module, "testToken", new wrapper_1.InstanceWrapper());
282
- (0, chai_2.expect)(result).to.be.eq(null);
283
- });
284
- it("should return null when related modules do not have appropriate component", () => {
285
- let moduleFixture = {
286
- relatedModules: new Map([
287
- [
288
- "key",
289
- {
290
- providers: {
291
- has: () => false,
292
- },
293
- exports: {
294
- has: () => true,
295
- },
296
- },
297
- ],
298
- ]),
299
- };
300
- (0, chai_2.expect)(injector.lookupComponentInImports(moduleFixture, metatype, null)).to.be.eventually.eq(null);
301
- moduleFixture = {
302
- relatedModules: new Map([
303
- [
304
- "key",
305
- {
306
- providers: {
307
- has: () => true,
308
- },
309
- exports: {
310
- has: () => false,
311
- },
312
- },
313
- ],
314
- ]),
315
- };
316
- (0, chai_2.expect)(injector.lookupComponentInImports(moduleFixture, metatype, null)).to.eventually.be.eq(null);
317
- });
318
- it('should call "loadProvider" when component is not resolved', async () => {
319
- const moduleFixture = {
320
- imports: new Map([
321
- [
322
- "key",
323
- {
324
- providers: {
325
- has: () => true,
326
- get: () => new wrapper_1.InstanceWrapper({
327
- isResolved: false,
328
- }),
329
- },
330
- exports: {
331
- has: () => true,
332
- },
333
- imports: new Map(),
334
- },
335
- ],
336
- ]),
337
- };
338
- await injector.lookupComponentInImports(moduleFixture, metatype, new wrapper_1.InstanceWrapper());
339
- (0, chai_2.expect)(loadProvider.called).to.be.true;
340
- });
341
- it('should not call "loadProvider" when component is resolved', async () => {
342
- const moduleFixture = {
343
- relatedModules: new Map([
344
- [
345
- "key",
346
- {
347
- providers: {
348
- has: () => true,
349
- get: () => ({
350
- isResolved: true,
351
- }),
352
- },
353
- exports: {
354
- has: () => true,
355
- },
356
- relatedModules: new Map(),
357
- },
358
- ],
359
- ]),
360
- };
361
- await injector.lookupComponentInImports(moduleFixture, metatype, null);
362
- (0, chai_2.expect)(loadProvider.called).to.be.false;
363
- });
364
- });
365
- describe("resolveParamToken", () => {
366
- let forwardRef;
367
- let wrapper;
368
- let param;
369
- describe('when "forwardRef" property is not nil', () => {
370
- beforeEach(() => {
371
- forwardRef = "test";
372
- wrapper = {};
373
- param = {
374
- forwardRef: () => forwardRef,
375
- };
376
- });
377
- it("return forwardRef() result", () => {
378
- (0, chai_2.expect)(injector.resolveParamToken(wrapper, param)).to.be.eql(forwardRef);
379
- });
380
- it('set wrapper "forwardRef" property to true', () => {
381
- injector.resolveParamToken(wrapper, param);
382
- (0, chai_2.expect)(wrapper.forwardRef).to.be.true;
383
- });
384
- });
385
- describe('when "forwardRef" property is nil', () => {
386
- beforeEach(() => {
387
- forwardRef = "test";
388
- wrapper = {};
389
- param = {};
390
- });
391
- it('set wrapper "forwardRef" property to false', () => {
392
- injector.resolveParamToken(wrapper, param);
393
- (0, chai_2.expect)(wrapper.forwardRef).to.be.undefined;
394
- });
395
- it("return param", () => {
396
- (0, chai_2.expect)(injector.resolveParamToken(wrapper, param)).to.be.eql(param);
397
- });
398
- });
399
- });
400
- describe("resolveComponentInstance", () => {
401
- let module;
402
- beforeEach(() => {
403
- module = {
404
- providers: [],
405
- };
406
- });
407
- describe("when instanceWrapper is not resolved and does not have forward ref", () => {
408
- it("should call loadProvider", async () => {
409
- const wrapper = new wrapper_1.InstanceWrapper({ isResolved: false });
410
- const loadStub = sinon_1.default.stub(injector, "loadProvider").callsFake(() => null);
411
- sinon_1.default.stub(injector, "lookupComponent").returns(Promise.resolve(wrapper));
412
- await injector.resolveComponentInstance(module, "", { index: 0, dependencies: [] }, wrapper);
413
- (0, chai_2.expect)(loadStub.called).to.be.true;
414
- });
415
- it("should not call loadProvider (isResolved)", async () => {
416
- const wrapper = new wrapper_1.InstanceWrapper({ isResolved: true });
417
- const loadStub = sinon_1.default.stub(injector, "loadProvider").callsFake(() => null);
418
- sinon_1.default.stub(injector, "lookupComponent").returns(Promise.resolve(wrapper));
419
- await injector.resolveComponentInstance(module, "", { index: 0, dependencies: [] }, wrapper);
420
- (0, chai_2.expect)(loadStub.called).to.be.false;
421
- });
422
- it("should not call loadProvider (forwardRef)", async () => {
423
- const wrapper = new wrapper_1.InstanceWrapper({
424
- isResolved: false,
425
- forwardRef: true,
426
- });
427
- const loadStub = sinon_1.default.stub(injector, "loadProvider").callsFake(() => null);
428
- sinon_1.default.stub(injector, "lookupComponent").returns(Promise.resolve(wrapper));
429
- await injector.resolveComponentInstance(module, "", { index: 0, dependencies: [] }, wrapper);
430
- (0, chai_2.expect)(loadStub.called).to.be.false;
431
- });
432
- });
433
- describe("when instanceWrapper has async property", () => {
434
- it("should await instance", async () => {
435
- sinon_1.default.stub(injector, "loadProvider").callsFake(() => null);
436
- const instance = Promise.resolve(true);
437
- const wrapper = new wrapper_1.InstanceWrapper({
438
- isResolved: false,
439
- forwardRef: true,
440
- async: true,
441
- instance,
442
- });
443
- sinon_1.default.stub(injector, "lookupComponent").returns(Promise.resolve(wrapper));
444
- const result = await injector.resolveComponentInstance(module, "", { index: 0, dependencies: [] }, wrapper);
445
- (0, chai_2.expect)(result.instance).to.be.true;
446
- });
447
- });
448
- });
449
- describe("applyProperties", () => {
450
- describe("when instance is not an object", () => {
451
- it("should return undefined", () => {
452
- (0, chai_2.expect)(injector.applyProperties("test", [])).to.be.undefined;
453
- });
454
- });
455
- describe("when instance is an object", () => {
456
- it("should apply each not nil property", () => {
457
- const properties = [
458
- { key: "one", instance: {} },
459
- { key: "two", instance: null },
460
- { key: "three", instance: true },
461
- ];
462
- const obj = {};
463
- injector.applyProperties(obj, properties);
464
- (0, chai_2.expect)(obj.one).to.be.eql(properties[0].instance);
465
- (0, chai_2.expect)(obj.two).to.be.undefined;
466
- (0, chai_2.expect)(obj.three).to.be.eql(properties[2].instance);
467
- });
468
- });
469
- });
470
- describe("instantiateClass", () => {
471
- class TestClass {
472
- }
473
- describe("when context is static", () => {
474
- it("should instantiate class", async () => {
475
- const wrapper = new wrapper_1.InstanceWrapper({ metatype: TestClass });
476
- await injector.instantiateClass([], wrapper, wrapper, constants_1.STATIC_CONTEXT);
477
- (0, chai_2.expect)(wrapper.instance).to.not.be.undefined;
478
- (0, chai_2.expect)(wrapper.instance).to.be.instanceOf(TestClass);
479
- });
480
- it("should call factory", async () => {
481
- const wrapper = new wrapper_1.InstanceWrapper({
482
- inject: [],
483
- metatype: (() => ({})),
484
- });
485
- await injector.instantiateClass([], wrapper, wrapper, constants_1.STATIC_CONTEXT);
486
- (0, chai_2.expect)(wrapper.instance).to.not.be.undefined;
487
- });
488
- });
489
- describe("when context is not static", () => {
490
- it("should not instantiate class", async () => {
491
- const ctx = { id: 3 };
492
- const wrapper = new wrapper_1.InstanceWrapper({ metatype: TestClass });
493
- await injector.instantiateClass([], wrapper, wrapper, ctx);
494
- (0, chai_2.expect)(wrapper.instance).to.be.undefined;
495
- (0, chai_2.expect)(wrapper.getInstanceByContextId(ctx).isResolved).to.be.true;
496
- });
497
- it("should not call factory", async () => {
498
- const wrapper = new wrapper_1.InstanceWrapper({
499
- inject: [],
500
- metatype: sinon_1.default.spy(),
501
- });
502
- await injector.instantiateClass([], wrapper, wrapper, { id: 2 });
503
- (0, chai_2.expect)(wrapper.instance).to.be.undefined;
504
- (0, chai_2.expect)(wrapper.metatype.called).to.be.false;
505
- });
506
- });
507
- });
508
- describe("loadPerContext", () => {
509
- class TestClass {
510
- }
511
- it("should load instance per context id", async () => {
512
- const container = new container_1.VenokContainer();
513
- const moduleCtor = class TestModule {
514
- };
515
- const ctx = constants_1.STATIC_CONTEXT;
516
- const { moduleRef } = (await container.addModule(moduleCtor, []));
517
- moduleRef.addProvider({
518
- provide: TestClass,
519
- useClass: TestClass,
520
- });
521
- const instance = await injector.loadPerContext(new TestClass(), moduleRef, moduleRef.providers, ctx);
522
- (0, chai_2.expect)(instance).to.be.instanceOf(TestClass);
523
- });
524
- });
525
- describe("loadEnhancersPerContext", () => {
526
- it("should load enhancers per context id", async () => {
527
- const wrapper = new wrapper_1.InstanceWrapper();
528
- wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({
529
- host: new module_1.Module(class {
530
- }, new container_1.VenokContainer()),
531
- }));
532
- wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({
533
- host: new module_1.Module(class {
534
- }, new container_1.VenokContainer()),
535
- }));
536
- const loadInstanceStub = sinon_1.default.stub(injector, "loadInstance").callsFake(async () => ({}));
537
- await injector.loadEnhancersPerContext(wrapper, constants_1.STATIC_CONTEXT);
538
- (0, chai_2.expect)(loadInstanceStub.calledTwice).to.be.true;
539
- });
540
- });
541
- describe("loadCtorMetadata", () => {
542
- it("should resolve ctor metadata", async () => {
543
- const wrapper = new wrapper_1.InstanceWrapper();
544
- wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
545
- wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper());
546
- const resolveComponentHostStub = sinon_1.default
547
- .stub(injector, "resolveComponentHost")
548
- .callsFake(async () => new wrapper_1.InstanceWrapper());
549
- await injector.loadCtorMetadata(wrapper.getCtorMetadata(), constants_1.STATIC_CONTEXT);
550
- (0, chai_2.expect)(resolveComponentHostStub.calledTwice).to.be.true;
551
- });
552
- });
553
- describe("loadPropertiesMetadata", () => {
554
- it("should resolve properties metadata", async () => {
555
- const wrapper = new wrapper_1.InstanceWrapper();
556
- wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
557
- wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper());
558
- const resolveComponentHostStub = sinon_1.default
559
- .stub(injector, "resolveComponentHost")
560
- .callsFake(async () => new wrapper_1.InstanceWrapper());
561
- await injector.loadPropertiesMetadata(wrapper.getPropertiesMetadata(), constants_1.STATIC_CONTEXT);
562
- (0, chai_2.expect)(resolveComponentHostStub.calledTwice).to.be.true;
563
- });
564
- });
565
- describe("resolveConstructorParams", () => {
566
- it('should call "loadCtorMetadata" if metadata is not undefined', async () => {
567
- const wrapper = new wrapper_1.InstanceWrapper();
568
- const metadata = [];
569
- sinon_1.default.stub(wrapper, "getCtorMetadata").callsFake(() => metadata);
570
- const loadCtorMetadataSpy = sinon_1.default.spy(injector, "loadCtorMetadata");
571
- await injector.resolveConstructorParams(wrapper, null, [], () => {
572
- (0, chai_2.expect)(loadCtorMetadataSpy.called).to.be.true;
573
- }, { id: 2 });
574
- });
575
- });
576
- describe("resolveProperties", () => {
577
- it('should call "loadPropertiesMetadata" if metadata is not undefined', async () => {
578
- const wrapper = new wrapper_1.InstanceWrapper();
579
- const metadata = [];
580
- sinon_1.default.stub(wrapper, "getPropertiesMetadata").callsFake(() => metadata);
581
- const loadPropertiesMetadataSpy = sinon_1.default.spy(injector, "loadPropertiesMetadata");
582
- await injector.resolveProperties(wrapper, null, null, { id: 2 });
583
- (0, chai_2.expect)(loadPropertiesMetadataSpy.called).to.be.true;
584
- });
585
- });
586
- describe("getClassDependencies", () => {
587
- it("should return an array that consists of deps and optional dep ids", async () => {
588
- class FixtureDep1 {
589
- }
590
- class FixtureDep2 {
591
- }
592
- let FixtureClass = class FixtureClass {
593
- constructor(dep1, dep2) {
594
- this.dep1 = dep1;
595
- this.dep2 = dep2;
596
- }
597
- };
598
- FixtureClass = __decorate([
599
- (0, injectable_decorator_1.Injectable)(),
600
- __param(1, (0, optional_decorator_1.Optional)()),
601
- __metadata("design:paramtypes", [FixtureDep1,
602
- FixtureDep2])
603
- ], FixtureClass);
604
- const wrapper = new wrapper_1.InstanceWrapper({ metatype: FixtureClass });
605
- const [dependencies, optionalDependenciesIds] = injector.getClassDependencies(wrapper);
606
- (0, chai_2.expect)(dependencies).to.deep.eq([FixtureDep1, FixtureDep2]);
607
- (0, chai_2.expect)(optionalDependenciesIds).to.deep.eq([1]);
608
- });
609
- it("should not mutate the constructor metadata", async () => {
610
- class FixtureDep1 {
611
- }
612
- /** This needs to be something other than FixtureDep1 so the test can ensure that the metadata was not mutated */
613
- const injectionToken = "test_token";
614
- let FixtureClass = class FixtureClass {
615
- constructor(dep1) {
616
- this.dep1 = dep1;
617
- }
618
- };
619
- FixtureClass = __decorate([
620
- (0, injectable_decorator_1.Injectable)(),
621
- __param(0, (0, inject_decorator_1.Inject)(injectionToken)),
622
- __metadata("design:paramtypes", [FixtureDep1])
623
- ], FixtureClass);
624
- const wrapper = new wrapper_1.InstanceWrapper({ metatype: FixtureClass });
625
- const [dependencies] = injector.getClassDependencies(wrapper);
626
- (0, chai_2.expect)(dependencies).to.deep.eq([injectionToken]);
627
- const paramtypes = Reflect.getMetadata(constants_2.PARAMTYPES_METADATA, FixtureClass);
628
- (0, chai_2.expect)(paramtypes).to.deep.eq([FixtureDep1]);
629
- });
630
- });
631
- describe("getFactoryProviderDependencies", () => {
632
- it("should return an array that consists of deps and optional dep ids", async () => {
633
- class FixtureDep1 {
634
- }
635
- class FixtureDep2 {
636
- }
637
- const wrapper = new wrapper_1.InstanceWrapper({
638
- inject: [
639
- FixtureDep1,
640
- { token: FixtureDep2, optional: true },
641
- { token: FixtureDep2, optional: false },
642
- {},
643
- ],
644
- });
645
- const [dependencies, optionalDependenciesIds] = injector.getFactoryProviderDependencies(wrapper);
646
- (0, chai_2.expect)(dependencies).to.deep.eq([FixtureDep1, FixtureDep2, FixtureDep2, {}]);
647
- (0, chai_2.expect)(optionalDependenciesIds).to.deep.eq([1]);
648
- });
649
- });
650
- describe("addDependencyMetadata", () => {
651
- let exposedInjector;
652
- let hostWrapper;
653
- let instanceWrapper;
654
- beforeEach(() => {
655
- exposedInjector = injector;
656
- hostWrapper = new wrapper_1.InstanceWrapper();
657
- instanceWrapper = new wrapper_1.InstanceWrapper();
658
- });
659
- it("should add dependency metadata to PropertiesMetadata when key is symbol", async () => {
660
- const addPropertiesMetadataSpy = sinon_1.default.spy(hostWrapper, "addPropertiesMetadata");
661
- const key = Symbol.for("symbol");
662
- exposedInjector.addDependencyMetadata(key, hostWrapper, instanceWrapper);
663
- (0, chai_2.expect)(addPropertiesMetadataSpy.called).to.be.true;
664
- });
665
- it("should add dependency metadata to PropertiesMetadata when key is string", async () => {
666
- const addPropertiesMetadataSpy = sinon_1.default.spy(hostWrapper, "addPropertiesMetadata");
667
- const key = "string";
668
- exposedInjector.addDependencyMetadata(key, hostWrapper, instanceWrapper);
669
- (0, chai_2.expect)(addPropertiesMetadataSpy.called).to.be.true;
670
- });
671
- it("should add dependency metadata to CtorMetadata when key is number", async () => {
672
- const addCtorMetadataSpy = sinon_1.default.spy(hostWrapper, "addCtorMetadata");
673
- const key = 0;
674
- exposedInjector.addDependencyMetadata(key, hostWrapper, instanceWrapper);
675
- (0, chai_2.expect)(addCtorMetadataSpy.called).to.be.true;
676
- });
677
- });
678
- });
@@ -1 +0,0 @@
1
- import "reflect-metadata";