@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,772 @@
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
+ require("reflect-metadata");
7
+ const chai_1 = require("chai");
8
+ const sinon_1 = __importDefault(require("sinon"));
9
+ const wrapper_1 = require("@venok/core/injector/instance/wrapper");
10
+ const interfaces_1 = require("@venok/core/interfaces");
11
+ const constants_1 = require("@venok/core/injector/constants");
12
+ class TestClass {
13
+ }
14
+ describe("InstanceWrapper", () => {
15
+ describe("initialize", () => {
16
+ const partial = {
17
+ name: "test",
18
+ metatype: TestClass,
19
+ scope: interfaces_1.Scope.DEFAULT,
20
+ instance: new TestClass(),
21
+ };
22
+ it("should assign partial", () => {
23
+ const instance = new wrapper_1.InstanceWrapper(partial);
24
+ (0, chai_1.expect)(instance.name).to.be.eql(partial.name);
25
+ (0, chai_1.expect)(instance.scope).to.be.eql(partial.scope);
26
+ (0, chai_1.expect)(instance.metatype).to.be.eql(partial.metatype);
27
+ });
28
+ it("should set instance by context id", () => {
29
+ const instance = new wrapper_1.InstanceWrapper(partial);
30
+ (0, chai_1.expect)(instance.getInstanceByContextId(constants_1.STATIC_CONTEXT).instance).to.be.eql(partial.instance);
31
+ });
32
+ });
33
+ describe("isDependencyTreeStatic", () => {
34
+ describe("when circular reference", () => {
35
+ it("should return true", () => {
36
+ const wrapper = new wrapper_1.InstanceWrapper();
37
+ const otherWrapper = new wrapper_1.InstanceWrapper();
38
+ wrapper.addCtorMetadata(0, otherWrapper);
39
+ otherWrapper.addCtorMetadata(0, wrapper);
40
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.true;
41
+ (0, chai_1.expect)(otherWrapper.isDependencyTreeStatic()).to.be.true;
42
+ });
43
+ });
44
+ describe("when circular reference and one non static", () => {
45
+ it("should return false", () => {
46
+ const wrapper = new wrapper_1.InstanceWrapper();
47
+ const otherWrapper = new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST });
48
+ wrapper.addCtorMetadata(0, otherWrapper);
49
+ otherWrapper.addCtorMetadata(0, wrapper);
50
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
51
+ (0, chai_1.expect)(otherWrapper.isDependencyTreeStatic()).to.be.false;
52
+ });
53
+ });
54
+ describe("when circular reference and one durable", () => {
55
+ it("should return false", () => {
56
+ const wrapper = new wrapper_1.InstanceWrapper();
57
+ const otherWrapper = new wrapper_1.InstanceWrapper({
58
+ scope: interfaces_1.Scope.REQUEST,
59
+ durable: true,
60
+ });
61
+ wrapper.addCtorMetadata(0, otherWrapper);
62
+ otherWrapper.addCtorMetadata(0, wrapper);
63
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
64
+ (0, chai_1.expect)(otherWrapper.isDependencyTreeStatic()).to.be.false;
65
+ });
66
+ });
67
+ describe("when request scoped", () => {
68
+ it("should return false", () => {
69
+ const wrapper = new wrapper_1.InstanceWrapper({
70
+ scope: interfaces_1.Scope.REQUEST,
71
+ });
72
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
73
+ });
74
+ });
75
+ describe("when request scoped durable", () => {
76
+ it("should return false", () => {
77
+ const wrapper = new wrapper_1.InstanceWrapper({
78
+ scope: interfaces_1.Scope.REQUEST,
79
+ durable: true,
80
+ });
81
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
82
+ });
83
+ });
84
+ describe("when request scoped explicit non durable", () => {
85
+ it("should return false", () => {
86
+ const wrapper = new wrapper_1.InstanceWrapper({
87
+ scope: interfaces_1.Scope.REQUEST,
88
+ durable: false,
89
+ });
90
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
91
+ });
92
+ });
93
+ describe("when default", () => {
94
+ it("should return true", () => {
95
+ const wrapper = new wrapper_1.InstanceWrapper({});
96
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.true;
97
+ });
98
+ });
99
+ describe("when statically scoped", () => {
100
+ describe("dependencies, properties, enhancers", () => {
101
+ describe("dependencies non static, properties static, enhancers static", () => {
102
+ it("should return false", () => {
103
+ const wrapper = new wrapper_1.InstanceWrapper();
104
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
105
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
106
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
107
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
108
+ });
109
+ });
110
+ describe("dependencies static, properties non static, enhancers static", () => {
111
+ it("should return false", () => {
112
+ const wrapper = new wrapper_1.InstanceWrapper();
113
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
114
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
115
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
116
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
117
+ });
118
+ });
119
+ describe("dependencies static, properties static, enhancers non static", () => {
120
+ it("should return false", () => {
121
+ const wrapper = new wrapper_1.InstanceWrapper();
122
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
123
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
124
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
125
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
126
+ });
127
+ });
128
+ });
129
+ describe("dependencies", () => {
130
+ describe("when each is static", () => {
131
+ it("should return true", () => {
132
+ const wrapper = new wrapper_1.InstanceWrapper();
133
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
134
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.true;
135
+ });
136
+ });
137
+ describe("when one is not static", () => {
138
+ it("should return false", () => {
139
+ const wrapper = new wrapper_1.InstanceWrapper();
140
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
141
+ wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper({
142
+ scope: interfaces_1.Scope.REQUEST,
143
+ }));
144
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
145
+ });
146
+ });
147
+ });
148
+ describe("properties", () => {
149
+ describe("when each is static", () => {
150
+ it("should return true", () => {
151
+ const wrapper = new wrapper_1.InstanceWrapper();
152
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
153
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper());
154
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.true;
155
+ });
156
+ });
157
+ describe("when one is not static", () => {
158
+ it("should return false", () => {
159
+ const wrapper = new wrapper_1.InstanceWrapper();
160
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
161
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper());
162
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
163
+ });
164
+ });
165
+ });
166
+ describe("enhancers", () => {
167
+ describe("when each is static", () => {
168
+ it("should return true", () => {
169
+ const wrapper = new wrapper_1.InstanceWrapper();
170
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
171
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
172
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.true;
173
+ });
174
+ });
175
+ describe("when one is not static", () => {
176
+ it("should return false", () => {
177
+ const wrapper = new wrapper_1.InstanceWrapper();
178
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
179
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
180
+ (0, chai_1.expect)(wrapper.isDependencyTreeStatic()).to.be.false;
181
+ });
182
+ });
183
+ });
184
+ });
185
+ });
186
+ describe("isDependencyTreeDurable", () => {
187
+ describe("when circular reference and default scope", () => {
188
+ it("should return false", () => {
189
+ const wrapper = new wrapper_1.InstanceWrapper();
190
+ const otherWrapper = new wrapper_1.InstanceWrapper();
191
+ wrapper.addCtorMetadata(0, otherWrapper);
192
+ otherWrapper.addCtorMetadata(0, wrapper);
193
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
194
+ (0, chai_1.expect)(otherWrapper.isDependencyTreeDurable()).to.be.false;
195
+ });
196
+ });
197
+ describe("when circular reference and one non durable", () => {
198
+ it("should return false", () => {
199
+ const wrapper = new wrapper_1.InstanceWrapper();
200
+ const otherWrapper = new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST });
201
+ wrapper.addCtorMetadata(0, otherWrapper);
202
+ otherWrapper.addCtorMetadata(0, wrapper);
203
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
204
+ (0, chai_1.expect)(otherWrapper.isDependencyTreeDurable()).to.be.false;
205
+ });
206
+ });
207
+ describe("when circular reference and one durable", () => {
208
+ it("should return true", () => {
209
+ const wrapper = new wrapper_1.InstanceWrapper();
210
+ const otherWrapper = new wrapper_1.InstanceWrapper({
211
+ scope: interfaces_1.Scope.REQUEST,
212
+ durable: true,
213
+ });
214
+ wrapper.addCtorMetadata(0, otherWrapper);
215
+ otherWrapper.addCtorMetadata(0, wrapper);
216
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
217
+ (0, chai_1.expect)(otherWrapper.isDependencyTreeDurable()).to.be.true;
218
+ });
219
+ });
220
+ describe("when request scoped and durable", () => {
221
+ it("should return true", () => {
222
+ const wrapper = new wrapper_1.InstanceWrapper({
223
+ scope: interfaces_1.Scope.REQUEST,
224
+ durable: true,
225
+ });
226
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
227
+ });
228
+ });
229
+ describe("when request scoped and non durable", () => {
230
+ it("should return false", () => {
231
+ const wrapper = new wrapper_1.InstanceWrapper({
232
+ scope: interfaces_1.Scope.REQUEST,
233
+ });
234
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
235
+ });
236
+ });
237
+ describe("when request scoped and explicit non durable", () => {
238
+ it("should return false", () => {
239
+ const wrapper = new wrapper_1.InstanceWrapper({
240
+ scope: interfaces_1.Scope.REQUEST,
241
+ durable: false,
242
+ });
243
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
244
+ });
245
+ });
246
+ describe("when default scope", () => {
247
+ it("should return false", () => {
248
+ const wrapper = new wrapper_1.InstanceWrapper();
249
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
250
+ });
251
+ });
252
+ describe("when statically scoped", () => {
253
+ describe("dependencies, properties, enhancers", () => {
254
+ describe("dependencies non durable, properties non durable, enhancers durable", () => {
255
+ it("should return false", () => {
256
+ const wrapper = new wrapper_1.InstanceWrapper();
257
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
258
+ wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper());
259
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
260
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
261
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
262
+ });
263
+ });
264
+ describe("dependencies non durable, properties durable, enhancers durable", () => {
265
+ it("should return false", () => {
266
+ const wrapper = new wrapper_1.InstanceWrapper();
267
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
268
+ wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper());
269
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
270
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
271
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
272
+ });
273
+ });
274
+ describe("dependencies non durable, properties durable", () => {
275
+ it("should return false", () => {
276
+ const wrapper = new wrapper_1.InstanceWrapper();
277
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
278
+ wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper());
279
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
280
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
281
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
282
+ });
283
+ });
284
+ describe("properties durable, enhancers non durable", () => {
285
+ it("should return false", () => {
286
+ const wrapper = new wrapper_1.InstanceWrapper();
287
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
288
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
289
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
290
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
291
+ });
292
+ });
293
+ describe("dependencies durable, enhancers non durable", () => {
294
+ it("should return false", () => {
295
+ const wrapper = new wrapper_1.InstanceWrapper();
296
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
297
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
298
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
299
+ });
300
+ });
301
+ });
302
+ describe("dependencies", () => {
303
+ describe("when wrapper is non durable and dependency is static", () => {
304
+ it("should return false", () => {
305
+ const wrapper = new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST });
306
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
307
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
308
+ });
309
+ });
310
+ describe("when wrapper is durable and dependency is static", () => {
311
+ it("should return true", () => {
312
+ const wrapper = new wrapper_1.InstanceWrapper({
313
+ scope: interfaces_1.Scope.REQUEST,
314
+ durable: true,
315
+ });
316
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
317
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
318
+ });
319
+ });
320
+ describe("when wrapper is non durable and dependency is durable", () => {
321
+ it("should return false", () => {
322
+ const wrapper = new wrapper_1.InstanceWrapper({
323
+ scope: interfaces_1.Scope.REQUEST,
324
+ });
325
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
326
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
327
+ });
328
+ });
329
+ describe("when wrapper is durable and dependency is static", () => {
330
+ it("should return true", () => {
331
+ const wrapper = new wrapper_1.InstanceWrapper({
332
+ scope: interfaces_1.Scope.REQUEST,
333
+ durable: true,
334
+ });
335
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
336
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
337
+ });
338
+ });
339
+ describe("when wrapper is durable and dependency is non durable", () => {
340
+ it("should return true", () => {
341
+ const wrapper = new wrapper_1.InstanceWrapper({
342
+ scope: interfaces_1.Scope.REQUEST,
343
+ durable: true,
344
+ });
345
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
346
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
347
+ });
348
+ });
349
+ describe("when each is static", () => {
350
+ it("should return false", () => {
351
+ const wrapper = new wrapper_1.InstanceWrapper();
352
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
353
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
354
+ });
355
+ });
356
+ describe("when one is not static and non-durable", () => {
357
+ it("should return false", () => {
358
+ const wrapper = new wrapper_1.InstanceWrapper();
359
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
360
+ wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper({
361
+ scope: interfaces_1.Scope.REQUEST,
362
+ }));
363
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
364
+ });
365
+ });
366
+ describe("when one is not static and durable", () => {
367
+ it("should return true", () => {
368
+ const wrapper = new wrapper_1.InstanceWrapper();
369
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
370
+ wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper({
371
+ scope: interfaces_1.Scope.REQUEST,
372
+ durable: true,
373
+ }));
374
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
375
+ });
376
+ });
377
+ describe("when one is not static, durable and non durable", () => {
378
+ it("should return false", () => {
379
+ const wrapper = new wrapper_1.InstanceWrapper();
380
+ wrapper.addCtorMetadata(0, new wrapper_1.InstanceWrapper());
381
+ wrapper.addCtorMetadata(1, new wrapper_1.InstanceWrapper({
382
+ scope: interfaces_1.Scope.REQUEST,
383
+ durable: true,
384
+ }));
385
+ wrapper.addCtorMetadata(2, new wrapper_1.InstanceWrapper({
386
+ scope: interfaces_1.Scope.REQUEST,
387
+ }));
388
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
389
+ });
390
+ });
391
+ });
392
+ describe("properties", () => {
393
+ describe("when wrapper is non durable and dependency is static", () => {
394
+ it("should return false", () => {
395
+ const wrapper = new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST });
396
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
397
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
398
+ });
399
+ });
400
+ describe("when wrapper is durable and dependency is static", () => {
401
+ it("should return true", () => {
402
+ const wrapper = new wrapper_1.InstanceWrapper({
403
+ scope: interfaces_1.Scope.REQUEST,
404
+ durable: true,
405
+ });
406
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
407
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
408
+ });
409
+ });
410
+ describe("when wrapper is non durable and dependency is durable", () => {
411
+ it("should return false", () => {
412
+ const wrapper = new wrapper_1.InstanceWrapper({
413
+ scope: interfaces_1.Scope.REQUEST,
414
+ });
415
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
416
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
417
+ });
418
+ });
419
+ describe("when wrapper is durable and dependency is static", () => {
420
+ it("should return true", () => {
421
+ const wrapper = new wrapper_1.InstanceWrapper({
422
+ scope: interfaces_1.Scope.REQUEST,
423
+ durable: true,
424
+ });
425
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
426
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
427
+ });
428
+ });
429
+ describe("when wrapper is durable and dependency is non durable", () => {
430
+ it("should return true", () => {
431
+ const wrapper = new wrapper_1.InstanceWrapper({
432
+ scope: interfaces_1.Scope.REQUEST,
433
+ durable: true,
434
+ });
435
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
436
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
437
+ });
438
+ });
439
+ describe("when each is static", () => {
440
+ it("should return false", () => {
441
+ const wrapper = new wrapper_1.InstanceWrapper();
442
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper());
443
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper());
444
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
445
+ });
446
+ });
447
+ describe("when one is not static and non-durable", () => {
448
+ it("should return false", () => {
449
+ const wrapper = new wrapper_1.InstanceWrapper();
450
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
451
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper());
452
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
453
+ });
454
+ });
455
+ describe("when one is not static and durable", () => {
456
+ it("should return true", () => {
457
+ const wrapper = new wrapper_1.InstanceWrapper();
458
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
459
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper());
460
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
461
+ });
462
+ });
463
+ describe("when one is not static, non durable and durable", () => {
464
+ it("should return false", () => {
465
+ const wrapper = new wrapper_1.InstanceWrapper();
466
+ wrapper.addPropertiesMetadata("key1", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
467
+ wrapper.addPropertiesMetadata("key2", new wrapper_1.InstanceWrapper());
468
+ wrapper.addPropertiesMetadata("key3", new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
469
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
470
+ });
471
+ });
472
+ });
473
+ describe("enhancers", () => {
474
+ describe("when wrapper is non durable and dependency is static", () => {
475
+ it("should return false", () => {
476
+ const wrapper = new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST });
477
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
478
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
479
+ });
480
+ });
481
+ describe("when wrapper is durable and dependency is static", () => {
482
+ it("should return true", () => {
483
+ const wrapper = new wrapper_1.InstanceWrapper({
484
+ scope: interfaces_1.Scope.REQUEST,
485
+ durable: true,
486
+ });
487
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
488
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
489
+ });
490
+ });
491
+ describe("when wrapper is non durable and dependency is durable", () => {
492
+ it("should return false", () => {
493
+ const wrapper = new wrapper_1.InstanceWrapper({
494
+ scope: interfaces_1.Scope.REQUEST,
495
+ });
496
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
497
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
498
+ });
499
+ });
500
+ describe("when wrapper is durable and dependency is static", () => {
501
+ it("should return true", () => {
502
+ const wrapper = new wrapper_1.InstanceWrapper({
503
+ scope: interfaces_1.Scope.REQUEST,
504
+ durable: true,
505
+ });
506
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
507
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
508
+ });
509
+ });
510
+ describe("when wrapper is durable and dependency is non durable", () => {
511
+ it("should return true", () => {
512
+ const wrapper = new wrapper_1.InstanceWrapper({
513
+ scope: interfaces_1.Scope.REQUEST,
514
+ durable: true,
515
+ });
516
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
517
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
518
+ });
519
+ });
520
+ describe("when each is static", () => {
521
+ it("should return false", () => {
522
+ const wrapper = new wrapper_1.InstanceWrapper();
523
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
524
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
525
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
526
+ });
527
+ });
528
+ describe("when one is not static and non-durable", () => {
529
+ it("should return false", () => {
530
+ const wrapper = new wrapper_1.InstanceWrapper();
531
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
532
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
533
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
534
+ });
535
+ });
536
+ describe("when one is not static and durable", () => {
537
+ it("should return true", () => {
538
+ const wrapper = new wrapper_1.InstanceWrapper();
539
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
540
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
541
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.true;
542
+ });
543
+ });
544
+ describe("when one is not static, non durable and durable", () => {
545
+ it("should return false", () => {
546
+ const wrapper = new wrapper_1.InstanceWrapper();
547
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST, durable: true }));
548
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper());
549
+ wrapper.addEnhancerMetadata(new wrapper_1.InstanceWrapper({ scope: interfaces_1.Scope.REQUEST }));
550
+ (0, chai_1.expect)(wrapper.isDependencyTreeDurable()).to.be.false;
551
+ });
552
+ });
553
+ });
554
+ });
555
+ });
556
+ describe("isNotMetatype", () => {
557
+ describe("when metatype is nil", () => {
558
+ it("should return true", () => {
559
+ const instance = new wrapper_1.InstanceWrapper({ metatype: null });
560
+ (0, chai_1.expect)(instance.isNotMetatype).to.be.true;
561
+ });
562
+ });
563
+ describe("when metatype is not nil", () => {
564
+ it("should return false", () => {
565
+ const instance = new wrapper_1.InstanceWrapper({ metatype: TestClass });
566
+ (0, chai_1.expect)(instance.isNotMetatype).to.be.false;
567
+ });
568
+ });
569
+ });
570
+ describe("addEnhancerMetadata", () => {
571
+ it("should add enhancers metadata", () => {
572
+ const instance = new wrapper_1.InstanceWrapper();
573
+ const enhancers = [new wrapper_1.InstanceWrapper()];
574
+ instance.addEnhancerMetadata(enhancers[0]);
575
+ (0, chai_1.expect)(instance.getEnhancersMetadata()).to.be.eql(enhancers);
576
+ });
577
+ });
578
+ describe("when set instance has been called", () => {
579
+ it("should set static context value", () => {
580
+ const instance = { test: true };
581
+ const wrapper = new wrapper_1.InstanceWrapper();
582
+ wrapper.instance = instance;
583
+ (0, chai_1.expect)(wrapper.getInstanceByContextId(constants_1.STATIC_CONTEXT).instance).to.be.eql(instance);
584
+ });
585
+ });
586
+ describe("cloneStaticInstance", () => {
587
+ describe("when wrapper is static", () => {
588
+ it("should return static instance", () => {
589
+ const instance = { test: true };
590
+ const wrapper = new wrapper_1.InstanceWrapper({ instance });
591
+ (0, chai_1.expect)(wrapper.cloneStaticInstance({ id: 0 }).instance).to.be.eql(instance);
592
+ });
593
+ });
594
+ describe("when wrapper is not static", () => {
595
+ it("should clone instance by context id", () => {
596
+ const instance = { test: true };
597
+ const wrapper = new wrapper_1.InstanceWrapper({ instance, scope: interfaces_1.Scope.REQUEST });
598
+ (0, chai_1.expect)(wrapper.cloneStaticInstance({ id: 0 }).instance).to.be.undefined;
599
+ });
600
+ });
601
+ });
602
+ describe("getInstanceByContextId", () => {
603
+ describe("when transient and inquirer has been passed", () => {
604
+ it('should call "getInstanceByInquirerId"', () => {
605
+ const wrapper = new wrapper_1.InstanceWrapper({
606
+ scope: interfaces_1.Scope.TRANSIENT,
607
+ });
608
+ const getInstanceByInquirerIdSpy = sinon_1.default.spy(wrapper, "getInstanceByInquirerId");
609
+ wrapper.getInstanceByContextId(constants_1.STATIC_CONTEXT, "inquirerId");
610
+ (0, chai_1.expect)(getInstanceByInquirerIdSpy.called).to.be.true;
611
+ });
612
+ });
613
+ });
614
+ describe("setInstanceByContextId", () => {
615
+ describe("when transient and inquirer has been passed", () => {
616
+ it('should call "setInstanceByInquirerId"', () => {
617
+ const wrapper = new wrapper_1.InstanceWrapper({
618
+ scope: interfaces_1.Scope.TRANSIENT,
619
+ });
620
+ const setInstanceByInquirerIdSpy = sinon_1.default.spy(wrapper, "setInstanceByInquirerId");
621
+ wrapper.setInstanceByContextId(constants_1.STATIC_CONTEXT, { instance: {} }, "inquirerId");
622
+ (0, chai_1.expect)(setInstanceByInquirerIdSpy.called).to.be.true;
623
+ });
624
+ });
625
+ });
626
+ describe("isInRequestScope", () => {
627
+ describe("when tree and context are not static and is not transient", () => {
628
+ it("should return true", () => {
629
+ const wrapper = new wrapper_1.InstanceWrapper({
630
+ scope: interfaces_1.Scope.REQUEST,
631
+ });
632
+ (0, chai_1.expect)(wrapper.isInRequestScope({ id: 3 })).to.be.true;
633
+ });
634
+ });
635
+ describe("otherwise", () => {
636
+ it("should return false", () => {
637
+ const wrapper = new wrapper_1.InstanceWrapper({
638
+ scope: interfaces_1.Scope.TRANSIENT,
639
+ });
640
+ (0, chai_1.expect)(wrapper.isInRequestScope({ id: 3 })).to.be.false;
641
+ const wrapper2 = new wrapper_1.InstanceWrapper({
642
+ scope: interfaces_1.Scope.REQUEST,
643
+ });
644
+ (0, chai_1.expect)(wrapper2.isInRequestScope(constants_1.STATIC_CONTEXT)).to.be.false;
645
+ });
646
+ });
647
+ });
648
+ describe("isLazyTransient", () => {
649
+ describe("when inquirer is request scoped and context is not static and is transient", () => {
650
+ it("should return true", () => {
651
+ const wrapper = new wrapper_1.InstanceWrapper({
652
+ scope: interfaces_1.Scope.TRANSIENT,
653
+ });
654
+ (0, chai_1.expect)(wrapper.isLazyTransient({ id: 3 }, new wrapper_1.InstanceWrapper({
655
+ scope: interfaces_1.Scope.REQUEST,
656
+ }))).to.be.true;
657
+ });
658
+ });
659
+ describe("otherwise", () => {
660
+ it("should return false", () => {
661
+ const wrapper = new wrapper_1.InstanceWrapper({
662
+ scope: interfaces_1.Scope.TRANSIENT,
663
+ });
664
+ (0, chai_1.expect)(wrapper.isLazyTransient({ id: 3 }, new wrapper_1.InstanceWrapper())).to.be.false;
665
+ const wrapper2 = new wrapper_1.InstanceWrapper({
666
+ scope: interfaces_1.Scope.REQUEST,
667
+ });
668
+ (0, chai_1.expect)(wrapper2.isLazyTransient(constants_1.STATIC_CONTEXT, new wrapper_1.InstanceWrapper({
669
+ scope: interfaces_1.Scope.TRANSIENT,
670
+ }))).to.be.false;
671
+ });
672
+ });
673
+ });
674
+ describe("isStatic", () => {
675
+ describe("when inquirer is not request scoped and context and tree are static", () => {
676
+ it("should return true", () => {
677
+ const wrapper = new wrapper_1.InstanceWrapper({
678
+ scope: interfaces_1.Scope.DEFAULT,
679
+ });
680
+ (0, chai_1.expect)(wrapper.isStatic(constants_1.STATIC_CONTEXT, new wrapper_1.InstanceWrapper({
681
+ scope: interfaces_1.Scope.DEFAULT,
682
+ }))).to.be.true;
683
+ });
684
+ });
685
+ describe("otherwise", () => {
686
+ it("should return false", () => {
687
+ const wrapper = new wrapper_1.InstanceWrapper({
688
+ scope: interfaces_1.Scope.REQUEST,
689
+ });
690
+ (0, chai_1.expect)(wrapper.isStatic({ id: 3 }, new wrapper_1.InstanceWrapper())).to.be.false;
691
+ const wrapper2 = new wrapper_1.InstanceWrapper({
692
+ scope: interfaces_1.Scope.TRANSIENT,
693
+ });
694
+ (0, chai_1.expect)(wrapper2.isStatic(constants_1.STATIC_CONTEXT, new wrapper_1.InstanceWrapper({
695
+ scope: interfaces_1.Scope.REQUEST,
696
+ }))).to.be.false;
697
+ });
698
+ });
699
+ });
700
+ describe("getStaticTransientInstances", () => {
701
+ describe("when instance is not transient", () => {
702
+ it("should return an empty array", () => {
703
+ const wrapper = new wrapper_1.InstanceWrapper({
704
+ scope: interfaces_1.Scope.DEFAULT,
705
+ });
706
+ (0, chai_1.expect)(wrapper.getStaticTransientInstances()).to.be.eql([]);
707
+ });
708
+ });
709
+ describe("when instance is transient", () => {
710
+ it("should return all static instances", () => {
711
+ const wrapper = new wrapper_1.InstanceWrapper({
712
+ scope: interfaces_1.Scope.TRANSIENT,
713
+ });
714
+ const instanceHost = {
715
+ instance: {},
716
+ };
717
+ wrapper.setInstanceByInquirerId(constants_1.STATIC_CONTEXT, "test", instanceHost);
718
+ (0, chai_1.expect)(wrapper.getStaticTransientInstances()).to.be.eql([instanceHost]);
719
+ });
720
+ });
721
+ });
722
+ describe("mergeWith", () => {
723
+ describe("when provider is a ValueProvider", () => {
724
+ it("should provide the given value in the STATIC_CONTEXT", () => {
725
+ const wrapper = new wrapper_1.InstanceWrapper();
726
+ wrapper.mergeWith({
727
+ useValue: "value",
728
+ provide: "token",
729
+ });
730
+ (0, chai_1.expect)(wrapper.getInstanceByContextId(constants_1.STATIC_CONTEXT).instance).to.be.equal("value");
731
+ });
732
+ });
733
+ describe("when provider is a ClassProvider", () => {
734
+ it("should alter the instance wrapper metatype with the given class", () => {
735
+ const wrapper = new wrapper_1.InstanceWrapper();
736
+ wrapper.mergeWith({
737
+ useClass: TestClass,
738
+ provide: "token",
739
+ });
740
+ (0, chai_1.expect)(wrapper.metatype).to.be.eql(TestClass);
741
+ });
742
+ });
743
+ describe("when provider is a FactoryProvider", () => {
744
+ describe("and it has injected dependencies", () => {
745
+ it("should alter the instance wrapper metatype and inject attributes with the given values", () => {
746
+ const wrapper = new wrapper_1.InstanceWrapper();
747
+ const factory = (_dependency1, _dependency2) => { };
748
+ const injectedDependencies = ["dependency1", "dependency2"];
749
+ wrapper.mergeWith({
750
+ provide: "token",
751
+ useFactory: factory,
752
+ inject: injectedDependencies,
753
+ });
754
+ (0, chai_1.expect)(wrapper.metatype).to.be.eql(factory);
755
+ (0, chai_1.expect)(wrapper.inject).to.be.eq(injectedDependencies);
756
+ });
757
+ });
758
+ describe("and it has no injected dependencies", () => {
759
+ it("should alter the instance wrapper metatype with the given values", () => {
760
+ const wrapper = new wrapper_1.InstanceWrapper();
761
+ const factory = (_dependency1, _dependency2) => { };
762
+ wrapper.mergeWith({
763
+ provide: "token",
764
+ useFactory: factory,
765
+ });
766
+ (0, chai_1.expect)(wrapper.metatype).to.be.eql(factory);
767
+ (0, chai_1.expect)(wrapper.inject).to.be.eql([]);
768
+ });
769
+ });
770
+ });
771
+ });
772
+ });