tadis-analyzer 2.2.0 → 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 +6 -2
- 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,177 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const ms_1 = require("../../../model/ms");
|
|
4
|
-
const verifiers_1 = require("../../../test/verifiers");
|
|
5
|
-
const PatternAnalyzer_1 = require("./PatternAnalyzer");
|
|
6
|
-
const model_1 = require("./model");
|
|
7
|
-
describe('PatternAnalyzer.singeFile', () => {
|
|
8
|
-
const sourceFolder = __dirname + '/testdata/single-file-analysis-project';
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
process.env.NODE_ENV = 'test';
|
|
11
|
-
});
|
|
12
|
-
const ws = '\\s*';
|
|
13
|
-
const id = '\\w+';
|
|
14
|
-
function javaSourceFilePattern() {
|
|
15
|
-
return {
|
|
16
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_PATH,
|
|
17
|
-
preConditionRegExp: 'java',
|
|
18
|
-
regExp: '$sourceRoot/([^/]+)/source.java',
|
|
19
|
-
capturingGroupIndexForName: 1,
|
|
20
|
-
nodeType: 'MicroService'
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
it('creates a service from a file path considering the precondition regexp', async () => {
|
|
24
|
-
const inputSystem = new ms_1.System('test');
|
|
25
|
-
const systemPattern = {
|
|
26
|
-
nodePatterns: [javaSourceFilePattern()],
|
|
27
|
-
edgePatterns: []
|
|
28
|
-
};
|
|
29
|
-
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
30
|
-
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
31
|
-
expect(outputSystem.findMicroService('service1')).toBeDefined();
|
|
32
|
-
});
|
|
33
|
-
it('ignores source files that dont match the precondition regexp', async () => {
|
|
34
|
-
const inputSystem = new ms_1.System('test');
|
|
35
|
-
const systemPattern = {
|
|
36
|
-
nodePatterns: [
|
|
37
|
-
{
|
|
38
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_PATH,
|
|
39
|
-
preConditionRegExp: 'kafka',
|
|
40
|
-
regExp: '$sourceRoot/([^/]+)/source.java',
|
|
41
|
-
capturingGroupIndexForName: 1,
|
|
42
|
-
nodeType: 'MicroService'
|
|
43
|
-
}
|
|
44
|
-
],
|
|
45
|
-
edgePatterns: []
|
|
46
|
-
};
|
|
47
|
-
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
48
|
-
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
49
|
-
expect(outputSystem.nodes).toHaveLength(0);
|
|
50
|
-
});
|
|
51
|
-
it('creates an async info flow for multiple annotations in the same file', async () => {
|
|
52
|
-
const inputSystem = new ms_1.System('test');
|
|
53
|
-
const systemPattern = {
|
|
54
|
-
nodePatterns: [],
|
|
55
|
-
edgePatterns: [
|
|
56
|
-
{
|
|
57
|
-
edgeType: 'AsyncEventFlow',
|
|
58
|
-
sourceNodePattern: javaSourceFilePattern(),
|
|
59
|
-
targetNodePattern: {
|
|
60
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
61
|
-
regExp: `@EventProcessor${ws}\\([^)]*sendToExchange${ws}=${ws}(${id})`,
|
|
62
|
-
capturingGroupIndexForName: 1,
|
|
63
|
-
nameResolutionPattern: {
|
|
64
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
65
|
-
regExp: `$name${ws}=${ws}"([^"]*)"`,
|
|
66
|
-
capturingGroupIndexForName: 1
|
|
67
|
-
},
|
|
68
|
-
nodeType: 'MessageExchange'
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
edgeType: 'AsyncEventFlow',
|
|
73
|
-
sourceNodePattern: javaSourceFilePattern(),
|
|
74
|
-
targetNodePattern: {
|
|
75
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
76
|
-
regExp: `@EventProcessor${ws}\\([^)]*sendToExchange${ws}=${ws}"([^"]+)"`,
|
|
77
|
-
capturingGroupIndexForName: 1,
|
|
78
|
-
nodeType: 'MessageExchange'
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
]
|
|
82
|
-
};
|
|
83
|
-
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
84
|
-
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
85
|
-
expect(outputSystem.findMicroService('service1')).toBeDefined();
|
|
86
|
-
expect(outputSystem.findMessageExchange('target-exchange-X')).toBeDefined();
|
|
87
|
-
expect(outputSystem.findMessageExchange('target-exchange-Y')).toBeDefined();
|
|
88
|
-
// TODO: are there better ways to test parts of objects to match in jest?
|
|
89
|
-
expect(outputSystem.edges.find((edge) => {
|
|
90
|
-
var _a;
|
|
91
|
-
return edge.source.getName() === 'service1' &&
|
|
92
|
-
edge.target.getName() === 'target-exchange-X' &&
|
|
93
|
-
((_a = edge.content) === null || _a === void 0 ? void 0 : _a.type) === ms_1.AsyncEventFlow.name;
|
|
94
|
-
})).toBeDefined();
|
|
95
|
-
expect(outputSystem.edges.find((edge) => edge.source.getName() === 'service1' && edge.target.getName() === 'target-exchange-Y')).toBeDefined();
|
|
96
|
-
(0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, PatternAnalyzer_1.PatternAnalyzer.name);
|
|
97
|
-
});
|
|
98
|
-
it('re-uses exchanges when they already exist', async () => {
|
|
99
|
-
const inputSystem = new ms_1.System('test');
|
|
100
|
-
inputSystem.addMessageExchange('service1');
|
|
101
|
-
const systemPattern = {
|
|
102
|
-
nodePatterns: [
|
|
103
|
-
{
|
|
104
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_PATH,
|
|
105
|
-
regExp: '$sourceRoot/([^/]+)/source.java',
|
|
106
|
-
capturingGroupIndexForName: 1,
|
|
107
|
-
nodeType: 'MessageExchange'
|
|
108
|
-
}
|
|
109
|
-
],
|
|
110
|
-
edgePatterns: []
|
|
111
|
-
};
|
|
112
|
-
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
113
|
-
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
114
|
-
expect(outputSystem.findMessageExchange('service1')).toBeDefined();
|
|
115
|
-
expect(outputSystem.nodes.filter((node) => node.getName() === 'service1')).toHaveLength(1);
|
|
116
|
-
});
|
|
117
|
-
it('can create nodes from multiple elements in the same annotation', async () => {
|
|
118
|
-
const inputSystem = new ms_1.System('test');
|
|
119
|
-
const systemPattern = {
|
|
120
|
-
nodePatterns: [],
|
|
121
|
-
edgePatterns: [
|
|
122
|
-
{
|
|
123
|
-
edgeType: 'AsyncEventFlow',
|
|
124
|
-
sourceNodePattern: {
|
|
125
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
126
|
-
regExp: `@EventProcessor${ws}\\([^)]*receiveFromExchange${ws}=${ws}"([^"]+)"`,
|
|
127
|
-
capturingGroupIndexForName: 1,
|
|
128
|
-
nodeType: 'MessageExchange'
|
|
129
|
-
},
|
|
130
|
-
targetNodePattern: javaSourceFilePattern()
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
edgeType: 'AsyncEventFlow',
|
|
134
|
-
sourceNodePattern: javaSourceFilePattern(),
|
|
135
|
-
targetNodePattern: {
|
|
136
|
-
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
137
|
-
regExp: `@EventProcessor${ws}\\([^)]*sendToExchange${ws}=${ws}"([^"]+)"`,
|
|
138
|
-
capturingGroupIndexForName: 1,
|
|
139
|
-
nodeType: 'MessageExchange'
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
]
|
|
143
|
-
};
|
|
144
|
-
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
145
|
-
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
146
|
-
expect(outputSystem.findMicroService('service1')).toBeDefined();
|
|
147
|
-
expect(outputSystem.findMessageExchange('source-exchange-Y')).toBeDefined();
|
|
148
|
-
expect(outputSystem.findMessageExchange('target-exchange-Y')).toBeDefined();
|
|
149
|
-
expect(outputSystem.edges.find((edge) => edge.source.getName() === 'service1' && edge.target.getName() === 'target-exchange-Y')).toBeDefined();
|
|
150
|
-
expect(outputSystem.edges.find((edge) => edge.source.getName() === 'source-exchange-Y' && edge.target.getName() === 'service1')).toBeDefined();
|
|
151
|
-
(0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, PatternAnalyzer_1.PatternAnalyzer.name);
|
|
152
|
-
});
|
|
153
|
-
it('ignores source found in current project when not run in test mode', async () => {
|
|
154
|
-
process.env.NODE_ENV = 'non-test';
|
|
155
|
-
const inputSystem = new ms_1.System('test');
|
|
156
|
-
const systemPattern = {
|
|
157
|
-
nodePatterns: [javaSourceFilePattern()],
|
|
158
|
-
edgePatterns: []
|
|
159
|
-
};
|
|
160
|
-
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
161
|
-
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
162
|
-
expect(outputSystem).not.toBeNull();
|
|
163
|
-
expect(outputSystem.getMicroServices()).toHaveLength(0);
|
|
164
|
-
});
|
|
165
|
-
it('can process an empty pattern', async () => {
|
|
166
|
-
const inputSystem = new ms_1.System('test');
|
|
167
|
-
const systemPattern = {
|
|
168
|
-
nodePatterns: [],
|
|
169
|
-
edgePatterns: []
|
|
170
|
-
};
|
|
171
|
-
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
172
|
-
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
173
|
-
expect(outputSystem).not.toBeNull();
|
|
174
|
-
expect(outputSystem.getMicroServices()).toHaveLength(0);
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
//# sourceMappingURL=PatternAnalyzer.singleFile.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PatternAnalyzer.singleFile.test.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"behavior-model.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/experimental/code-pattern/behavior-model.ts"],"names":[],"mappings":""}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A system pattern defines patterns from which nodes and edges are derived.
|
|
3
|
-
* special variables allowed in all regExp attributes:
|
|
4
|
-
* - $sourceRoot holds the location of the configured source folder
|
|
5
|
-
*/
|
|
6
|
-
export type SystemPattern = {
|
|
7
|
-
nodePatterns: NodePattern[];
|
|
8
|
-
edgePatterns: EdgePattern[];
|
|
9
|
-
includedFileEndings?: string[];
|
|
10
|
-
excludedFolders?: string[];
|
|
11
|
-
};
|
|
12
|
-
export type NodePattern = NamePattern & {
|
|
13
|
-
/**
|
|
14
|
-
* a name which describes this pattern.
|
|
15
|
-
* the name is used in logs and in system model metadata.
|
|
16
|
-
*/
|
|
17
|
-
name?: string;
|
|
18
|
-
/**
|
|
19
|
-
* a description of this pattern
|
|
20
|
-
*/
|
|
21
|
-
description?: string;
|
|
22
|
-
/**
|
|
23
|
-
* the class name of the node to create. this class must exist in model/ms.ts
|
|
24
|
-
* @see ../model/ms.ts
|
|
25
|
-
*/
|
|
26
|
-
nodeType: string;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* defines a pattern by a regular expression with a capturing group from which a name is derived.
|
|
30
|
-
*/
|
|
31
|
-
export type NamePattern = {
|
|
32
|
-
/**
|
|
33
|
-
* location of the search text that is used for matching the regular expression.
|
|
34
|
-
*/
|
|
35
|
-
searchTextLocation?: SearchTextLocation;
|
|
36
|
-
/**
|
|
37
|
-
* a variable name that the search text location is saved to. the variable can be referenced in upcoming name resolutions.
|
|
38
|
-
*/
|
|
39
|
-
searchTextVariable?: string;
|
|
40
|
-
/**
|
|
41
|
-
* this allows to reference a search text location from a variable defined in an earlier name pattern.
|
|
42
|
-
*/
|
|
43
|
-
searchTextReference?: string;
|
|
44
|
-
/**
|
|
45
|
-
* allows to define a regular expression condition that must match in order for the current file to be further inspected.
|
|
46
|
-
*/
|
|
47
|
-
preConditionRegExp?: string;
|
|
48
|
-
/**
|
|
49
|
-
* a JavaScript regular expression that defines the pattern to be matched.
|
|
50
|
-
* the expression must define at least one capturing group from which an intermediate name is derived.
|
|
51
|
-
* this name can be referenced in further name resolutions.
|
|
52
|
-
*/
|
|
53
|
-
regExp: string;
|
|
54
|
-
/**
|
|
55
|
-
* the index of the capturing group to derive the name from.
|
|
56
|
-
*/
|
|
57
|
-
capturingGroupIndexForName: number;
|
|
58
|
-
/**
|
|
59
|
-
* name of a variable which can be used in regular expressions of upcoming name resolutions in order
|
|
60
|
-
* to reference the captured name
|
|
61
|
-
*/
|
|
62
|
-
variableForName?: string;
|
|
63
|
-
/**
|
|
64
|
-
* a name resolution translates a name that represents a variable to its value.
|
|
65
|
-
* the value is discovered by another regular expression applied to the current file.
|
|
66
|
-
*
|
|
67
|
-
* in this case, the provided regular expression defines a pattern from which
|
|
68
|
-
* the name can be resolved.
|
|
69
|
-
*
|
|
70
|
-
* special variables allowed:
|
|
71
|
-
* - $name can be used to refer to the node name discovered before
|
|
72
|
-
* - additional variables are available for names matched in regular expressions before
|
|
73
|
-
*/
|
|
74
|
-
nameResolutionPattern?: NamePattern;
|
|
75
|
-
};
|
|
76
|
-
export declare enum SearchTextLocation {
|
|
77
|
-
/**
|
|
78
|
-
* absolute path of the source code file under analysis
|
|
79
|
-
*/
|
|
80
|
-
FILE_PATH = 0,
|
|
81
|
-
/**
|
|
82
|
-
* content of the source code file under analysis
|
|
83
|
-
*/
|
|
84
|
-
FILE_CONTENT = 1,
|
|
85
|
-
/**
|
|
86
|
-
* the path of any file in the source code folder
|
|
87
|
-
*/
|
|
88
|
-
ANY_FILE_PATH = 2,
|
|
89
|
-
/**
|
|
90
|
-
* the content of any file in the source code folder
|
|
91
|
-
*/
|
|
92
|
-
ANY_FILE_CONTENT = 3
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* defines patterns of source and target nodes from which the nodes and edges
|
|
96
|
-
* connecting them are derived. the source node pattern must match first.
|
|
97
|
-
* next, the target node pattern is matched for each derived source node.
|
|
98
|
-
*/
|
|
99
|
-
export type EdgePattern = {
|
|
100
|
-
sourceNodePattern: NodePattern;
|
|
101
|
-
targetNodePattern: NodePattern;
|
|
102
|
-
/**
|
|
103
|
-
* the class name of the edge to create. this class must exist in model/ms.ts
|
|
104
|
-
* @see ../model/ms.ts
|
|
105
|
-
*/
|
|
106
|
-
edgeType: string;
|
|
107
|
-
/**
|
|
108
|
-
* a name which describes this pattern.
|
|
109
|
-
* the name is used in logs and in system model metadata.
|
|
110
|
-
*/
|
|
111
|
-
name?: string;
|
|
112
|
-
/**
|
|
113
|
-
* a description of this pattern
|
|
114
|
-
*/
|
|
115
|
-
description?: string;
|
|
116
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SearchTextLocation = void 0;
|
|
4
|
-
var SearchTextLocation;
|
|
5
|
-
(function (SearchTextLocation) {
|
|
6
|
-
/**
|
|
7
|
-
* absolute path of the source code file under analysis
|
|
8
|
-
*/
|
|
9
|
-
SearchTextLocation[SearchTextLocation["FILE_PATH"] = 0] = "FILE_PATH";
|
|
10
|
-
/**
|
|
11
|
-
* content of the source code file under analysis
|
|
12
|
-
*/
|
|
13
|
-
SearchTextLocation[SearchTextLocation["FILE_CONTENT"] = 1] = "FILE_CONTENT";
|
|
14
|
-
/**
|
|
15
|
-
* the path of any file in the source code folder
|
|
16
|
-
*/
|
|
17
|
-
SearchTextLocation[SearchTextLocation["ANY_FILE_PATH"] = 2] = "ANY_FILE_PATH";
|
|
18
|
-
/**
|
|
19
|
-
* the content of any file in the source code folder
|
|
20
|
-
*/
|
|
21
|
-
SearchTextLocation[SearchTextLocation["ANY_FILE_CONTENT"] = 3] = "ANY_FILE_CONTENT";
|
|
22
|
-
})(SearchTextLocation = exports.SearchTextLocation || (exports.SearchTextLocation = {}));
|
|
23
|
-
//# sourceMappingURL=model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/experimental/code-pattern/model.ts"],"names":[],"mappings":";;;AAiFA,IAAY,kBAiBX;AAjBD,WAAY,kBAAkB;IAC1B;;OAEG;IACH,qEAAS,CAAA;IACT;;OAEG;IACH,2EAAY,CAAA;IACZ;;OAEG;IACH,6EAAa,CAAA;IACb;;OAEG;IACH,mFAAgB,CAAA;AACpB,CAAC,EAjBW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAiB7B"}
|
package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
declare const content = "\ngfd kdfgjdk @EventProcessor (\n receiveFromExchange = \"source-exchange-X\",\n receiveFromRoutingKey = \"s.publish.update\",\n receiveFromQueue = \"service1.x.publish.update\",\n sendToExchange = TARGET_EXCHANGE_NAME,\n sendToRoutingKey = TARGET_EXCHANGE_ROUTING_KEY,\n autoSave = false)\npublic Container receiveX(X x) {\n}\n";
|
|
2
|
-
declare const ws = "\\s*";
|
|
3
|
-
declare const id = "\\w";
|
|
4
|
-
declare const anything = "[^]*";
|
|
5
|
-
declare const dslExpr = "@EventProcessor ( [^)]*sendToExchange = (id)";
|
|
6
|
-
declare let re: string;
|
|
7
|
-
declare const r: RegExp;
|
|
8
|
-
declare const result: RegExpMatchArray;
|
package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const content = `
|
|
2
|
-
gfd kdfgjdk @EventProcessor (
|
|
3
|
-
receiveFromExchange = "source-exchange-X",
|
|
4
|
-
receiveFromRoutingKey = "s.publish.update",
|
|
5
|
-
receiveFromQueue = "service1.x.publish.update",
|
|
6
|
-
sendToExchange = TARGET_EXCHANGE_NAME,
|
|
7
|
-
sendToRoutingKey = TARGET_EXCHANGE_ROUTING_KEY,
|
|
8
|
-
autoSave = false)
|
|
9
|
-
public Container receiveX(X x) {
|
|
10
|
-
}
|
|
11
|
-
`;
|
|
12
|
-
const ws = '\\s*';
|
|
13
|
-
const id = '\\w';
|
|
14
|
-
const anything = '[^]*';
|
|
15
|
-
const dslExpr = `@EventProcessor ( [^)]*sendToExchange = (id)`;
|
|
16
|
-
let re = dslExpr;
|
|
17
|
-
re = re.replace(/\(id\)/g, ':id:');
|
|
18
|
-
re = re.replace(/\(/g, '\\(');
|
|
19
|
-
re = re.replace(/:id:/g, '(\\w+)');
|
|
20
|
-
re = re.replace(/\*{2}/g, anything);
|
|
21
|
-
re = re.replace(/ {2}/g, ws);
|
|
22
|
-
const r = new RegExp(re);
|
|
23
|
-
const result = content.match(r);
|
|
24
|
-
console.log(result);
|
|
25
|
-
console.log(result === null || result === void 0 ? void 0 : result[1]);
|
|
26
|
-
//# sourceMappingURL=pattern-dsl.js.map
|
package/build/src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-dsl.js","sourceRoot":"","sources":["../../../../../../src/system-element-extractors/experimental/code-pattern/prototyping/pattern-dsl.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;CAUf,CAAA;AACD,MAAM,EAAE,GAAG,MAAM,CAAA;AACjB,MAAM,EAAE,GAAG,KAAK,CAAA;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,MAAM,OAAO,GAAG,kDAAkD,CAAA;AAClE,IAAI,EAAE,GAAG,OAAO,CAAA;AAChB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAClC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC7B,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAClC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACnC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAE5B,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;AACxB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACnB,OAAO,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAC,CAAA"}
|
package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.d.ts
DELETED
|
File without changes
|
package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
(() => {
|
|
2
|
-
const content = `
|
|
3
|
-
env:
|
|
4
|
-
# Kafka Topics
|
|
5
|
-
- name: SOME_KAFKA_TOPIC
|
|
6
|
-
value: actual_topic_name
|
|
7
|
-
- name: XX
|
|
8
|
-
value: 1
|
|
9
|
-
`;
|
|
10
|
-
const ws = '\\s*';
|
|
11
|
-
const id = '\\w';
|
|
12
|
-
const anything = '[^]*';
|
|
13
|
-
const r = new RegExp(`name:\\s*SOME_KAFKA_TOPIC\\s*value:\\s*(\\w+)`);
|
|
14
|
-
const result = content.match(r);
|
|
15
|
-
console.log(result);
|
|
16
|
-
console.log(result === null || result === void 0 ? void 0 : result[1]);
|
|
17
|
-
})();
|
|
18
|
-
//# sourceMappingURL=regexp-test.js.map
|
package/build/src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"regexp-test.js","sourceRoot":"","sources":["../../../../../../src/system-element-extractors/experimental/code-pattern/prototyping/regexp-test.ts"],"names":[],"mappings":"AAAA,CAAC,GAAG,EAAE;IACJ,MAAM,OAAO,GAAG;;;;;;;CAOjB,CAAA;IACC,MAAM,EAAE,GAAG,MAAM,CAAA;IACjB,MAAM,EAAE,GAAG,KAAK,CAAA;IAChB,MAAM,QAAQ,GAAG,MAAM,CAAA;IAEvB,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,+CAA+C,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAC,CAAA;AAC1B,CAAC,CAAC,EAAE,CAAA"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.JavaAnnotationAnalyzer = exports.JavaModule = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const Config_module_1 = require("../../config/Config.module");
|
|
12
|
-
const JavaAnnotationAnalyzer_1 = require("./JavaAnnotationAnalyzer");
|
|
13
|
-
Object.defineProperty(exports, "JavaAnnotationAnalyzer", { enumerable: true, get: function () { return JavaAnnotationAnalyzer_1.JavaAnnotationAnalyzer; } });
|
|
14
|
-
const Git_module_1 = require("../../git/Git.module");
|
|
15
|
-
let JavaModule = class JavaModule {
|
|
16
|
-
};
|
|
17
|
-
JavaModule = __decorate([
|
|
18
|
-
(0, common_1.Module)({
|
|
19
|
-
imports: [Config_module_1.ConfigModule, Git_module_1.GitModule],
|
|
20
|
-
controllers: [],
|
|
21
|
-
providers: [JavaAnnotationAnalyzer_1.JavaAnnotationAnalyzer],
|
|
22
|
-
exports: [JavaAnnotationAnalyzer_1.JavaAnnotationAnalyzer]
|
|
23
|
-
})
|
|
24
|
-
], JavaModule);
|
|
25
|
-
exports.JavaModule = JavaModule;
|
|
26
|
-
//# sourceMappingURL=Java.module.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Java.module.js","sourceRoot":"","sources":["../../../../src/system-element-extractors/java/Java.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuC;AAEvC,8DAAyD;AAEzD,qEAGiC;AAWZ,uGAbnB,+CAAsB,OAamB;AAV3C,qDAAgD;AAQhD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,UAAU;IANf,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,EAAE,sBAAS,CAAC;QAClC,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,CAAC,+CAAsB,CAAC;QACnC,OAAO,EAAE,CAAC,+CAAsB,CAAC;KAClC,CAAC;GACI,UAAU,CAAG;AAEV,gCAAU"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ConfigService } from '../../config/Config.service';
|
|
2
|
-
import { System } from '../../model/ms';
|
|
3
|
-
export declare class JavaAnnotationAnalyzer {
|
|
4
|
-
private readonly config;
|
|
5
|
-
private readonly logger;
|
|
6
|
-
constructor(config: ConfigService);
|
|
7
|
-
transform(system: System, annotation: string, elementMappings: ElementMapping[]): Promise<System>;
|
|
8
|
-
private transformSourcesInPath;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Specifies a mapping of an annotation element to nodes and edges.
|
|
12
|
-
*/
|
|
13
|
-
export type ElementMapping = {
|
|
14
|
-
/**
|
|
15
|
-
* name of the annotation element from which a node is derived.
|
|
16
|
-
* the value of the annotation element defines the name of the node.
|
|
17
|
-
* the node will be created if it does not already exist or else an existing node will be re-used.
|
|
18
|
-
*/
|
|
19
|
-
elementToDeriveNodeFrom: string;
|
|
20
|
-
/**
|
|
21
|
-
* class name of the node to create for the element
|
|
22
|
-
*/
|
|
23
|
-
nodeTypeToCreate: string;
|
|
24
|
-
/**
|
|
25
|
-
* specifies if the node will be the source or the target of the microservice
|
|
26
|
-
* that contains the annotation in its source code.
|
|
27
|
-
* values: only source or target
|
|
28
|
-
*/
|
|
29
|
-
nodeTypeDirection: string;
|
|
30
|
-
/**
|
|
31
|
-
* specifies the class name of the edge that will be created between the
|
|
32
|
-
* current microservice and the node
|
|
33
|
-
*/
|
|
34
|
-
edgeType: string;
|
|
35
|
-
};
|
|
@@ -1,155 +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 JavaAnnotationAnalyzer_1;
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.JavaAnnotationAnalyzer = 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
|
-
// tslint:disable-next-line
|
|
42
|
-
const ms = __importStar(require("../../model/ms"));
|
|
43
|
-
const logger = new common_1.Logger('AnnotationAnalyzer');
|
|
44
|
-
let JavaAnnotationAnalyzer = JavaAnnotationAnalyzer_1 = class JavaAnnotationAnalyzer {
|
|
45
|
-
constructor(config) {
|
|
46
|
-
this.config = config;
|
|
47
|
-
this.logger = new common_1.Logger(JavaAnnotationAnalyzer_1.name);
|
|
48
|
-
}
|
|
49
|
-
async transform(system, annotation, elementMappings) {
|
|
50
|
-
await this.transformSourcesInPath(system, this.config.getSourceFolder(), annotation, elementMappings);
|
|
51
|
-
return system;
|
|
52
|
-
}
|
|
53
|
-
async transformSourcesInPath(system, path, annotation, elementMappings) {
|
|
54
|
-
this.logger.log('scanning java files in ' + path);
|
|
55
|
-
const javaFiles = await (0, analysis_1.findFiles)(path, ['.java'], undefined);
|
|
56
|
-
this.logger.log('found ' + javaFiles.length + ' java files');
|
|
57
|
-
javaFiles
|
|
58
|
-
.filter((file) => (0, analysis_1.isNoSourceOfThisProject)(file))
|
|
59
|
-
.forEach((file) => {
|
|
60
|
-
// TODO: make this async
|
|
61
|
-
const serviceName = (0, analysis_1.getServiceNameFromPath)(path, file);
|
|
62
|
-
const service = system.findMicroService(serviceName);
|
|
63
|
-
if (!service) {
|
|
64
|
-
this.logger.log('skipping source of microservice ' +
|
|
65
|
-
serviceName +
|
|
66
|
-
' because it is not part of the input system.');
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const fileContent = fs.readFileSync(file, 'utf8');
|
|
70
|
-
transformEachAnnotation(system, service, annotation, fileContent, elementMappings);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
JavaAnnotationAnalyzer = JavaAnnotationAnalyzer_1 = __decorate([
|
|
76
|
-
(0, common_1.Injectable)(),
|
|
77
|
-
__metadata("design:paramtypes", [Config_service_1.ConfigService])
|
|
78
|
-
], JavaAnnotationAnalyzer);
|
|
79
|
-
exports.JavaAnnotationAnalyzer = JavaAnnotationAnalyzer;
|
|
80
|
-
function transformEachAnnotation(system, service, annotationName, fileContent, elementMappings) {
|
|
81
|
-
const annotationPattern = '@' + annotationName + '\\s*\\(([^\\)]+)\\)';
|
|
82
|
-
const annotationRegExp = new RegExp(annotationPattern, 'g');
|
|
83
|
-
const annotationBodies = getAllPatternMatches(annotationRegExp, fileContent, (matchArray) => matchArray[1]);
|
|
84
|
-
annotationBodies.forEach((body) => transformEachElement(system, service, fileContent, body, elementMappings));
|
|
85
|
-
}
|
|
86
|
-
function transformEachElement(system, service, fileContent, annotationBody, elementMappings) {
|
|
87
|
-
logger.log('analyzing annotation body in service ' +
|
|
88
|
-
service.getName() +
|
|
89
|
-
':\n' +
|
|
90
|
-
annotationBody);
|
|
91
|
-
for (const elementMapping of elementMappings) {
|
|
92
|
-
const elementPattern = elementMapping.elementToDeriveNodeFrom + '\\s*=\\s*([^\\),]+)';
|
|
93
|
-
const elementRegExp = new RegExp(elementPattern, 'g');
|
|
94
|
-
const matchingElementValues = getAllPatternMatches(elementRegExp, annotationBody, (matchArray) => matchArray[1]);
|
|
95
|
-
matchingElementValues.forEach((value) => transformElementValueExpression(system, service, fileContent, elementMapping, value));
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
function transformElementValueExpression(system, service, fileContent, elementMapping, valueExpression) {
|
|
99
|
-
const nodeName = getActualValue(valueExpression, fileContent);
|
|
100
|
-
if (!nodeName)
|
|
101
|
-
return;
|
|
102
|
-
executeMappingForNode(system, service, elementMapping, nodeName);
|
|
103
|
-
}
|
|
104
|
-
function getActualValue(valueExpression, fileContent) {
|
|
105
|
-
if (valueExpression.startsWith('"')) {
|
|
106
|
-
return valueExpression.substr(1, valueExpression.length - 2);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
// search variable assignment
|
|
110
|
-
// TODO: skip if defined in comment
|
|
111
|
-
const assignmentPattern = valueExpression + '\\s*=\\s*"([^"]*)"';
|
|
112
|
-
const assignmentRegExp = new RegExp(assignmentPattern, 'g');
|
|
113
|
-
const assignmentValues = getAllPatternMatches(assignmentRegExp, fileContent, (matchArray) => matchArray[1]);
|
|
114
|
-
return assignmentValues.length > 0 ? assignmentValues[0] : undefined;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function executeMappingForNode(system, service, elementMapping, nodeName) {
|
|
118
|
-
const metadata = {
|
|
119
|
-
transformer: JavaAnnotationAnalyzer.name,
|
|
120
|
-
context: 'service ' + service.id,
|
|
121
|
-
info: 'mapping of element ' +
|
|
122
|
-
elementMapping.elementToDeriveNodeFrom +
|
|
123
|
-
' to target ' +
|
|
124
|
-
nodeName
|
|
125
|
-
};
|
|
126
|
-
const node = system.addOrExtendTypedNode(elementMapping.nodeTypeToCreate, nodeName, undefined, metadata);
|
|
127
|
-
logger.log('ensured node of type ' +
|
|
128
|
-
elementMapping.nodeTypeToCreate +
|
|
129
|
-
' and name ' +
|
|
130
|
-
nodeName +
|
|
131
|
-
' exists.');
|
|
132
|
-
if (elementMapping.nodeTypeDirection === 'target') {
|
|
133
|
-
const edge = new ms[elementMapping.edgeType](service, node, undefined, metadata);
|
|
134
|
-
system.edges.push(edge);
|
|
135
|
-
logger.log('added ' + elementMapping.edgeType + ': ' + service.id + ' -> ' + node.id);
|
|
136
|
-
}
|
|
137
|
-
else if (elementMapping.nodeTypeDirection === 'source') {
|
|
138
|
-
const edge = new ms[elementMapping.edgeType](node, service, undefined, metadata);
|
|
139
|
-
logger.log('added ' + elementMapping.edgeType + ': ' + node.id + ' -> ' + service.id);
|
|
140
|
-
system.edges.push(edge);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
// TODO: log error
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function getAllPatternMatches(pattern, content, matchTransformer) {
|
|
147
|
-
const allMatches = [];
|
|
148
|
-
let matches = pattern.exec(content);
|
|
149
|
-
while (matches != null) {
|
|
150
|
-
allMatches.push(matchTransformer(matches));
|
|
151
|
-
matches = pattern.exec(content);
|
|
152
|
-
}
|
|
153
|
-
return allMatches;
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=JavaAnnotationAnalyzer.js.map
|