tadis-analyzer 2.4.0 → 2.4.2

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 (234) hide show
  1. package/build/src/app/code-pattern/main.d.ts +1 -0
  2. package/build/src/app/code-pattern/main.js +14 -0
  3. package/build/src/app/code-pattern/main.js.map +1 -0
  4. package/build/src/app/default/main.d.ts +1 -0
  5. package/build/src/app/default/main.js +15 -0
  6. package/build/src/app/default/main.js.map +1 -0
  7. package/build/src/app/error.d.ts +3 -0
  8. package/build/src/app/error.js +10 -0
  9. package/build/src/app/error.js.map +1 -0
  10. package/build/src/config/Config.module.d.ts +4 -0
  11. package/build/src/config/Config.module.js +28 -0
  12. package/build/src/config/Config.module.js.map +1 -0
  13. package/build/src/config/Config.service.d.ts +19 -0
  14. package/build/src/config/Config.service.js +105 -0
  15. package/build/src/config/Config.service.js.map +1 -0
  16. package/build/src/config/Config.service.test.d.ts +1 -0
  17. package/build/src/config/Config.service.test.js +33 -0
  18. package/build/src/config/Config.service.test.js.map +1 -0
  19. package/build/src/deprecated-modules/CommonTransformers.module.d.ts +5 -0
  20. package/build/src/deprecated-modules/CommonTransformers.module.js +34 -0
  21. package/build/src/deprecated-modules/CommonTransformers.module.js.map +1 -0
  22. package/build/src/deprecated-modules/Msa.module.d.ts +13 -0
  23. package/build/src/deprecated-modules/Msa.module.js +63 -0
  24. package/build/src/deprecated-modules/Msa.module.js.map +1 -0
  25. package/build/src/deprecated-modules/SourceCodeAnalysis.module.d.ts +6 -0
  26. package/build/src/deprecated-modules/SourceCodeAnalysis.module.js +60 -0
  27. package/build/src/deprecated-modules/SourceCodeAnalysis.module.js.map +1 -0
  28. package/build/src/git/Git.module.d.ts +5 -0
  29. package/build/src/git/Git.module.js +28 -0
  30. package/build/src/git/Git.module.js.map +1 -0
  31. package/build/src/git/GitStorage.controller.d.ts +17 -0
  32. package/build/src/git/GitStorage.controller.js +88 -0
  33. package/build/src/git/GitStorage.controller.js.map +1 -0
  34. package/build/src/git/GitStorage.controller.test.d.ts +1 -0
  35. package/build/src/git/GitStorage.controller.test.js +30 -0
  36. package/build/src/git/GitStorage.controller.test.js.map +1 -0
  37. package/build/src/git/GitStorage.d.ts +23 -0
  38. package/build/src/git/GitStorage.js +153 -0
  39. package/build/src/git/GitStorage.js.map +1 -0
  40. package/build/src/git/GitStorage.service.d.ts +10 -0
  41. package/build/src/git/GitStorage.service.js +36 -0
  42. package/build/src/git/GitStorage.service.js.map +1 -0
  43. package/build/src/git/SourceLocationDecorator.d.ts +12 -0
  44. package/build/src/git/SourceLocationDecorator.js +46 -0
  45. package/build/src/git/SourceLocationDecorator.js.map +1 -0
  46. package/build/src/git/SourceLocationDecorator.test.d.ts +1 -0
  47. package/build/src/git/SourceLocationDecorator.test.js +35 -0
  48. package/build/src/git/SourceLocationDecorator.test.js.map +1 -0
  49. package/build/src/lib.d.ts +21 -0
  50. package/build/src/lib.js +57 -0
  51. package/build/src/lib.js.map +1 -0
  52. package/build/src/model/core-typed.d.ts +21 -0
  53. package/build/src/model/core-typed.js +89 -0
  54. package/build/src/model/core-typed.js.map +1 -0
  55. package/build/src/model/core-typed.test.d.ts +1 -0
  56. package/build/src/model/core-typed.test.js +29 -0
  57. package/build/src/model/core-typed.test.js.map +1 -0
  58. package/build/src/model/core.d.ts +33 -0
  59. package/build/src/model/core.js +117 -0
  60. package/build/src/model/core.js.map +1 -0
  61. package/build/src/model/ms.d.ts +58 -0
  62. package/build/src/model/ms.js +83 -0
  63. package/build/src/model/ms.js.map +1 -0
  64. package/build/src/model/transport.d.ts +17 -0
  65. package/build/src/model/transport.js +20 -0
  66. package/build/src/model/transport.js.map +1 -0
  67. package/build/src/model/v1-legacy/model.d.ts +53 -0
  68. package/build/src/model/v1-legacy/model.js +85 -0
  69. package/build/src/model/v1-legacy/model.js.map +1 -0
  70. package/build/src/model/v1-legacy/v1-adapter.d.ts +3 -0
  71. package/build/src/model/v1-legacy/v1-adapter.js +68 -0
  72. package/build/src/model/v1-legacy/v1-adapter.js.map +1 -0
  73. package/build/src/model/v1-legacy/v1-adapter.test.d.ts +1 -0
  74. package/build/src/model/v1-legacy/v1-adapter.test.js +66 -0
  75. package/build/src/model/v1-legacy/v1-adapter.test.js.map +1 -0
  76. package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.d.ts +12 -0
  77. package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.js +107 -0
  78. package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.js.map +1 -0
  79. package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.test.d.ts +1 -0
  80. package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.test.js +111 -0
  81. package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.test.js.map +1 -0
  82. package/build/src/post-processors/PostProcessors.module.d.ts +6 -0
  83. package/build/src/post-processors/PostProcessors.module.js +37 -0
  84. package/build/src/post-processors/PostProcessors.module.js.map +1 -0
  85. package/build/src/post-processors/PostProcessors.module.test.d.ts +1 -0
  86. package/build/src/post-processors/PostProcessors.module.test.js +23 -0
  87. package/build/src/post-processors/PostProcessors.module.test.js.map +1 -0
  88. package/build/src/post-processors/StaticNodeFilter.d.ts +9 -0
  89. package/build/src/post-processors/StaticNodeFilter.js +91 -0
  90. package/build/src/post-processors/StaticNodeFilter.js.map +1 -0
  91. package/build/src/post-processors/StaticNodeFilter.test.d.ts +1 -0
  92. package/build/src/post-processors/StaticNodeFilter.test.js +36 -0
  93. package/build/src/post-processors/StaticNodeFilter.test.js.map +1 -0
  94. package/build/src/post-processors/SubSystemFromPayloadTransformer.d.ts +13 -0
  95. package/build/src/post-processors/SubSystemFromPayloadTransformer.js +103 -0
  96. package/build/src/post-processors/SubSystemFromPayloadTransformer.js.map +1 -0
  97. package/build/src/post-processors/SubSystemFromPayloadTransformer.test.d.ts +1 -0
  98. package/build/src/post-processors/SubSystemFromPayloadTransformer.test.js +56 -0
  99. package/build/src/post-processors/SubSystemFromPayloadTransformer.test.js.map +1 -0
  100. package/build/src/system-assemblers/controllers/ISystemAssembler.d.ts +5 -0
  101. package/build/src/system-assemblers/controllers/ISystemAssembler.js +3 -0
  102. package/build/src/system-assemblers/controllers/ISystemAssembler.js.map +1 -0
  103. package/build/src/system-assemblers/controllers/SystemAssembler.controller.d.ts +19 -0
  104. package/build/src/system-assemblers/controllers/SystemAssembler.controller.js +95 -0
  105. package/build/src/system-assemblers/controllers/SystemAssembler.controller.js.map +1 -0
  106. package/build/src/system-assemblers/controllers/SystemAssembler.controller.test.d.ts +1 -0
  107. package/build/src/system-assemblers/controllers/SystemAssembler.controller.test.js +54 -0
  108. package/build/src/system-assemblers/controllers/SystemAssembler.controller.test.js.map +1 -0
  109. package/build/src/system-assemblers/controllers/SystemAssembler.module.d.ts +6 -0
  110. package/build/src/system-assemblers/controllers/SystemAssembler.module.js +28 -0
  111. package/build/src/system-assemblers/controllers/SystemAssembler.module.js.map +1 -0
  112. package/build/src/system-assemblers/controllers/SystemAssembler.service.d.ts +6 -0
  113. package/build/src/system-assemblers/controllers/SystemAssembler.service.js +24 -0
  114. package/build/src/system-assemblers/controllers/SystemAssembler.service.js.map +1 -0
  115. package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.module.d.ts +4 -0
  116. package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.module.js +46 -0
  117. package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.module.js.map +1 -0
  118. package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.service.d.ts +16 -0
  119. package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.service.js +53 -0
  120. package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.service.js.map +1 -0
  121. package/build/src/system-element-extractors/env-variables/EnvVariables.module.d.ts +4 -0
  122. package/build/src/system-element-extractors/env-variables/EnvVariables.module.js +25 -0
  123. package/build/src/system-element-extractors/env-variables/EnvVariables.module.js.map +1 -0
  124. package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.d.ts +13 -0
  125. package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.js +64 -0
  126. package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.js.map +1 -0
  127. package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.test.d.ts +1 -0
  128. package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.test.js +56 -0
  129. package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.test.js.map +1 -0
  130. package/build/src/system-element-extractors/experimental/code-pattern/CodePattern.module.d.ts +4 -0
  131. package/build/src/system-element-extractors/experimental/code-pattern/CodePattern.module.js +26 -0
  132. package/build/src/system-element-extractors/experimental/code-pattern/CodePattern.module.js.map +1 -0
  133. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.controller.d.ts +8 -0
  134. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.controller.js +54 -0
  135. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.controller.js.map +1 -0
  136. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.d.ts +10 -0
  137. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.js +345 -0
  138. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.js.map +1 -0
  139. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.d.ts +1 -0
  140. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.js +130 -0
  141. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.js.map +1 -0
  142. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.service.d.ts +16 -0
  143. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.service.js +47 -0
  144. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.service.js.map +1 -0
  145. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.d.ts +1 -0
  146. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.js +177 -0
  147. package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.js.map +1 -0
  148. package/build/src/system-element-extractors/experimental/code-pattern/behavior-model.d.ts +1 -0
  149. package/build/src/system-element-extractors/experimental/code-pattern/behavior-model.js +3 -0
  150. package/build/src/system-element-extractors/experimental/code-pattern/behavior-model.js.map +1 -0
  151. package/build/src/system-element-extractors/experimental/code-pattern/model.d.ts +116 -0
  152. package/build/src/system-element-extractors/experimental/code-pattern/model.js +23 -0
  153. package/build/src/system-element-extractors/experimental/code-pattern/model.js.map +1 -0
  154. package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.d.ts +8 -0
  155. package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.js +26 -0
  156. package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.js.map +1 -0
  157. package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.d.ts +0 -0
  158. package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.js +18 -0
  159. package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.js.map +1 -0
  160. package/build/src/system-element-extractors/java/Java.module.d.ts +4 -0
  161. package/build/src/system-element-extractors/java/Java.module.js +26 -0
  162. package/build/src/system-element-extractors/java/Java.module.js.map +1 -0
  163. package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.d.ts +35 -0
  164. package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.js +155 -0
  165. package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.js.map +1 -0
  166. package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.test.d.ts +1 -0
  167. package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.test.js +85 -0
  168. package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.test.js.map +1 -0
  169. package/build/src/system-element-extractors/kubernetes/Kubernetes.module.d.ts +7 -0
  170. package/build/src/system-element-extractors/kubernetes/Kubernetes.module.js +43 -0
  171. package/build/src/system-element-extractors/kubernetes/Kubernetes.module.js.map +1 -0
  172. package/build/src/system-element-extractors/kubernetes/api/api.service.d.ts +9 -0
  173. package/build/src/system-element-extractors/kubernetes/api/api.service.js +78 -0
  174. package/build/src/system-element-extractors/kubernetes/api/api.service.js.map +1 -0
  175. package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.d.ts +10 -0
  176. package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.js +80 -0
  177. package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.js.map +1 -0
  178. package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.test.d.ts +1 -0
  179. package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.test.js +32 -0
  180. package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.test.js.map +1 -0
  181. package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.d.ts +12 -0
  182. package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.js +82 -0
  183. package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.js.map +1 -0
  184. package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.test.d.ts +1 -0
  185. package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.test.js +30 -0
  186. package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.test.js.map +1 -0
  187. package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.d.ts +12 -0
  188. package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.js +67 -0
  189. package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.js.map +1 -0
  190. package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.test.d.ts +1 -0
  191. package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.test.js +38 -0
  192. package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.test.js.map +1 -0
  193. package/build/src/system-element-extractors/kubernetes/transformer/testdata/api/deployments.json +256 -0
  194. package/build/src/system-element-extractors/kubernetes/transformer/testdata/api/pods.json +101 -0
  195. package/build/src/system-element-extractors/kubernetes/transformer/testdata/api/services.json +75 -0
  196. package/build/src/system-element-extractors/rabbitmq/RabbitMq.module.d.ts +6 -0
  197. package/build/src/system-element-extractors/rabbitmq/RabbitMq.module.js +38 -0
  198. package/build/src/system-element-extractors/rabbitmq/RabbitMq.module.js.map +1 -0
  199. package/build/src/system-element-extractors/rabbitmq/api/api.service.d.ts +11 -0
  200. package/build/src/system-element-extractors/rabbitmq/api/api.service.js +63 -0
  201. package/build/src/system-element-extractors/rabbitmq/api/api.service.js.map +1 -0
  202. package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.d.ts +9 -0
  203. package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.js +117 -0
  204. package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.js.map +1 -0
  205. package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.test.d.ts +1 -0
  206. package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.test.js +43 -0
  207. package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.test.js.map +1 -0
  208. package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.d.ts +14 -0
  209. package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.js +117 -0
  210. package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.js.map +1 -0
  211. package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.d.ts +1 -0
  212. package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.js +121 -0
  213. package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.js.map +1 -0
  214. package/build/src/system-element-extractors/rabbitmq/transformer/testdata/api/bindings.json +20 -0
  215. package/build/src/system-element-extractors/rabbitmq/transformer/testdata/api/queues.json +5 -0
  216. package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.d.ts +15 -0
  217. package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.js +131 -0
  218. package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.js.map +1 -0
  219. package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.test.d.ts +1 -0
  220. package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.test.js +54 -0
  221. package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.test.js.map +1 -0
  222. package/build/src/system-element-extractors/spring-boot/SpringBoot.module.d.ts +4 -0
  223. package/build/src/system-element-extractors/spring-boot/SpringBoot.module.js +25 -0
  224. package/build/src/system-element-extractors/spring-boot/SpringBoot.module.js.map +1 -0
  225. package/build/src/test/expect-extensions.d.ts +7 -0
  226. package/build/src/test/expect-extensions.js +20 -0
  227. package/build/src/test/expect-extensions.js.map +1 -0
  228. package/build/src/test/verifiers.d.ts +4 -0
  229. package/build/src/test/verifiers.js +19 -0
  230. package/build/src/test/verifiers.js.map +1 -0
  231. package/build/src/utils/files/analysis.d.ts +30 -0
  232. package/build/src/utils/files/analysis.js +109 -0
  233. package/build/src/utils/files/analysis.js.map +1 -0
  234. package/package.json +1 -1
@@ -0,0 +1,121 @@
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 testing_1 = require("@nestjs/testing");
7
+ const Config_service_1 = require("../../../config/Config.service");
8
+ const ms_1 = require("../../../model/ms");
9
+ const RabbitMqBindingsFromApiAnalyzer_1 = require("./RabbitMqBindingsFromApiAnalyzer");
10
+ const api_service_1 = require("../api/api.service");
11
+ const queues_json_1 = __importDefault(require("./testdata/api/queues.json"));
12
+ const bindings_json_1 = __importDefault(require("./testdata/api/bindings.json"));
13
+ const verifiers_1 = require("../../../test/verifiers");
14
+ const axios_1 = require("@nestjs/axios");
15
+ describe(RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer.name, () => {
16
+ let app;
17
+ beforeAll(async () => {
18
+ app = await testing_1.Test.createTestingModule({
19
+ controllers: [],
20
+ imports: [axios_1.HttpModule],
21
+ providers: [
22
+ Config_service_1.ConfigService,
23
+ RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer,
24
+ api_service_1.RabbitMqManagementApiService
25
+ ]
26
+ }).compile();
27
+ });
28
+ it('creates message exchanges and flows for each queue binding to an existing microservice', async () => {
29
+ const apiService = app.get(api_service_1.RabbitMqManagementApiService);
30
+ jest
31
+ .spyOn(apiService, 'getQueues')
32
+ .mockImplementation(async () => queues_json_1.default);
33
+ jest
34
+ .spyOn(apiService, 'getBindings')
35
+ .mockImplementation(async () => bindings_json_1.default);
36
+ const addExchangesFormSourceStep = app.get(RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer);
37
+ const inputSystem = new ms_1.System('test');
38
+ inputSystem.addMicroService('receiver-service');
39
+ const outputSystem = await addExchangesFormSourceStep.transform(inputSystem);
40
+ expect(outputSystem).not.toBeNull();
41
+ expect(outputSystem.getMicroServices()).toHaveLength(1);
42
+ expect(outputSystem.getMessageExchanges()).toHaveLength(2);
43
+ expect(outputSystem.getMicroServices()[0].getName()).toEqual('receiver-service');
44
+ expect(outputSystem.getMessageExchanges()[0].getName()).toEqual('source-exchange-1');
45
+ expect(outputSystem.getMessageExchanges()[1].getName()).toEqual('source-exchange-2');
46
+ expect(outputSystem.getAsyncEventFlows()).toHaveLength(2);
47
+ expect(outputSystem.getAsyncEventFlows()[0].source.id).toEqual(outputSystem.getMessageExchanges()[0].id);
48
+ expect(outputSystem.getAsyncEventFlows()[0].target.id).toEqual(outputSystem.getMicroServices()[0].id);
49
+ expect(outputSystem.getAsyncEventFlows()[1].source.id).toEqual(outputSystem.getMessageExchanges()[1].id);
50
+ expect(outputSystem.getAsyncEventFlows()[1].target.id).toEqual(outputSystem.getMicroServices()[0].id);
51
+ (0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer.name);
52
+ });
53
+ it('does not create a microservice from a queue pattern when the microservice does not exist in the input system', async () => {
54
+ const apiService = app.get(api_service_1.RabbitMqManagementApiService);
55
+ jest
56
+ .spyOn(apiService, 'getQueues')
57
+ .mockImplementation(async () => queues_json_1.default);
58
+ jest
59
+ .spyOn(apiService, 'getBindings')
60
+ .mockImplementation(async () => bindings_json_1.default);
61
+ const addExchangesFormSourceStep = app.get(RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer);
62
+ const inputSystem = new ms_1.System('test');
63
+ const outputSystem = await addExchangesFormSourceStep.transform(inputSystem);
64
+ expect(outputSystem.getMicroServices()).toHaveLength(0);
65
+ expect(outputSystem.getMessageExchanges()).toHaveLength(2);
66
+ const queueNode = outputSystem.nodes.find((node) => node.content.type === ms_1.MessageQueue.name);
67
+ expect(queueNode).toBeDefined();
68
+ expect(queueNode.getName()).toEqual('receiver-service.routingKey.publish.update');
69
+ expect(outputSystem.getAsyncEventFlows()[0].source.id).toEqual(outputSystem.getMessageExchanges()[0].id);
70
+ expect(outputSystem.getAsyncEventFlows()[0].target.id).toEqual(queueNode.id);
71
+ (0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer.name);
72
+ });
73
+ it('creates queues for queues which do not match the name pattern', async () => {
74
+ const apiService = app.get(api_service_1.RabbitMqManagementApiService);
75
+ jest.spyOn(apiService, 'getQueues').mockImplementation(async () => [
76
+ {
77
+ name: 'no-service-prefix'
78
+ }
79
+ ]);
80
+ jest.spyOn(apiService, 'getBindings').mockImplementation(async () => [
81
+ {
82
+ source: 'source-exchange-1',
83
+ vhost: '/',
84
+ destination: 'no-service-prefix',
85
+ destination_type: 'queue'
86
+ }
87
+ ]);
88
+ const addExchangesFormSourceStep = app.get(RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer);
89
+ const inputSystem = new ms_1.System('test');
90
+ const outputSystem = await addExchangesFormSourceStep.transform(inputSystem);
91
+ expect(outputSystem.getMicroServices()).toHaveLength(0);
92
+ expect(outputSystem.getMessageExchanges()).toHaveLength(1);
93
+ const queueNode = outputSystem.nodes.find((node) => node.content.type === ms_1.MessageQueue.name);
94
+ expect(queueNode).toBeDefined();
95
+ expect(queueNode.getName()).toEqual('no-service-prefix');
96
+ (0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer.name);
97
+ });
98
+ it('does not create empty exchanges when there are only empty source properties in bindings', async () => {
99
+ const apiService = app.get(api_service_1.RabbitMqManagementApiService);
100
+ jest
101
+ .spyOn(apiService, 'getQueues')
102
+ .mockImplementation(async () => queues_json_1.default);
103
+ jest.spyOn(apiService, 'getBindings').mockImplementation(async () => [
104
+ {
105
+ source: '',
106
+ vhost: '/',
107
+ destination: queues_json_1.default[0].name,
108
+ destination_type: 'queue',
109
+ routing_key: queues_json_1.default[0].name,
110
+ arguments: {},
111
+ properties_key: queues_json_1.default[0].name
112
+ }
113
+ ]);
114
+ const addExchangesFormSourceStep = app.get(RabbitMqBindingsFromApiAnalyzer_1.RabbitMqBindingsFromApiAnalyzer);
115
+ const outputSystem = await addExchangesFormSourceStep.transform(new ms_1.System('test'));
116
+ expect(outputSystem).not.toBeNull();
117
+ expect(outputSystem.nodes).toHaveLength(0);
118
+ expect(outputSystem.edges).toHaveLength(0);
119
+ });
120
+ });
121
+ //# sourceMappingURL=RabbitMqBindingsFromApiAnalyzer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RabbitMqBindingsFromApiAnalyzer.test.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ [
2
+ {
3
+ "source": "",
4
+ "vhost": "/",
5
+ "destination": "receiver-service.routingKey.publish.update",
6
+ "destination_type": "queue"
7
+ },
8
+ {
9
+ "source": "source-exchange-1",
10
+ "vhost": "/",
11
+ "destination": "receiver-service.routingKey.publish.update",
12
+ "destination_type": "queue"
13
+ },
14
+ {
15
+ "source": "source-exchange-2",
16
+ "vhost": "/",
17
+ "destination": "receiver-service.routingKey.publish.update",
18
+ "destination_type": "queue"
19
+ }
20
+ ]
@@ -0,0 +1,5 @@
1
+ [
2
+ {
3
+ "name": "receiver-service.routingKey.publish.update"
4
+ }
5
+ ]
@@ -0,0 +1,15 @@
1
+ import { ConfigService } from '../../config/Config.service';
2
+ import { System } from '../../model/ms';
3
+ /**
4
+ * Searches for @FeignClient annotations in the source code of a microservice
5
+ * and adds a SyncDataFlow between the microservice and the target service
6
+ * which is referred to in the value element of the annotation.
7
+ */
8
+ export declare class FeignClientAnnotationAnalyzer {
9
+ private readonly config;
10
+ private readonly className;
11
+ private readonly logger;
12
+ constructor(config: ConfigService);
13
+ transform(system: System): Promise<System>;
14
+ private scanPathForFeignClients;
15
+ }
@@ -0,0 +1,131 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
34
+ var FeignClientAnnotationAnalyzer_1;
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FeignClientAnnotationAnalyzer = void 0;
37
+ const common_1 = require("@nestjs/common");
38
+ const fs = __importStar(require("fs"));
39
+ const analysis_1 = require("../../utils/files/analysis");
40
+ const Config_service_1 = require("../../config/Config.service");
41
+ const ms_1 = require("../../model/ms");
42
+ /**
43
+ * Searches for @FeignClient annotations in the source code of a microservice
44
+ * and adds a SyncDataFlow between the microservice and the target service
45
+ * which is referred to in the value element of the annotation.
46
+ */
47
+ let FeignClientAnnotationAnalyzer = FeignClientAnnotationAnalyzer_1 = class FeignClientAnnotationAnalyzer {
48
+ constructor(config) {
49
+ this.config = config;
50
+ this.className = FeignClientAnnotationAnalyzer_1.name;
51
+ this.logger = new common_1.Logger(this.className);
52
+ }
53
+ async transform(system) {
54
+ const scanResults = await this.scanPathForFeignClients(this.config.getSourceFolder());
55
+ for (const scanResult of scanResults) {
56
+ const metadata = {
57
+ transformer: this.className,
58
+ context: 'service ' + scanResult.serviceName
59
+ };
60
+ const sourceService = system.addMicroService(scanResult.serviceName, undefined, metadata);
61
+ const targetService = system.addMicroService(scanResult.feignClient.targetServiceName, undefined, metadata);
62
+ // adds links in reverse to visualize information flow, TODO: make this configurable
63
+ const definedEndpoints = scanResult.feignClient.requestMappings.map((mapping) => ({ path: mapping.value }));
64
+ const dataFlow = new ms_1.SyncDataFlow(targetService, sourceService, { definedEndpoints }, metadata);
65
+ system.edges.push(dataFlow);
66
+ this.logger.log(`added sync data flow: ${targetService.getPayload().name} -> ${sourceService.getPayload().name}`);
67
+ }
68
+ return system;
69
+ }
70
+ async scanPathForFeignClients(path) {
71
+ this.logger.log('scanning for feign clients in ' + path);
72
+ const javaFiles = await (0, analysis_1.findFiles)(path, ['.java'], undefined);
73
+ this.logger.log('found ' + javaFiles.length + ' java files');
74
+ const scanResults = [];
75
+ javaFiles
76
+ .filter((file) => (0, analysis_1.isNoSourceOfThisProject)(file))
77
+ .forEach((file) => {
78
+ const feignClient = getFeignClientInFile(file);
79
+ if (feignClient) {
80
+ const serviceName = (0, analysis_1.getServiceNameFromPath)(path, file);
81
+ const scanResult = {
82
+ file,
83
+ serviceName,
84
+ feignClient
85
+ };
86
+ scanResults.push(scanResult);
87
+ this.logger.log('found feign client annotation in service ' + scanResult.serviceName);
88
+ }
89
+ });
90
+ return scanResults;
91
+ }
92
+ };
93
+ FeignClientAnnotationAnalyzer = FeignClientAnnotationAnalyzer_1 = __decorate([
94
+ (0, common_1.Injectable)(),
95
+ __metadata("design:paramtypes", [Config_service_1.ConfigService])
96
+ ], FeignClientAnnotationAnalyzer);
97
+ exports.FeignClientAnnotationAnalyzer = FeignClientAnnotationAnalyzer;
98
+ function getFeignClientInFile(path) {
99
+ // TODO: make this async
100
+ const fileContent = fs.readFileSync(path, 'utf8');
101
+ const feignPattern = /@FeignClient\s*\(\s*(value\s*=)?\s*"([\w-]+)"/;
102
+ const feignMatch = fileContent.match(feignPattern);
103
+ if (feignMatch) {
104
+ return {
105
+ targetServiceName: feignMatch[2],
106
+ requestMappings: getRequestMappings(fileContent)
107
+ };
108
+ }
109
+ return undefined;
110
+ }
111
+ function getRequestMappings(fileContent) {
112
+ const requestBodyList = getAllPatternMatches(/@RequestMapping\s*\(([^\)]+)\)/gi, fileContent, (matchArray) => matchArray[1]);
113
+ const mappings = [];
114
+ requestBodyList.forEach((requestBody) => {
115
+ const valueElements = getAllPatternMatches(/value\s*=\s*"([^"]+)"/gi, requestBody, (matchArray) => matchArray[1]);
116
+ if (valueElements.length > 0) {
117
+ mappings.push({ value: valueElements[0] });
118
+ }
119
+ });
120
+ return mappings;
121
+ }
122
+ function getAllPatternMatches(pattern, content, matchTransformer) {
123
+ const allMatches = [];
124
+ let matches = pattern.exec(content);
125
+ while (matches != null) {
126
+ allMatches.push(matchTransformer(matches));
127
+ matches = pattern.exec(content);
128
+ }
129
+ return allMatches;
130
+ }
131
+ //# sourceMappingURL=FeignClientAnnotationAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeignClientAnnotationAnalyzer.js","sourceRoot":"","sources":["../../../../src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testing_1 = require("@nestjs/testing");
4
+ const Config_service_1 = require("../../config/Config.service");
5
+ const ms_1 = require("../../model/ms");
6
+ const FeignClientAnnotationAnalyzer_1 = require("./FeignClientAnnotationAnalyzer");
7
+ const verifiers_1 = require("../../test/verifiers");
8
+ describe(FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer.name, () => {
9
+ let app;
10
+ beforeEach(() => {
11
+ process.env.NODE_ENV = 'test';
12
+ });
13
+ beforeAll(async () => {
14
+ app = await testing_1.Test.createTestingModule({
15
+ controllers: [],
16
+ providers: [Config_service_1.ConfigService, FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer]
17
+ }).compile();
18
+ const config = app.get(Config_service_1.ConfigService);
19
+ jest.spyOn(config, 'getSourceFolder').mockImplementation(() => __dirname + '/testdata/source-folder');
20
+ });
21
+ it('transforms', async () => {
22
+ const inputSystem = new ms_1.System('test');
23
+ const addFeignClientsStep = app.get(FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer);
24
+ const outputSystem = await addFeignClientsStep.transform(inputSystem);
25
+ expect(outputSystem).not.toBeNull();
26
+ expect(outputSystem.getMicroServices()).toHaveLength(3);
27
+ const msNames = outputSystem.getMicroServices().map(ms => ms.getPayload().name);
28
+ expect(msNames).toContainEqual('service-with-feign-clients');
29
+ expect(msNames).toContainEqual('target-service1');
30
+ expect(msNames).toContainEqual('target-service2');
31
+ expect(outputSystem.getSyncDataFlows()).toHaveLength(2);
32
+ expect(outputSystem.getSyncDataFlows()[0].source.id).toEqual(outputSystem.findMicroService('target-service1').id);
33
+ expect(outputSystem.getSyncDataFlows()[0].target.id).toEqual(outputSystem.findMicroService('service-with-feign-clients').id);
34
+ expect(outputSystem.getSyncDataFlows()[0].getPayload().definedEndpoints)
35
+ .toEqual([
36
+ { path: '/rest/path/1' },
37
+ { path: '/rest/path/2' }
38
+ ]);
39
+ expect(outputSystem.getSyncDataFlows()[1].getPayload().definedEndpoints)
40
+ .toEqual([
41
+ { path: '/target-service-2/{zc}/' }
42
+ ]);
43
+ (0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer.name);
44
+ });
45
+ it('ignores source found in current project when not run in test mode', async () => {
46
+ process.env.NODE_ENV = 'non-test';
47
+ const inputSystem = new ms_1.System('test');
48
+ const addFeignClientsStep = app.get(FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer);
49
+ const outputSystem = await addFeignClientsStep.transform(inputSystem);
50
+ expect(outputSystem).not.toBeNull();
51
+ expect(outputSystem.getMicroServices()).toHaveLength(0);
52
+ });
53
+ });
54
+ //# sourceMappingURL=FeignClientAnnotationAnalyzer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeignClientAnnotationAnalyzer.test.js","sourceRoot":"","sources":["../../../../src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { FeignClientAnnotationAnalyzer } from './FeignClientAnnotationAnalyzer';
2
+ declare class SpringBootModule {
3
+ }
4
+ export { SpringBootModule, FeignClientAnnotationAnalyzer };
@@ -0,0 +1,25 @@
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
+ exports.FeignClientAnnotationAnalyzer = exports.SpringBootModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const Config_module_1 = require("../../config/Config.module");
12
+ const FeignClientAnnotationAnalyzer_1 = require("./FeignClientAnnotationAnalyzer");
13
+ Object.defineProperty(exports, "FeignClientAnnotationAnalyzer", { enumerable: true, get: function () { return FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer; } });
14
+ let SpringBootModule = class SpringBootModule {
15
+ };
16
+ SpringBootModule = __decorate([
17
+ (0, common_1.Module)({
18
+ imports: [Config_module_1.ConfigModule],
19
+ controllers: [],
20
+ providers: [FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer],
21
+ exports: [FeignClientAnnotationAnalyzer_1.FeignClientAnnotationAnalyzer]
22
+ })
23
+ ], SpringBootModule);
24
+ exports.SpringBootModule = SpringBootModule;
25
+ //# sourceMappingURL=SpringBoot.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpringBoot.module.js","sourceRoot":"","sources":["../../../../src/system-element-extractors/spring-boot/SpringBoot.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuC;AAEvC,8DAAyD;AACzD,mFAA+E;AAUpD,8GAVlB,6DAA6B,OAUkB;AAFxD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,gBAAgB;IANrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,CAAC;QACvB,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,CAAC,6DAA6B,CAAC;QAC1C,OAAO,EAAE,CAAC,6DAA6B,CAAC;KACzC,CAAC;GACI,gBAAgB,CAAG;AAEhB,4CAAgB"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="jest" />
2
+ declare namespace jest {
3
+ interface Matchers<R> {
4
+ toContainObject(object: any): CustomMatcherResult;
5
+ toContainObjectWithContent(content: any): CustomMatcherResult;
6
+ }
7
+ }
@@ -0,0 +1,20 @@
1
+ expect.extend({
2
+ toContainObject(actualObject, expectedObject) {
3
+ const pass = this.equals(actualObject, expect.arrayContaining([
4
+ expect.objectContaining(expectedObject)
5
+ ]));
6
+ if (pass) {
7
+ return {
8
+ message: () => (`expected ${this.utils.printReceived(actualObject)} not to contain object ${this.utils.printExpected(expectedObject)}`),
9
+ pass: true
10
+ };
11
+ }
12
+ else {
13
+ return {
14
+ message: () => (`expected ${this.utils.printReceived(actualObject)} to contain object ${this.utils.printExpected(expectedObject)}`),
15
+ pass: false
16
+ };
17
+ }
18
+ }
19
+ });
20
+ //# sourceMappingURL=expect-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect-extensions.js","sourceRoot":"","sources":["../../../src/test/expect-extensions.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,CAAC;IACZ,eAAe,CAAC,YAAiB,EAAE,cAAmB;QAEpD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EACnC,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC;SACxC,CAAC,CACH,CAAA;QAED,IAAI,IAAI,EAAE;YACR,OAAO;gBACL,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvI,IAAI,EAAE,IAAI;aACX,CAAA;SACF;aAAM;YACL,OAAO;gBACL,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnI,IAAI,EAAE,KAAK;aACZ,CAAA;SACF;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Node } from '../model/core';
2
+ import './expect-extensions';
3
+ export declare function verifyEachContentHasFields(node: Node, fields: any): void;
4
+ export declare function verifyEachContentHasTransformer(node: Node, transformer: string): void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyEachContentHasTransformer = exports.verifyEachContentHasFields = void 0;
4
+ require("./expect-extensions");
5
+ function verifyEachContentHasFields(node, fields) {
6
+ expect(node.nodes.map(node => node.content)).toContainObject(fields);
7
+ expect(node.edges.map(edge => edge.content)).toContainObject(fields);
8
+ }
9
+ exports.verifyEachContentHasFields = verifyEachContentHasFields;
10
+ function verifyEachContentHasTransformer(node, transformer) {
11
+ if (node.nodes && node.nodes.length > 0) {
12
+ expect(node.nodes.map(node => node.content.metadata)).toContainObject({ transformer });
13
+ }
14
+ if (node.edges && node.edges.length > 0) {
15
+ expect(node.edges.map(edge => { var _a; return (_a = edge.content) === null || _a === void 0 ? void 0 : _a.metadata; })).toContainObject({ transformer });
16
+ }
17
+ }
18
+ exports.verifyEachContentHasTransformer = verifyEachContentHasTransformer;
19
+ //# sourceMappingURL=verifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifiers.js","sourceRoot":"","sources":["../../../src/test/verifiers.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAE5B,SAAgB,0BAA0B,CAAC,IAAU,EAAE,MAAW;IAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACpE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;AACtE,CAAC;AAHD,gEAGC;AAED,SAAgB,+BAA+B,CAAC,IAAU,EAAE,WAAmB;IAC7E,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;KACvF;IAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,CAAA,EAAA,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;KACxF;AACH,CAAC;AARD,0EAQC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * searches for all files in the given path recursively
3
+ * and filters for given file ending.
4
+ *
5
+ * @param path
6
+ * @param fileEnding
7
+ */
8
+ export declare function findFiles(path: string, includedFileEndings: string[] | undefined, excludedFolders: string[] | undefined): Promise<string[]>;
9
+ /**
10
+ * searches for all files in the given path recursively
11
+ * and filters for given file ending.
12
+ * ignores files which belong to the source of this software
13
+ * iff the software is not invoked from a unit test.
14
+ *
15
+ * @param path
16
+ * @param fileEnding
17
+ */
18
+ export declare function findFilesSafe(path: string, includedFileEndings: string[] | undefined, excludedFolders: string[] | undefined): Promise<string[]>;
19
+ /** extracts the service name of a file in the source path.
20
+ * the service name will be the name of the folder that is directly contained in the source path.
21
+ */
22
+ export declare function getServiceNameFromPath(sourcePath: any, file: any): any;
23
+ /**
24
+ * returns true if either the given file does not belong to this software
25
+ * or this method was called from a unit test.
26
+ *
27
+ * @param file
28
+ * @deprecated use findFilesSafe() instead
29
+ */
30
+ export declare function isNoSourceOfThisProject(file: any): boolean;
@@ -0,0 +1,109 @@
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 __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.isNoSourceOfThisProject = exports.getServiceNameFromPath = exports.findFilesSafe = exports.findFiles = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const p = __importStar(require("path"));
29
+ /**
30
+ * searches for all files in the given path recursively
31
+ * and filters for given file ending.
32
+ *
33
+ * @param path
34
+ * @param fileEnding
35
+ */
36
+ async function findFiles(path, includedFileEndings, excludedFolders) {
37
+ const files = [];
38
+ await getFilesRecursive(path, files, includedFileEndings, excludedFolders);
39
+ return files;
40
+ }
41
+ exports.findFiles = findFiles;
42
+ /**
43
+ * searches for all files in the given path recursively
44
+ * and filters for given file ending.
45
+ * ignores files which belong to the source of this software
46
+ * iff the software is not invoked from a unit test.
47
+ *
48
+ * @param path
49
+ * @param fileEnding
50
+ */
51
+ async function findFilesSafe(path, includedFileEndings, excludedFolders) {
52
+ const allFiles = await findFiles(path, includedFileEndings, excludedFolders);
53
+ // tslint:disable-next-line: deprecation - its ok for this file to use the method.
54
+ return allFiles.filter(file => isNoSourceOfThisProject(file));
55
+ }
56
+ exports.findFilesSafe = findFilesSafe;
57
+ async function getFilesRecursive(path, allFiles, includedFileEndings, excludedFolders) {
58
+ const entries = await getDirectoryEntries(path);
59
+ for (const entry of entries) {
60
+ const entryWithPath = p.resolve(path, entry);
61
+ if (!fs.statSync(entryWithPath).isDirectory()
62
+ && (!includedFileEndings || fileHasAnyEnding(entry, includedFileEndings))) {
63
+ allFiles.push(entryWithPath);
64
+ }
65
+ if (fs.statSync(entryWithPath).isDirectory() && folderIsNotExcluded(entry, excludedFolders)) {
66
+ await getFilesRecursive(entryWithPath, allFiles, includedFileEndings, excludedFolders);
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ function folderIsNotExcluded(folder, excludedFolders) {
72
+ return !excludedFolders || !excludedFolders.includes(folder);
73
+ }
74
+ function fileHasAnyEnding(file, includedFileEndings) {
75
+ return includedFileEndings.find(ending => file.endsWith(ending)) !== undefined;
76
+ }
77
+ function getDirectoryEntries(path) {
78
+ return new Promise((resolve, reject) => {
79
+ fs.readdir(path, (error, files) => {
80
+ if (error) {
81
+ reject(error);
82
+ }
83
+ else {
84
+ resolve(files);
85
+ }
86
+ });
87
+ });
88
+ }
89
+ /** extracts the service name of a file in the source path.
90
+ * the service name will be the name of the folder that is directly contained in the source path.
91
+ */
92
+ function getServiceNameFromPath(sourcePath, file) {
93
+ const strippedPath = file.slice(sourcePath.length + 1);
94
+ return strippedPath.slice(0, strippedPath.indexOf('/'));
95
+ }
96
+ exports.getServiceNameFromPath = getServiceNameFromPath;
97
+ /**
98
+ * returns true if either the given file does not belong to this software
99
+ * or this method was called from a unit test.
100
+ *
101
+ * @param file
102
+ * @deprecated use findFilesSafe() instead
103
+ */
104
+ function isNoSourceOfThisProject(file) {
105
+ const thisProjectsSourceFolder = p.resolve(process.cwd(), 'src');
106
+ return !file.toLowerCase().includes(thisProjectsSourceFolder.toLowerCase()) || process.env.NODE_ENV === 'test';
107
+ }
108
+ exports.isNoSourceOfThisProject = isNoSourceOfThisProject;
109
+ //# sourceMappingURL=analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../../src/utils/files/analysis.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,wCAAyB;AAEzB;;;;;;GAMG;AACI,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,mBAAyC,EAAE,eAAqC;IAC5H,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAA;IAC1E,OAAO,KAAK,CAAA;AACd,CAAC;AAJD,8BAIC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,aAAa,CAAC,IAAY,EACZ,mBAAyC,EACzC,eAAqC;IAEvE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAA;IAC5E,kFAAkF;IAClF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/D,CAAC;AAPD,sCAOC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAC7C,mBAAyC,EAAE,eAAqC;IAEhF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAE/C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;eACxC,CAAC,CAAC,mBAAmB,IAAI,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE;YAC3E,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;SAC7B;QAED,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,IAAI,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE;YAC3F,MAAM,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAA;SACvF;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,eAAqC;IAChF,OAAO,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,mBAAyC;IAC/E,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,CAAA;AAChF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAI;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAChC,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,KAAK,CAAC,CAAA;aACd;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,CAAA;aACf;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,UAAU,EAAE,IAAI;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;AACzD,CAAC;AAHD,wDAGC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,IAAI;IAC1C,MAAM,wBAAwB,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IAChE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAA;AAChH,CAAC;AAHD,0DAGC"}