tadis-analyzer 2.2.2 → 2.3.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.
- package/package.json +5 -1
- package/build/src/app/code-pattern/main.d.ts +0 -1
- package/build/src/app/code-pattern/main.js +0 -14
- package/build/src/app/code-pattern/main.js.map +0 -1
- package/build/src/app/default/main.d.ts +0 -1
- package/build/src/app/default/main.js +0 -15
- package/build/src/app/default/main.js.map +0 -1
- package/build/src/app/error.d.ts +0 -3
- package/build/src/app/error.js +0 -10
- package/build/src/app/error.js.map +0 -1
- package/build/src/config/Config.module.d.ts +0 -4
- package/build/src/config/Config.module.js +0 -28
- package/build/src/config/Config.module.js.map +0 -1
- package/build/src/config/Config.service.d.ts +0 -19
- package/build/src/config/Config.service.js +0 -105
- package/build/src/config/Config.service.js.map +0 -1
- package/build/src/config/Config.service.test.d.ts +0 -1
- package/build/src/config/Config.service.test.js +0 -33
- package/build/src/config/Config.service.test.js.map +0 -1
- package/build/src/deprecated-modules/CommonTransformers.module.d.ts +0 -5
- package/build/src/deprecated-modules/CommonTransformers.module.js +0 -34
- package/build/src/deprecated-modules/CommonTransformers.module.js.map +0 -1
- package/build/src/deprecated-modules/Msa.module.d.ts +0 -13
- package/build/src/deprecated-modules/Msa.module.js +0 -63
- package/build/src/deprecated-modules/Msa.module.js.map +0 -1
- package/build/src/deprecated-modules/SourceCodeAnalysis.module.d.ts +0 -6
- package/build/src/deprecated-modules/SourceCodeAnalysis.module.js +0 -60
- package/build/src/deprecated-modules/SourceCodeAnalysis.module.js.map +0 -1
- package/build/src/git/Git.module.d.ts +0 -5
- package/build/src/git/Git.module.js +0 -28
- package/build/src/git/Git.module.js.map +0 -1
- package/build/src/git/GitStorage.controller.d.ts +0 -17
- package/build/src/git/GitStorage.controller.js +0 -88
- package/build/src/git/GitStorage.controller.js.map +0 -1
- package/build/src/git/GitStorage.controller.test.d.ts +0 -1
- package/build/src/git/GitStorage.controller.test.js +0 -30
- package/build/src/git/GitStorage.controller.test.js.map +0 -1
- package/build/src/git/GitStorage.d.ts +0 -23
- package/build/src/git/GitStorage.js +0 -153
- package/build/src/git/GitStorage.js.map +0 -1
- package/build/src/git/GitStorage.service.d.ts +0 -10
- package/build/src/git/GitStorage.service.js +0 -36
- package/build/src/git/GitStorage.service.js.map +0 -1
- package/build/src/git/SourceLocationDecorator.d.ts +0 -12
- package/build/src/git/SourceLocationDecorator.js +0 -46
- package/build/src/git/SourceLocationDecorator.js.map +0 -1
- package/build/src/git/SourceLocationDecorator.test.d.ts +0 -1
- package/build/src/git/SourceLocationDecorator.test.js +0 -35
- package/build/src/git/SourceLocationDecorator.test.js.map +0 -1
- package/build/src/lib.d.ts +0 -21
- package/build/src/lib.js +0 -57
- package/build/src/lib.js.map +0 -1
- package/build/src/model/core-typed.d.ts +0 -21
- package/build/src/model/core-typed.js +0 -89
- package/build/src/model/core-typed.js.map +0 -1
- package/build/src/model/core-typed.test.d.ts +0 -1
- package/build/src/model/core-typed.test.js +0 -29
- package/build/src/model/core-typed.test.js.map +0 -1
- package/build/src/model/core.d.ts +0 -33
- package/build/src/model/core.js +0 -117
- package/build/src/model/core.js.map +0 -1
- package/build/src/model/ms.d.ts +0 -58
- package/build/src/model/ms.js +0 -83
- package/build/src/model/ms.js.map +0 -1
- package/build/src/model/transport.d.ts +0 -17
- package/build/src/model/transport.js +0 -20
- package/build/src/model/transport.js.map +0 -1
- package/build/src/model/v1-legacy/model.d.ts +0 -53
- package/build/src/model/v1-legacy/model.js +0 -85
- package/build/src/model/v1-legacy/model.js.map +0 -1
- package/build/src/model/v1-legacy/v1-adapter.d.ts +0 -3
- package/build/src/model/v1-legacy/v1-adapter.js +0 -68
- package/build/src/model/v1-legacy/v1-adapter.js.map +0 -1
- package/build/src/model/v1-legacy/v1-adapter.test.d.ts +0 -1
- package/build/src/model/v1-legacy/v1-adapter.test.js +0 -66
- package/build/src/model/v1-legacy/v1-adapter.test.js.map +0 -1
- package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.d.ts +0 -12
- package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.js +0 -107
- package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.js.map +0 -1
- package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.test.d.ts +0 -1
- package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.test.js +0 -111
- package/build/src/post-processors/MicroserviceWithOutgoingExchangeMerger.test.js.map +0 -1
- package/build/src/post-processors/PostProcessors.module.d.ts +0 -6
- package/build/src/post-processors/PostProcessors.module.js +0 -37
- package/build/src/post-processors/PostProcessors.module.js.map +0 -1
- package/build/src/post-processors/PostProcessors.module.test.d.ts +0 -1
- package/build/src/post-processors/PostProcessors.module.test.js +0 -23
- package/build/src/post-processors/PostProcessors.module.test.js.map +0 -1
- package/build/src/post-processors/StaticNodeFilter.d.ts +0 -9
- package/build/src/post-processors/StaticNodeFilter.js +0 -91
- package/build/src/post-processors/StaticNodeFilter.js.map +0 -1
- package/build/src/post-processors/StaticNodeFilter.test.d.ts +0 -1
- package/build/src/post-processors/StaticNodeFilter.test.js +0 -36
- package/build/src/post-processors/StaticNodeFilter.test.js.map +0 -1
- package/build/src/post-processors/SubSystemFromPayloadTransformer.d.ts +0 -13
- package/build/src/post-processors/SubSystemFromPayloadTransformer.js +0 -103
- package/build/src/post-processors/SubSystemFromPayloadTransformer.js.map +0 -1
- package/build/src/post-processors/SubSystemFromPayloadTransformer.test.d.ts +0 -1
- package/build/src/post-processors/SubSystemFromPayloadTransformer.test.js +0 -56
- package/build/src/post-processors/SubSystemFromPayloadTransformer.test.js.map +0 -1
- package/build/src/system-assemblers/controllers/ISystemAssembler.d.ts +0 -5
- package/build/src/system-assemblers/controllers/ISystemAssembler.js +0 -3
- package/build/src/system-assemblers/controllers/ISystemAssembler.js.map +0 -1
- package/build/src/system-assemblers/controllers/SystemAssembler.controller.d.ts +0 -19
- package/build/src/system-assemblers/controllers/SystemAssembler.controller.js +0 -95
- package/build/src/system-assemblers/controllers/SystemAssembler.controller.js.map +0 -1
- package/build/src/system-assemblers/controllers/SystemAssembler.controller.test.d.ts +0 -1
- package/build/src/system-assemblers/controllers/SystemAssembler.controller.test.js +0 -54
- package/build/src/system-assemblers/controllers/SystemAssembler.controller.test.js.map +0 -1
- package/build/src/system-assemblers/controllers/SystemAssembler.module.d.ts +0 -6
- package/build/src/system-assemblers/controllers/SystemAssembler.module.js +0 -28
- package/build/src/system-assemblers/controllers/SystemAssembler.module.js.map +0 -1
- package/build/src/system-assemblers/controllers/SystemAssembler.service.d.ts +0 -6
- package/build/src/system-assemblers/controllers/SystemAssembler.service.js +0 -24
- package/build/src/system-assemblers/controllers/SystemAssembler.service.js.map +0 -1
- package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.module.d.ts +0 -4
- package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.module.js +0 -46
- package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.module.js.map +0 -1
- package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.service.d.ts +0 -16
- package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.service.js +0 -53
- package/build/src/system-assemblers/kubernetes-rabbitmq/KubernetesRabbitMqAssembler.service.js.map +0 -1
- package/build/src/system-element-extractors/env-variables/EnvVariables.module.d.ts +0 -4
- package/build/src/system-element-extractors/env-variables/EnvVariables.module.js +0 -25
- package/build/src/system-element-extractors/env-variables/EnvVariables.module.js.map +0 -1
- package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.d.ts +0 -13
- package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.js +0 -64
- package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.js.map +0 -1
- package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.test.d.ts +0 -1
- package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.test.js +0 -56
- package/build/src/system-element-extractors/env-variables/ExchangesFromEnvPayloadCreator.test.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/CodePattern.module.d.ts +0 -4
- package/build/src/system-element-extractors/experimental/code-pattern/CodePattern.module.js +0 -26
- package/build/src/system-element-extractors/experimental/code-pattern/CodePattern.module.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.controller.d.ts +0 -8
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.controller.js +0 -54
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.controller.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.d.ts +0 -10
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.js +0 -345
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.d.ts +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.js +0 -130
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.service.d.ts +0 -16
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.service.js +0 -47
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.service.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.d.ts +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.js +0 -177
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/behavior-model.d.ts +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/behavior-model.js +0 -3
- package/build/src/system-element-extractors/experimental/code-pattern/behavior-model.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/model.d.ts +0 -116
- package/build/src/system-element-extractors/experimental/code-pattern/model.js +0 -23
- package/build/src/system-element-extractors/experimental/code-pattern/model.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.d.ts +0 -8
- package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.js +0 -26
- package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.js.map +0 -1
- package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.d.ts +0 -0
- package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.js +0 -18
- package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.js.map +0 -1
- package/build/src/system-element-extractors/java/Java.module.d.ts +0 -4
- package/build/src/system-element-extractors/java/Java.module.js +0 -26
- package/build/src/system-element-extractors/java/Java.module.js.map +0 -1
- package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.d.ts +0 -35
- package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.js +0 -155
- package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.js.map +0 -1
- package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.test.d.ts +0 -1
- package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.test.js +0 -85
- package/build/src/system-element-extractors/java/JavaAnnotationAnalyzer.test.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/Kubernetes.module.d.ts +0 -7
- package/build/src/system-element-extractors/kubernetes/Kubernetes.module.js +0 -43
- package/build/src/system-element-extractors/kubernetes/Kubernetes.module.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/api/api.service.d.ts +0 -9
- package/build/src/system-element-extractors/kubernetes/api/api.service.js +0 -78
- package/build/src/system-element-extractors/kubernetes/api/api.service.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.d.ts +0 -10
- package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.js +0 -80
- package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.test.d.ts +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.test.js +0 -32
- package/build/src/system-element-extractors/kubernetes/transformer/EnvDefinitionFromPodDecorator.test.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.d.ts +0 -12
- package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.js +0 -82
- package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.test.d.ts +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.test.js +0 -30
- package/build/src/system-element-extractors/kubernetes/transformer/LabelsFromDeploymentDecorator.test.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.d.ts +0 -12
- package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.js +0 -67
- package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.test.d.ts +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.test.js +0 -38
- package/build/src/system-element-extractors/kubernetes/transformer/MicroservicesFromKubernetesCreator.test.js.map +0 -1
- package/build/src/system-element-extractors/kubernetes/transformer/testdata/api/deployments.json +0 -256
- package/build/src/system-element-extractors/kubernetes/transformer/testdata/api/pods.json +0 -101
- package/build/src/system-element-extractors/kubernetes/transformer/testdata/api/services.json +0 -75
- package/build/src/system-element-extractors/rabbitmq/RabbitMq.module.d.ts +0 -6
- package/build/src/system-element-extractors/rabbitmq/RabbitMq.module.js +0 -38
- package/build/src/system-element-extractors/rabbitmq/RabbitMq.module.js.map +0 -1
- package/build/src/system-element-extractors/rabbitmq/api/api.service.d.ts +0 -11
- package/build/src/system-element-extractors/rabbitmq/api/api.service.js +0 -63
- package/build/src/system-element-extractors/rabbitmq/api/api.service.js.map +0 -1
- package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.d.ts +0 -9
- package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.js +0 -117
- package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.js.map +0 -1
- package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.test.d.ts +0 -1
- package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.test.js +0 -43
- package/build/src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.test.js.map +0 -1
- package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.d.ts +0 -14
- package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.js +0 -117
- package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.js.map +0 -1
- package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.d.ts +0 -1
- package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.js +0 -121
- package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.js.map +0 -1
- package/build/src/system-element-extractors/rabbitmq/transformer/testdata/api/bindings.json +0 -20
- package/build/src/system-element-extractors/rabbitmq/transformer/testdata/api/queues.json +0 -5
- package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.d.ts +0 -15
- package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.js +0 -131
- package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.js.map +0 -1
- package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.test.d.ts +0 -1
- package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.test.js +0 -54
- package/build/src/system-element-extractors/spring-boot/FeignClientAnnotationAnalyzer.test.js.map +0 -1
- package/build/src/system-element-extractors/spring-boot/SpringBoot.module.d.ts +0 -4
- package/build/src/system-element-extractors/spring-boot/SpringBoot.module.js +0 -25
- package/build/src/system-element-extractors/spring-boot/SpringBoot.module.js.map +0 -1
- package/build/src/test/expect-extensions.d.ts +0 -7
- package/build/src/test/expect-extensions.js +0 -20
- package/build/src/test/expect-extensions.js.map +0 -1
- package/build/src/test/verifiers.d.ts +0 -4
- package/build/src/test/verifiers.js +0 -19
- package/build/src/test/verifiers.js.map +0 -1
- package/build/src/utils/files/analysis.d.ts +0 -30
- package/build/src/utils/files/analysis.js +0 -109
- package/build/src/utils/files/analysis.js.map +0 -1
|
@@ -1,117 +0,0 @@
|
|
|
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 OutgoingExchangesFromSourceCreator_1;
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.OutgoingExchangesFromSourceCreator = 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
|
-
const fileEndingToAnalyze = '.java';
|
|
43
|
-
const fileNameToAnalyzeMustInclude = 'send';
|
|
44
|
-
const pathToAnalyzeMustNotInclude = 'migration';
|
|
45
|
-
let OutgoingExchangesFromSourceCreator = OutgoingExchangesFromSourceCreator_1 = class OutgoingExchangesFromSourceCreator {
|
|
46
|
-
constructor(config) {
|
|
47
|
-
this.config = config;
|
|
48
|
-
this.logger = new common_1.Logger(OutgoingExchangesFromSourceCreator_1.name);
|
|
49
|
-
}
|
|
50
|
-
async transform(system) {
|
|
51
|
-
const scanResults = await this.scanPathForExchangesInSendConfigurations(this.config.getSourceFolder());
|
|
52
|
-
for (const scanResult of scanResults) {
|
|
53
|
-
const metadata = {
|
|
54
|
-
transformer: OutgoingExchangesFromSourceCreator_1.name,
|
|
55
|
-
context: 'service ' + scanResult.serviceName
|
|
56
|
-
};
|
|
57
|
-
const sourceService = system.addMicroService(scanResult.serviceName, undefined, metadata);
|
|
58
|
-
const targetExchange = system.addMessageExchange(scanResult.exchangeName, undefined, metadata);
|
|
59
|
-
const eventFlow = new ms_1.AsyncEventFlow(sourceService, targetExchange, undefined, metadata);
|
|
60
|
-
system.edges.push(eventFlow);
|
|
61
|
-
this.logger.log(`added async event flow: ${sourceService.getPayload().name} -> ${targetExchange.getPayload().name}`);
|
|
62
|
-
}
|
|
63
|
-
return system;
|
|
64
|
-
}
|
|
65
|
-
async scanPathForExchangesInSendConfigurations(path) {
|
|
66
|
-
this.logger.log('scanning for exchange in ' + path);
|
|
67
|
-
const filesToAnalyze = await (0, analysis_1.findFiles)(path, [fileEndingToAnalyze], undefined);
|
|
68
|
-
this.logger.log('found ' +
|
|
69
|
-
filesToAnalyze.length +
|
|
70
|
-
' files which end with ' +
|
|
71
|
-
fileEndingToAnalyze);
|
|
72
|
-
const sendConfigurations = [];
|
|
73
|
-
filesToAnalyze
|
|
74
|
-
.filter((file) => (0, analysis_1.isNoSourceOfThisProject)(file) && isSendConfiguration(file))
|
|
75
|
-
.forEach((file) => {
|
|
76
|
-
const exchangeNames = parseExchangeVariables(file);
|
|
77
|
-
exchangeNames.forEach((exchangeName) => {
|
|
78
|
-
const serviceName = (0, analysis_1.getServiceNameFromPath)(path, file);
|
|
79
|
-
sendConfigurations.push({ file, serviceName, exchangeName });
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
this.logger.log('found ' + sendConfigurations.length + ' send configuration');
|
|
83
|
-
return sendConfigurations;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
OutgoingExchangesFromSourceCreator = OutgoingExchangesFromSourceCreator_1 = __decorate([
|
|
87
|
-
(0, common_1.Injectable)(),
|
|
88
|
-
__metadata("design:paramtypes", [Config_service_1.ConfigService])
|
|
89
|
-
], OutgoingExchangesFromSourceCreator);
|
|
90
|
-
exports.OutgoingExchangesFromSourceCreator = OutgoingExchangesFromSourceCreator;
|
|
91
|
-
function isSendConfiguration(file) {
|
|
92
|
-
return (getFileNameWithoutPath(file)
|
|
93
|
-
.toLowerCase()
|
|
94
|
-
.includes(fileNameToAnalyzeMustInclude) &&
|
|
95
|
-
!file.toLowerCase().includes(pathToAnalyzeMustNotInclude) &&
|
|
96
|
-
isNotPartOfTestInSourceProject(file));
|
|
97
|
-
}
|
|
98
|
-
function isNotPartOfTestInSourceProject(file) {
|
|
99
|
-
// TODO: make this configurable
|
|
100
|
-
return !file.toLowerCase().includes('test') || process.env.NODE_ENV === 'test';
|
|
101
|
-
}
|
|
102
|
-
function parseExchangeVariables(file) {
|
|
103
|
-
const exchangeNames = [];
|
|
104
|
-
const pattern = /exchange[\w]*[\s]*=\s*"(\w+)"/gi;
|
|
105
|
-
const fileContent = fs.readFileSync(file, 'utf8');
|
|
106
|
-
let matches = pattern.exec(fileContent);
|
|
107
|
-
while (matches != null) {
|
|
108
|
-
exchangeNames.push(matches[1]);
|
|
109
|
-
matches = pattern.exec(fileContent);
|
|
110
|
-
}
|
|
111
|
-
return exchangeNames;
|
|
112
|
-
}
|
|
113
|
-
function getFileNameWithoutPath(fileLocation) {
|
|
114
|
-
const lastSlashIndex = fileLocation.lastIndexOf('/');
|
|
115
|
-
return fileLocation.slice(lastSlashIndex + 1);
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=OutgoingExchangesFromSourceCreator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingExchangesFromSourceCreator.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,43 +0,0 @@
|
|
|
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 OutgoingExchangesFromSourceCreator_1 = require("./OutgoingExchangesFromSourceCreator");
|
|
7
|
-
const verifiers_1 = require("../../../test/verifiers");
|
|
8
|
-
describe(OutgoingExchangesFromSourceCreator_1.OutgoingExchangesFromSourceCreator.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, OutgoingExchangesFromSourceCreator_1.OutgoingExchangesFromSourceCreator]
|
|
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 addExchangesFormSourceStep = app.get(OutgoingExchangesFromSourceCreator_1.OutgoingExchangesFromSourceCreator);
|
|
24
|
-
const outputSystem = await addExchangesFormSourceStep.transform(inputSystem);
|
|
25
|
-
expect(outputSystem).not.toBeNull();
|
|
26
|
-
expect(outputSystem.getMicroServices()).toHaveLength(1);
|
|
27
|
-
expect(outputSystem.getMessageExchanges()).toHaveLength(2);
|
|
28
|
-
const exchangeNames = outputSystem.getMessageExchanges().map(exchange => exchange.getPayload().name);
|
|
29
|
-
expect(exchangeNames).toContainEqual('exchangeInSource1');
|
|
30
|
-
expect(exchangeNames).toContainEqual('exchangeInSource2');
|
|
31
|
-
(0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, OutgoingExchangesFromSourceCreator_1.OutgoingExchangesFromSourceCreator.name);
|
|
32
|
-
});
|
|
33
|
-
it('ignores source found in current project when not run in test mode', async () => {
|
|
34
|
-
process.env.NODE_ENV = 'non-test';
|
|
35
|
-
const inputSystem = new ms_1.System('test');
|
|
36
|
-
const addExchangesFormSourceStep = app.get(OutgoingExchangesFromSourceCreator_1.OutgoingExchangesFromSourceCreator);
|
|
37
|
-
const outputSystem = await addExchangesFormSourceStep.transform(inputSystem);
|
|
38
|
-
expect(outputSystem).not.toBeNull();
|
|
39
|
-
expect(outputSystem.getMicroServices()).toHaveLength(0);
|
|
40
|
-
expect(outputSystem.getMessageExchanges()).toHaveLength(0);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=OutgoingExchangesFromSourceCreator.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingExchangesFromSourceCreator.test.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/rabbitmq/transformer/OutgoingExchangesFromSourceCreator.test.ts"],"names":[],"mappings":";;AAAA,6CAAqD;AAErD,mEAA8D;AAE9D,0CAA0C;AAC1C,6FAAyF;AACzF,uDAAyE;AAEzE,QAAQ,CAAC,uEAAkC,CAAC,IAAI,EAAE,GAAG,EAAE;IACrD,IAAI,GAAkB,CAAA;IAEtB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAG,EAAE;QAClB,GAAG,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;YACnC,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,CAAC,8BAAa,EAAE,uEAAkC,CAAC;SAC/D,CAAC,CAAC,OAAO,EAAE,CAAA;QAEZ,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAgB,8BAAa,CAAC,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,kBAAkB,CACtD,GAAG,EAAE,CAAC,SAAS,GAAG,yBAAyB,CAC5C,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,YAAY,EAAE,KAAK,IAAG,EAAE;QACzB,MAAM,WAAW,GAAG,IAAI,WAAM,CAAC,MAAM,CAAC,CAAA;QAEtC,MAAM,0BAA0B,GAAG,GAAG,CAAC,GAAG,CAAqC,uEAAkC,CAAC,CAAA;QAClH,MAAM,YAAY,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAE5E,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACvD,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAA;QACpG,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAA;QACzD,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAA;QAEzD,IAAA,2CAA+B,EAAC,YAAY,EAAE,uEAAkC,CAAC,IAAI,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAG,EAAE;QAChF,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAA;QAEjC,MAAM,WAAW,GAAG,IAAI,WAAM,CAAC,MAAM,CAAC,CAAA;QAEtC,MAAM,0BAA0B,GAAG,GAAG,CAAC,GAAG,CAAqC,uEAAkC,CAAC,CAAA;QAClH,MAAM,YAAY,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAE5E,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACvD,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ConfigService } from '../../../config/Config.service';
|
|
2
|
-
import { System } from '../../../model/ms';
|
|
3
|
-
import { RabbitMqManagementApiService } from '../api/api.service';
|
|
4
|
-
export declare class RabbitMqBindingsFromApiAnalyzer {
|
|
5
|
-
private readonly config;
|
|
6
|
-
private readonly apiService;
|
|
7
|
-
private readonly logger;
|
|
8
|
-
constructor(config: ConfigService, apiService: RabbitMqManagementApiService);
|
|
9
|
-
transform(system: System): Promise<System>;
|
|
10
|
-
private getQueueNames;
|
|
11
|
-
private addEdgesFromBindings;
|
|
12
|
-
private ensureTargetNodeExists;
|
|
13
|
-
private getBindings;
|
|
14
|
-
}
|
package/build/src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
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 RabbitMqBindingsFromApiAnalyzer_1;
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.RabbitMqBindingsFromApiAnalyzer = void 0;
|
|
37
|
-
const common_1 = require("@nestjs/common");
|
|
38
|
-
const _ = __importStar(require("lodash"));
|
|
39
|
-
const Config_service_1 = require("../../../config/Config.service");
|
|
40
|
-
const ms_1 = require("../../../model/ms");
|
|
41
|
-
const api_service_1 = require("../api/api.service");
|
|
42
|
-
// this analyzer assumes that a queue starts with the name of the microservice
|
|
43
|
-
// which the queue belongs to. after the microservice name the delimiter below follows.
|
|
44
|
-
const microServiceNameDelimiter = '.';
|
|
45
|
-
let RabbitMqBindingsFromApiAnalyzer = RabbitMqBindingsFromApiAnalyzer_1 = class RabbitMqBindingsFromApiAnalyzer {
|
|
46
|
-
constructor(config, apiService) {
|
|
47
|
-
this.config = config;
|
|
48
|
-
this.apiService = apiService;
|
|
49
|
-
this.logger = new common_1.Logger(RabbitMqBindingsFromApiAnalyzer_1.name);
|
|
50
|
-
}
|
|
51
|
-
async transform(system) {
|
|
52
|
-
const queueNames = await this.getQueueNames();
|
|
53
|
-
const bindingsPromises = queueNames.map(queue => this.getBindings(queue));
|
|
54
|
-
const bindings = await Promise.all(bindingsPromises);
|
|
55
|
-
const allBindings = _.flatMap(bindings);
|
|
56
|
-
this.addEdgesFromBindings(system, allBindings);
|
|
57
|
-
return system;
|
|
58
|
-
}
|
|
59
|
-
async getQueueNames() {
|
|
60
|
-
const queues = await this.apiService.getQueues();
|
|
61
|
-
if (!queues)
|
|
62
|
-
return [];
|
|
63
|
-
return queues.map(queue => { return queue.name; });
|
|
64
|
-
}
|
|
65
|
-
addEdgesFromBindings(system, bindings) {
|
|
66
|
-
bindings
|
|
67
|
-
.filter(binding => binding.exchange !== '')
|
|
68
|
-
.forEach(binding => {
|
|
69
|
-
const metadata = {
|
|
70
|
-
transformer: RabbitMqBindingsFromApiAnalyzer_1.name,
|
|
71
|
-
context: 'queue ' + binding.queue + ' bound to exchange ' + binding.exchange
|
|
72
|
-
};
|
|
73
|
-
const sourceExchangName = binding.exchange;
|
|
74
|
-
const sourceExchange = system.addMessageExchange(sourceExchangName, undefined, metadata);
|
|
75
|
-
const targetNode = this.ensureTargetNodeExists(binding, system);
|
|
76
|
-
system.edges.push(new ms_1.AsyncEventFlow(sourceExchange, targetNode, undefined, metadata));
|
|
77
|
-
this.logger.log('added async event flow: message exchange ' + sourceExchangName + ' -> microservice ' + targetNode.getName());
|
|
78
|
-
});
|
|
79
|
-
return system;
|
|
80
|
-
}
|
|
81
|
-
ensureTargetNodeExists(binding, system) {
|
|
82
|
-
if (binding.queue.indexOf(microServiceNameDelimiter) >= 0) {
|
|
83
|
-
const queuePrefix = binding.queue.substring(0, binding.queue.indexOf(microServiceNameDelimiter));
|
|
84
|
-
const existingService = system.findMicroService(queuePrefix);
|
|
85
|
-
if (existingService) {
|
|
86
|
-
return existingService;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const metadata = {
|
|
90
|
-
transformer: RabbitMqBindingsFromApiAnalyzer_1.name,
|
|
91
|
-
context: 'queue ' + binding.queue + ' bound to exchange ' + binding.exchange
|
|
92
|
-
};
|
|
93
|
-
const targetNodeName = binding.queue;
|
|
94
|
-
const queueNode = system.addOrExtendNamedNode(ms_1.MessageQueue, targetNodeName, undefined, metadata);
|
|
95
|
-
return queueNode;
|
|
96
|
-
}
|
|
97
|
-
async getBindings(queueName) {
|
|
98
|
-
const bindingsData = await this.apiService.getBindings(queueName);
|
|
99
|
-
const bindings = bindingsData.filter(element => element.source !== '')
|
|
100
|
-
.map(element => {
|
|
101
|
-
const binding = {
|
|
102
|
-
'exchange': element.source,
|
|
103
|
-
'queue': queueName
|
|
104
|
-
};
|
|
105
|
-
this.logger.log('found binding of queue ' + binding.queue + ' to exchange ' + binding.exchange);
|
|
106
|
-
return binding;
|
|
107
|
-
});
|
|
108
|
-
return bindings;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
RabbitMqBindingsFromApiAnalyzer = RabbitMqBindingsFromApiAnalyzer_1 = __decorate([
|
|
112
|
-
(0, common_1.Injectable)(),
|
|
113
|
-
__metadata("design:paramtypes", [Config_service_1.ConfigService,
|
|
114
|
-
api_service_1.RabbitMqManagementApiService])
|
|
115
|
-
], RabbitMqBindingsFromApiAnalyzer);
|
|
116
|
-
exports.RabbitMqBindingsFromApiAnalyzer = RabbitMqBindingsFromApiAnalyzer;
|
|
117
|
-
//# sourceMappingURL=RabbitMqBindingsFromApiAnalyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RabbitMqBindingsFromApiAnalyzer.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,121 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RabbitMqBindingsFromApiAnalyzer.test.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/rabbitmq/transformer/RabbitMqBindingsFromApiAnalyzer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
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
|
-
]
|
|
@@ -1,15 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,131 +0,0 @@
|
|
|
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
|