@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 @@
1
+ import "reflect-metadata";
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const chai_1 = require("chai");
5
+ const container_1 = require("@venok/core/injector/module/container");
6
+ const internal_core_module_factory_1 = require("@venok/core/injector/internal-core-module/internal-core-module-factory");
7
+ const container_2 = require("@venok/core/injector/container");
8
+ const internal_core_module_1 = require("@venok/core/injector/internal-core-module/internal-core-module");
9
+ const loader_1 = require("@venok/core/injector/module/lazy/loader");
10
+ const serialized_graph_1 = require("@venok/core/inspector/serialized-graph");
11
+ const creator_1 = require("@venok/core/context/external/creator");
12
+ describe("InternalCoreModuleFactory", () => {
13
+ it("should return the internal core module definition", () => {
14
+ const moduleDefinition = internal_core_module_factory_1.InternalCoreModuleFactory.create(new container_2.VenokContainer(), null, null, null, null);
15
+ (0, chai_1.expect)(moduleDefinition.module).to.equal(internal_core_module_1.InternalCoreModule);
16
+ const providedInjectables = moduleDefinition.providers.map((item) => item.provide);
17
+ (0, chai_1.expect)(providedInjectables).to.deep.equal([
18
+ creator_1.ExternalContextCreator,
19
+ container_1.ModulesContainer,
20
+ // HttpAdapterHost,
21
+ loader_1.LazyModuleLoader,
22
+ serialized_graph_1.SerializedGraph,
23
+ ]);
24
+ const lazyModuleLoaderProvider = moduleDefinition.providers.find((item) => item?.provide === loader_1.LazyModuleLoader);
25
+ (0, chai_1.expect)(lazyModuleLoaderProvider.useFactory()).to.be.instanceOf(loader_1.LazyModuleLoader);
26
+ });
27
+ });
@@ -0,0 +1 @@
1
+ import "reflect-metadata";
@@ -0,0 +1,71 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ require("reflect-metadata");
10
+ const chai_1 = require("chai");
11
+ const loader_1 = require("@venok/core/injector/module/lazy/loader");
12
+ const scanner_1 = require("@venok/core/scanner");
13
+ const loader_2 = require("@venok/core/injector/instance/loader");
14
+ const graph_inspector_1 = require("@venok/core/inspector/graph-inspector");
15
+ const metadata_scanner_1 = require("@venok/core/metadata-scanner");
16
+ const injector_1 = require("@venok/core/injector/injector");
17
+ const container_1 = require("@venok/core/injector/container");
18
+ const module_decorator_1 = require("@venok/core/decorators/module.decorator");
19
+ describe("LazyModuleLoader", () => {
20
+ let lazyModuleLoader;
21
+ let dependenciesScanner;
22
+ let instanceLoader;
23
+ let modulesContainer;
24
+ class NoopLogger {
25
+ log() { }
26
+ error() { }
27
+ warn() { }
28
+ }
29
+ beforeEach(() => {
30
+ const venokContainer = new container_1.VenokContainer();
31
+ const graphInspector = new graph_inspector_1.GraphInspector(venokContainer);
32
+ dependenciesScanner = new scanner_1.DependenciesScanner(venokContainer, new metadata_scanner_1.MetadataScanner(), graphInspector);
33
+ const injector = new injector_1.Injector();
34
+ instanceLoader = new loader_2.InstanceLoader(venokContainer, injector, graphInspector, new NoopLogger());
35
+ modulesContainer = venokContainer.getModules();
36
+ lazyModuleLoader = new loader_1.LazyModuleLoader(dependenciesScanner, instanceLoader, venokContainer["moduleCompiler"], modulesContainer);
37
+ });
38
+ describe("load", () => {
39
+ const bProvider = { provide: "B", useValue: "B" };
40
+ let ModuleB = class ModuleB {
41
+ };
42
+ ModuleB = __decorate([
43
+ (0, module_decorator_1.Module)({ providers: [bProvider], exports: [bProvider] })
44
+ ], ModuleB);
45
+ let ModuleA = class ModuleA {
46
+ };
47
+ ModuleA = __decorate([
48
+ (0, module_decorator_1.Module)({ imports: [ModuleB] })
49
+ ], ModuleA);
50
+ // describe("when module was not loaded yet", () => {
51
+ // it("should load it and return a module reference", async () => {
52
+ // const moduleRef = await lazyModuleLoader.load(() => ModuleA);
53
+ // console.log(moduleRef, ModuleRef);
54
+ // expect(moduleRef).to.be.instanceOf(ModuleRef);
55
+ // expect(moduleRef.get(bProvider.provide, { strict: false })).to.equal(bProvider.useValue);
56
+ // });
57
+ // });
58
+ describe("when module was loaded already", () => {
59
+ let ModuleC = class ModuleC {
60
+ };
61
+ ModuleC = __decorate([
62
+ (0, module_decorator_1.Module)({})
63
+ ], ModuleC);
64
+ it("should return an existing module reference", async () => {
65
+ const moduleRef = await lazyModuleLoader.load(() => ModuleC);
66
+ const moduleRef2 = await lazyModuleLoader.load(() => ModuleC);
67
+ (0, chai_1.expect)(moduleRef).to.equal(moduleRef2);
68
+ });
69
+ });
70
+ });
71
+ });
@@ -0,0 +1 @@
1
+ import "reflect-metadata";
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ require("reflect-metadata");
33
+ const chai_1 = require("chai");
34
+ const sinon = __importStar(require("sinon"));
35
+ const module_decorator_1 = require("@venok/core/decorators/module.decorator");
36
+ const module_1 = require("@venok/core/injector/module/module");
37
+ const container_1 = require("@venok/core/injector/container");
38
+ const injectable_decorator_1 = require("@venok/core/decorators/injectable.decorator");
39
+ const interfaces_1 = require("@venok/core/interfaces");
40
+ const wrapper_1 = require("@venok/core/injector/instance/wrapper");
41
+ const exceptions_1 = require("@venok/core/errors/exceptions");
42
+ describe("Module", () => {
43
+ let module;
44
+ let container;
45
+ let TestModule = class TestModule {
46
+ };
47
+ TestModule = __decorate([
48
+ (0, module_decorator_1.Module)({})
49
+ ], TestModule);
50
+ let TestProvider = class TestProvider {
51
+ };
52
+ TestProvider = __decorate([
53
+ (0, injectable_decorator_1.Injectable)()
54
+ ], TestProvider);
55
+ beforeEach(() => {
56
+ container = new container_1.VenokContainer();
57
+ module = new module_1.Module(TestModule, container);
58
+ });
59
+ it("should add injectable", () => {
60
+ const collection = new Map();
61
+ const setSpy = sinon.spy(collection, "set");
62
+ module._injectables = collection;
63
+ module.addInjectable(TestProvider, "interceptor", TestModule);
64
+ (0, chai_1.expect)(setSpy.calledWith(TestProvider, new wrapper_1.InstanceWrapper({
65
+ host: module,
66
+ name: "TestProvider",
67
+ token: TestProvider,
68
+ scope: undefined,
69
+ metatype: TestProvider,
70
+ instance: null,
71
+ durable: undefined,
72
+ isResolved: false,
73
+ subtype: "interceptor",
74
+ }))).to.be.true;
75
+ });
76
+ describe("when injectable is custom provided", () => {
77
+ it("should call `addCustomProvider`", () => {
78
+ const addCustomProviderSpy = sinon.spy(module, "addCustomProvider");
79
+ module.addInjectable({ provide: "test" }, "guard");
80
+ (0, chai_1.expect)(addCustomProviderSpy.called).to.be.true;
81
+ });
82
+ });
83
+ it("should add provider", () => {
84
+ const collection = new Map();
85
+ const setSpy = sinon.spy(collection, "set");
86
+ module._providers = collection;
87
+ module.addProvider(TestProvider);
88
+ (0, chai_1.expect)(setSpy.calledWith(TestProvider, new wrapper_1.InstanceWrapper({
89
+ host: module,
90
+ name: "TestProvider",
91
+ token: TestProvider,
92
+ scope: undefined,
93
+ metatype: TestProvider,
94
+ durable: undefined,
95
+ instance: null,
96
+ isResolved: false,
97
+ }))).to.be.true;
98
+ });
99
+ it('should call "addCustomProvider" when "provide" property exists', () => {
100
+ const addCustomProvider = sinon.spy();
101
+ module.addCustomProvider = addCustomProvider;
102
+ const provider = { provide: "test", useValue: "test" };
103
+ module.addProvider(provider);
104
+ (0, chai_1.expect)(addCustomProvider.called).to.be.true;
105
+ });
106
+ it('should call "addCustomClass" when "useClass" property exists', () => {
107
+ const addCustomClass = sinon.spy();
108
+ module.addCustomClass = addCustomClass;
109
+ const provider = { provide: "test", useClass: () => null };
110
+ module.addCustomProvider(provider, new Map());
111
+ (0, chai_1.expect)(addCustomClass.called).to.be.true;
112
+ });
113
+ it('should call "addCustomValue" when "useValue" property exists', () => {
114
+ const addCustomValue = sinon.spy();
115
+ module.addCustomValue = addCustomValue;
116
+ const provider = { provide: "test", useValue: () => null };
117
+ module.addCustomProvider(provider, new Map());
118
+ (0, chai_1.expect)(addCustomValue.called).to.be.true;
119
+ });
120
+ it('should call "addCustomValue" when "useValue" property exists but its value is `undefined`', () => {
121
+ const addCustomValue = sinon.spy();
122
+ module.addCustomValue = addCustomValue;
123
+ const provider = { provide: "test", useValue: undefined };
124
+ module.addCustomProvider(provider, new Map());
125
+ (0, chai_1.expect)(addCustomValue.called).to.be.true;
126
+ });
127
+ it('should call "addCustomFactory" when "useFactory" property exists', () => {
128
+ const addCustomFactory = sinon.spy();
129
+ module.addCustomFactory = addCustomFactory;
130
+ const provider = { provide: "test", useFactory: () => null };
131
+ module.addCustomProvider(provider, new Map());
132
+ (0, chai_1.expect)(addCustomFactory.called).to.be.true;
133
+ });
134
+ it('should call "addCustomUseExisting" when "useExisting" property exists', () => {
135
+ const addCustomUseExisting = sinon.spy();
136
+ module.addCustomUseExisting = addCustomUseExisting;
137
+ const provider = { provide: "test", useExisting: () => null };
138
+ module.addCustomUseExisting(provider, new Map());
139
+ (0, chai_1.expect)(addCustomUseExisting.called).to.be.true;
140
+ });
141
+ describe("addCustomClass", () => {
142
+ const type = { name: "TypeTest" };
143
+ const provider = { provide: type, useClass: type, durable: true };
144
+ let setSpy;
145
+ beforeEach(() => {
146
+ const collection = new Map();
147
+ setSpy = sinon.spy(collection, "set");
148
+ module._providers = collection;
149
+ });
150
+ it("should store provider", () => {
151
+ module.addCustomClass(provider, module._providers);
152
+ (0, chai_1.expect)(setSpy.calledWith(provider.provide, new wrapper_1.InstanceWrapper({
153
+ host: module,
154
+ token: type,
155
+ name: provider.provide.name,
156
+ scope: undefined,
157
+ metatype: type,
158
+ durable: true,
159
+ instance: null,
160
+ isResolved: false,
161
+ subtype: undefined,
162
+ }))).to.be.true;
163
+ });
164
+ });
165
+ describe("addCustomValue", () => {
166
+ let setSpy;
167
+ const value = () => ({});
168
+ const provider = { provide: value, useValue: value };
169
+ beforeEach(() => {
170
+ const collection = new Map();
171
+ setSpy = sinon.spy(collection, "set");
172
+ module._providers = collection;
173
+ });
174
+ it("should store provider", () => {
175
+ module.addCustomValue(provider, module._providers);
176
+ (0, chai_1.expect)(setSpy.calledWith(provider.provide, new wrapper_1.InstanceWrapper({
177
+ host: module,
178
+ token: provider.provide,
179
+ name: provider.provide.name,
180
+ scope: interfaces_1.Scope.DEFAULT,
181
+ metatype: null,
182
+ instance: value,
183
+ isResolved: true,
184
+ async: false,
185
+ subtype: undefined,
186
+ }))).to.be.true;
187
+ });
188
+ });
189
+ describe("addCustomFactory", () => {
190
+ const type = { name: "TypeTest" };
191
+ const inject = [1, 2, 3];
192
+ const provider = { provide: type, useFactory: type, inject, durable: true };
193
+ let setSpy;
194
+ beforeEach(() => {
195
+ const collection = new Map();
196
+ setSpy = sinon.spy(collection, "set");
197
+ module._providers = collection;
198
+ });
199
+ it("should store provider", () => {
200
+ module.addCustomFactory(provider, module._providers);
201
+ (0, chai_1.expect)(setSpy.calledWith(provider.provide, new wrapper_1.InstanceWrapper({
202
+ host: module,
203
+ token: provider.provide,
204
+ name: provider.provide.name,
205
+ scope: undefined,
206
+ metatype: type,
207
+ durable: true,
208
+ instance: null,
209
+ isResolved: false,
210
+ inject: inject,
211
+ subtype: undefined,
212
+ }))).to.be.true;
213
+ });
214
+ });
215
+ describe("addCustomUseExisting", () => {
216
+ const type = { name: "TypeTest" };
217
+ const provider = { provide: type, useExisting: type };
218
+ let setSpy;
219
+ beforeEach(() => {
220
+ const collection = new Map();
221
+ setSpy = sinon.spy(collection, "set");
222
+ module._providers = collection;
223
+ });
224
+ it("should store provider", () => {
225
+ module.addCustomUseExisting(provider, module._providers);
226
+ const factoryFn = module._providers.get(provider.provide).metatype;
227
+ const token = provider.provide;
228
+ (0, chai_1.expect)(setSpy.calledWith(token, new wrapper_1.InstanceWrapper({
229
+ host: module,
230
+ token,
231
+ name: provider.provide.name,
232
+ metatype: factoryFn,
233
+ instance: null,
234
+ inject: [provider.useExisting],
235
+ isResolved: false,
236
+ isAlias: true,
237
+ subtype: undefined,
238
+ }))).to.be.true;
239
+ (0, chai_1.expect)(factoryFn(provider.useExisting)).to.be.eql(type);
240
+ });
241
+ });
242
+ describe("when get instance", () => {
243
+ describe("when metatype does not exists in providers collection", () => {
244
+ beforeEach(() => {
245
+ sinon.stub(module._providers, "has").returns(false);
246
+ });
247
+ it("should throw RuntimeException", () => {
248
+ (0, chai_1.expect)(() => module.instance).to.throws(exceptions_1.RuntimeException);
249
+ });
250
+ });
251
+ describe("when metatype exists in providers collection", () => {
252
+ it("should return null", () => {
253
+ (0, chai_1.expect)(module.instance).to.be.eql(null);
254
+ });
255
+ });
256
+ });
257
+ describe("when exported provider is custom provided", () => {
258
+ beforeEach(() => {
259
+ sinon.stub(module, "validateExportedProvider").callsFake((o) => o);
260
+ });
261
+ it("should call `addCustomExportedProvider`", () => {
262
+ const addCustomExportedProviderSpy = sinon.spy(module, "addCustomExportedProvider");
263
+ module.addExportedProvider({ provide: "test" });
264
+ (0, chai_1.expect)(addCustomExportedProviderSpy.called).to.be.true;
265
+ });
266
+ it("should support symbols", () => {
267
+ const addCustomExportedProviderSpy = sinon.spy(module, "addCustomExportedProvider");
268
+ const symb = Symbol("test");
269
+ module.addExportedProvider({ provide: symb });
270
+ (0, chai_1.expect)(addCustomExportedProviderSpy.called).to.be.true;
271
+ (0, chai_1.expect)(module._exports.has(symb)).to.be.true;
272
+ });
273
+ });
274
+ describe("replace", () => {
275
+ describe("when provider", () => {
276
+ it("should call `mergeWith`", () => {
277
+ const wrapper = {
278
+ mergeWith: sinon.spy(),
279
+ };
280
+ sinon.stub(module, "hasProvider").callsFake(() => true);
281
+ sinon.stub(module.providers, "get").callsFake(() => wrapper);
282
+ module.replace(null, { isProvider: true });
283
+ (0, chai_1.expect)(wrapper.mergeWith.called).to.be.true;
284
+ });
285
+ });
286
+ describe("when guard", () => {
287
+ it("should call `mergeWith`", () => {
288
+ const wrapper = {
289
+ mergeWith: sinon.spy(),
290
+ isProvider: true,
291
+ };
292
+ sinon.stub(module, "hasInjectable").callsFake(() => true);
293
+ sinon.stub(module.injectables, "get").callsFake(() => wrapper);
294
+ module.replace(null, {});
295
+ (0, chai_1.expect)(wrapper.mergeWith.called).to.be.true;
296
+ });
297
+ });
298
+ });
299
+ describe("imports", () => {
300
+ it("should return relatedModules", () => {
301
+ const test = ["test"];
302
+ module._imports = test;
303
+ (0, chai_1.expect)(module.imports).to.be.eql(test);
304
+ });
305
+ });
306
+ describe("injectables", () => {
307
+ it("should return injectables", () => {
308
+ const test = ["test"];
309
+ module._injectables = test;
310
+ (0, chai_1.expect)(module.injectables).to.be.eql(test);
311
+ });
312
+ });
313
+ describe("exports", () => {
314
+ it("should return exports", () => {
315
+ const test = ["test"];
316
+ module._exports = test;
317
+ (0, chai_1.expect)(module.exports).to.be.eql(test);
318
+ });
319
+ });
320
+ describe("providers", () => {
321
+ it("should return providers", () => {
322
+ const test = ["test"];
323
+ module._providers = test;
324
+ (0, chai_1.expect)(module.providers).to.be.eql(test);
325
+ });
326
+ });
327
+ describe("createModuleReferenceType", () => {
328
+ let moduleRef;
329
+ beforeEach(() => {
330
+ const Class = module.createModuleReferenceType();
331
+ moduleRef = new Class();
332
+ });
333
+ it('should return metatype with "get" method', () => {
334
+ (0, chai_1.expect)(!!moduleRef.get).to.be.true;
335
+ });
336
+ describe("get", () => {
337
+ it("should throw exception if not exists", () => {
338
+ (0, chai_1.expect)(() => moduleRef.get("fail")).to.throws(exceptions_1.UnknownElementException);
339
+ });
340
+ });
341
+ });
342
+ describe("validateExportedProvider", () => {
343
+ const token = "token";
344
+ describe("when unit exists in provider collection", () => {
345
+ it("should behave as identity", () => {
346
+ module._providers = new Map([[token, true]]);
347
+ (0, chai_1.expect)(module.validateExportedProvider(token)).to.be.eql(token);
348
+ });
349
+ });
350
+ describe("when unit exists in related modules collection", () => {
351
+ it("should behave as identity", () => {
352
+ class Random {
353
+ }
354
+ module._imports = new Set([new module_1.Module(Random, new container_1.VenokContainer())]);
355
+ (0, chai_1.expect)(module.validateExportedProvider(Random)).to.be.eql(Random);
356
+ });
357
+ });
358
+ describe("when unit does not exist in both provider and related modules collections", () => {
359
+ it("should throw UnknownExportException", () => {
360
+ (0, chai_1.expect)(() => module.validateExportedProvider(token)).to.throws(exceptions_1.UnknownExportException);
361
+ });
362
+ });
363
+ });
364
+ describe("hasProvider", () => {
365
+ describe("when module has provider", () => {
366
+ it("should return true", () => {
367
+ const token = "test";
368
+ module.providers.set(token, new wrapper_1.InstanceWrapper());
369
+ (0, chai_1.expect)(module.hasProvider(token)).to.be.true;
370
+ });
371
+ });
372
+ describe("otherwise", () => {
373
+ it("should return false", () => {
374
+ (0, chai_1.expect)(module.hasProvider("_")).to.be.false;
375
+ });
376
+ });
377
+ });
378
+ describe("hasInjectable", () => {
379
+ describe("when module has injectable", () => {
380
+ it("should return true", () => {
381
+ const token = "test";
382
+ module.injectables.set(token, new wrapper_1.InstanceWrapper());
383
+ (0, chai_1.expect)(module.hasInjectable(token)).to.be.true;
384
+ });
385
+ });
386
+ describe("otherwise", () => {
387
+ it("should return false", () => {
388
+ (0, chai_1.expect)(module.hasInjectable("_")).to.be.false;
389
+ });
390
+ });
391
+ });
392
+ describe('getter "id"', () => {
393
+ it("should return module id", () => {
394
+ (0, chai_1.expect)(module.id).to.be.equal(module["_id"]);
395
+ });
396
+ });
397
+ describe("getProviderByKey", () => {
398
+ describe("when does not exist", () => {
399
+ it("should return undefined", () => {
400
+ (0, chai_1.expect)(module.getProviderByKey("test")).to.be.undefined;
401
+ });
402
+ });
403
+ describe("otherwise", () => {
404
+ it("should return instance wrapper", () => {
405
+ module.addProvider(TestProvider);
406
+ (0, chai_1.expect)(module.getProviderByKey(TestProvider)).to.not.be.undefined;
407
+ });
408
+ });
409
+ });
410
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chai_1 = require("chai");
7
+ const sinon_1 = __importDefault(require("sinon"));
8
+ const token_factory_1 = require("@venok/core/injector/module/token-factory");
9
+ describe("ModuleTokenFactory", () => {
10
+ const moduleId = "constId";
11
+ let factory;
12
+ beforeEach(() => {
13
+ factory = new token_factory_1.TokenFactory();
14
+ sinon_1.default.stub(factory, "getModuleId").returns(moduleId);
15
+ });
16
+ describe("create", () => {
17
+ class Module {
18
+ }
19
+ it("should return expected token", () => {
20
+ const type = Module;
21
+ const token1 = factory.create(type, undefined);
22
+ const token2 = factory.create(type, undefined);
23
+ (0, chai_1.expect)(token1).to.be.deep.eq(token2);
24
+ });
25
+ it("should include dynamic metadata", () => {
26
+ const type = Module;
27
+ const token1 = factory.create(type, {
28
+ providers: [{}],
29
+ });
30
+ const token2 = factory.create(type, {
31
+ providers: [{}],
32
+ });
33
+ (0, chai_1.expect)(token1).to.be.deep.eq(token2);
34
+ });
35
+ });
36
+ describe("getModuleName", () => {
37
+ it("should map module metatype to name", () => {
38
+ const metatype = () => { };
39
+ (0, chai_1.expect)(factory.getModuleName(metatype)).to.be.eql(metatype.name);
40
+ });
41
+ });
42
+ describe("getStringifiedOpaqueToken", () => {
43
+ describe("when metadata exists", () => {
44
+ it("should return hash", () => {
45
+ const metadata = { providers: ["", {}] };
46
+ (0, chai_1.expect)(factory.getStringifiedOpaqueToken(metadata)).to.be.eql(JSON.stringify(metadata));
47
+ });
48
+ it("should return hash with class", () => {
49
+ class Provider {
50
+ }
51
+ const metadata = { providers: [Provider], exports: [Provider] };
52
+ (0, chai_1.expect)(factory.getStringifiedOpaqueToken(metadata)).to.be.eql('{"providers":["Provider"],"exports":["Provider"]}');
53
+ });
54
+ it("should return hash with value provider with non-class function", () => {
55
+ const provider = {
56
+ provide: "ProvideValue",
57
+ useValue: function Provider() { },
58
+ };
59
+ const metadata = { providers: [provider] };
60
+ (0, chai_1.expect)(factory.getStringifiedOpaqueToken(metadata)).to.be.eql(`{"providers":[{"provide":"ProvideValue","useValue":"${provider.useValue.toString()}"}]}`);
61
+ });
62
+ it("should serialize symbols in a dynamic metadata object", () => {
63
+ const metadata = {
64
+ providers: [
65
+ {
66
+ provide: Symbol("a"),
67
+ useValue: "a",
68
+ },
69
+ {
70
+ provide: Symbol("b"),
71
+ useValue: "b",
72
+ },
73
+ ],
74
+ };
75
+ (0, chai_1.expect)(factory.getStringifiedOpaqueToken(metadata)).to.be.eql('{"providers":[{"provide":"Symbol(a)","useValue":"a"},{"provide":"Symbol(b)","useValue":"b"}]}');
76
+ });
77
+ });
78
+ describe("when metadata does not exist", () => {
79
+ it("should return empty string", () => {
80
+ (0, chai_1.expect)(factory.getStringifiedOpaqueToken(undefined)).to.be.eql("");
81
+ });
82
+ });
83
+ });
84
+ });
@@ -0,0 +1 @@
1
+ export {};