tadis-analyzer 2.0.0-rc.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/build/src/app/code-pattern/main.js +32 -1
- package/build/src/app/code-pattern/main.js.map +1 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.js +71 -40
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.js.map +1 -1
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.d.ts +1 -0
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.js +130 -0
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.js.map +1 -0
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.d.ts +1 -0
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.js +177 -0
- package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.singleFile.test.js.map +1 -0
- package/build/src/system-element-extractors/experimental/code-pattern/model.d.ts +21 -1
- package/build/src/system-element-extractors/experimental/code-pattern/model.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,10 +19,10 @@ Environment Variables:
|
|
|
19
19
|
|
|
20
20
|
## Usage
|
|
21
21
|
|
|
22
|
-
* install: `
|
|
23
|
-
* run: `
|
|
24
|
-
* build Docker image: `
|
|
25
|
-
* run Docker image: `
|
|
22
|
+
* install: `npm install`
|
|
23
|
+
* run: `npm run start`
|
|
24
|
+
* build Docker image: `npm run docker-build`
|
|
25
|
+
* run Docker image: `npm run docker-run`
|
|
26
26
|
|
|
27
27
|
## Getting Started
|
|
28
28
|
|
|
@@ -3,12 +3,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const core_1 = require("@nestjs/core");
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const CodePattern_module_1 = require("../../system-element-extractors/experimental/code-pattern/CodePattern.module");
|
|
6
|
+
const Config_service_1 = require("../../config/Config.service");
|
|
7
|
+
const model_1 = require("../../system-element-extractors/experimental/code-pattern/model");
|
|
6
8
|
async function bootstrap() {
|
|
7
9
|
const app = await core_1.NestFactory.create(CodePattern_module_1.CodePatternModule);
|
|
8
|
-
const config = app.get(
|
|
10
|
+
const config = app.get(Config_service_1.ConfigService);
|
|
11
|
+
const patternAnalyzerService = app.get(CodePattern_module_1.PatternAnalyzerService);
|
|
12
|
+
setupExample_fromApplicationYml(patternAnalyzerService);
|
|
9
13
|
await app.listen(config.getPort());
|
|
10
14
|
common_1.Logger.log('running at http://localhost:' + config.getPort());
|
|
11
15
|
}
|
|
12
16
|
// tslint:disable-next-line: no-floating-promises
|
|
13
17
|
bootstrap();
|
|
18
|
+
function setupExample_fromApplicationYml(patternAnalyzerService) {
|
|
19
|
+
const systemPattern = {
|
|
20
|
+
nodePatterns: [],
|
|
21
|
+
edgePatterns: [
|
|
22
|
+
{
|
|
23
|
+
edgeType: 'AsyncEventFlow',
|
|
24
|
+
sourceNodePattern: {
|
|
25
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_PATH,
|
|
26
|
+
regExp: '$sourceRoot/([^/]+)/src/main/resources/application.yml',
|
|
27
|
+
capturingGroupIndexForName: 1,
|
|
28
|
+
variableForName: 'serviceName',
|
|
29
|
+
nodeType: 'MicroService'
|
|
30
|
+
},
|
|
31
|
+
targetNodePattern: {
|
|
32
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
33
|
+
regExp: '{([^}]+_TOPIC)}',
|
|
34
|
+
capturingGroupIndexForName: 1,
|
|
35
|
+
variableForName: 'envName',
|
|
36
|
+
nodeType: 'MessageExchange'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
excludedFolders: ['node_modules', 'build', 'target'],
|
|
41
|
+
includedFileEndings: ['java', 'yaml', 'yml']
|
|
42
|
+
};
|
|
43
|
+
patternAnalyzerService.updateSystemPattern(systemPattern);
|
|
44
|
+
}
|
|
14
45
|
//# sourceMappingURL=main.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/app/code-pattern/main.ts"],"names":[],"mappings":";;AAAA,uCAA0C;AAC1C,2CAAuC;AAEvC,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/app/code-pattern/main.ts"],"names":[],"mappings":";;AAAA,uCAA0C;AAC1C,2CAAuC;AAEvC,qHAGqF;AACrF,gEAA2D;AAC3D,2FAGwE;AAExE,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sCAAiB,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAA;IAErC,MAAM,sBAAsB,GAAG,GAAG,CAAC,GAAG,CAAC,2CAAsB,CAAC,CAAA;IAC9D,+BAA+B,CAAC,sBAAsB,CAAC,CAAA;IAEvD,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IAClC,eAAM,CAAC,GAAG,CAAC,8BAA8B,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;AAC/D,CAAC;AACD,iDAAiD;AACjD,SAAS,EAAE,CAAA;AAEX,SAAS,+BAA+B,CACtC,sBAA8C;IAE9C,MAAM,aAAa,GAAkB;QACnC,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE;YACZ;gBACE,QAAQ,EAAE,gBAAgB;gBAC1B,iBAAiB,EAAE;oBACjB,kBAAkB,EAAE,0BAAkB,CAAC,SAAS;oBAChD,MAAM,EAAE,wDAAwD;oBAChE,0BAA0B,EAAE,CAAC;oBAC7B,eAAe,EAAE,aAAa;oBAC9B,QAAQ,EAAE,cAAc;iBACzB;gBACD,iBAAiB,EAAE;oBACjB,kBAAkB,EAAE,0BAAkB,CAAC,YAAY;oBACnD,MAAM,EAAE,iBAAiB;oBACzB,0BAA0B,EAAE,CAAC;oBAC7B,eAAe,EAAE,SAAS;oBAC1B,QAAQ,EAAE,iBAAiB;iBAC5B;aACF;SACF;QACD,eAAe,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC;QACpD,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;KAC7C,CAAA;IACD,sBAAsB,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -49,19 +49,18 @@ exports.PatternAnalyzer = PatternAnalyzer;
|
|
|
49
49
|
function replaceVariablesInPatterns(systemPattern, sourceFolder) {
|
|
50
50
|
return immer.produce(systemPattern, (systemPatternDraft) => {
|
|
51
51
|
systemPatternDraft.nodePatterns.forEach((pattern) => {
|
|
52
|
-
pattern.regExp =
|
|
52
|
+
pattern.regExp = replaceGlobalVariablesInRegExp(pattern.regExp, sourceFolder);
|
|
53
53
|
if (pattern.nameResolutionPattern) {
|
|
54
|
-
pattern.nameResolutionPattern.regExp =
|
|
54
|
+
pattern.nameResolutionPattern.regExp = replaceGlobalVariablesInRegExp(pattern.nameResolutionPattern.regExp, sourceFolder);
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
57
|
systemPatternDraft.edgePatterns.forEach((pattern) => {
|
|
58
|
-
pattern.sourceNodePattern.regExp =
|
|
59
|
-
pattern.targetNodePattern.regExp =
|
|
58
|
+
pattern.sourceNodePattern.regExp = replaceGlobalVariablesInRegExp(pattern.sourceNodePattern.regExp, sourceFolder);
|
|
59
|
+
pattern.targetNodePattern.regExp = replaceGlobalVariablesInRegExp(pattern.targetNodePattern.regExp, sourceFolder);
|
|
60
60
|
});
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
function replaceVariablesInRegExp(regExp, sourceFolder) {
|
|
63
|
+
function replaceGlobalVariablesInRegExp(regExp, sourceFolder) {
|
|
65
64
|
return regExp.replace('$sourceRoot', path.resolve(sourceFolder));
|
|
66
65
|
}
|
|
67
66
|
async function transformSystemFromPattern(system, systemPattern, sourceFolder) {
|
|
@@ -70,32 +69,38 @@ async function transformSystemFromPattern(system, systemPattern, sourceFolder) {
|
|
|
70
69
|
common_1.Logger.log('found ' + allFiles.length + ' files');
|
|
71
70
|
allFiles.forEach((filePath) => {
|
|
72
71
|
systemPattern.nodePatterns.forEach((nodePattern) => addNodesFromPattern(system, nodePattern, filePath, allFiles));
|
|
73
|
-
systemPattern.edgePatterns.forEach((edgePattern) => addEdgesFromPattern(system, edgePattern, filePath, allFiles));
|
|
72
|
+
systemPattern.edgePatterns.forEach((edgePattern) => addEdgesFromPattern(system, edgePattern, filePath, allFiles, sourceFolder));
|
|
74
73
|
});
|
|
75
74
|
}
|
|
76
75
|
function addNodesFromPattern(system, nodePattern, filePath, allFiles) {
|
|
77
|
-
findNodes(nodePattern, filePath, allFiles, new NameMemory()).forEach((node) => {
|
|
76
|
+
findNodes(nodePattern, filePath, allFiles, new NameMemory(), new Map()).forEach((node) => {
|
|
78
77
|
const nodeName = node.nodeName;
|
|
79
78
|
system.addOrExtendTypedNode(nodePattern.nodeType, nodeName);
|
|
80
79
|
common_1.Logger.log(`added node '${nodeName}'`);
|
|
81
80
|
});
|
|
82
81
|
}
|
|
83
|
-
function addEdgesFromPattern(system, edgePattern, filePath, allFiles) {
|
|
84
|
-
|
|
82
|
+
function addEdgesFromPattern(system, edgePattern, filePath, allFiles, sourceFolder) {
|
|
83
|
+
const initialNameMemory = new NameMemory();
|
|
84
|
+
// TODO: also add to NodePattern
|
|
85
|
+
initialNameMemory.saveName('sourceRoot', sourceFolder);
|
|
86
|
+
findNodes(edgePattern.sourceNodePattern, filePath, allFiles, initialNameMemory, new Map()).forEach((sourceNode) => {
|
|
85
87
|
const sourceNodeName = sourceNode.nodeName;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
if (sourceNodeName) {
|
|
89
|
+
common_1.Logger.log(`found source node '${sourceNodeName}'`);
|
|
90
|
+
findNodes(edgePattern.targetNodePattern, filePath, allFiles, sourceNode.nameMemory, sourceNode.searchTextLocationMemory).forEach((targetNode) => {
|
|
91
|
+
const targetNodeName = targetNode.nodeName;
|
|
92
|
+
if (targetNode) {
|
|
93
|
+
common_1.Logger.log(`found target node '${targetNodeName}'`);
|
|
94
|
+
createEdgeOnce(system, edgePattern, sourceNodeName, targetNodeName);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
92
98
|
});
|
|
93
99
|
}
|
|
94
100
|
function createEdgeOnce(system, edgePattern, sourceNodeName, targetNodeName) {
|
|
95
101
|
if (system
|
|
96
102
|
.getAllEdges()
|
|
97
|
-
.find((edge) => edge.source.getName() === sourceNodeName &&
|
|
98
|
-
edge.target.getName() === targetNodeName)) {
|
|
103
|
+
.find((edge) => edge.source.getName() === sourceNodeName && edge.target.getName() === targetNodeName)) {
|
|
99
104
|
common_1.Logger.log(`skipping already existing edge '${sourceNodeName}' --(${edgePattern.edgeType})--> '${targetNodeName}'`);
|
|
100
105
|
return;
|
|
101
106
|
}
|
|
@@ -114,9 +119,10 @@ function createEdgeOnce(system, edgePattern, sourceNodeName, targetNodeName) {
|
|
|
114
119
|
* a node which was matched from a pattern including all matched names.
|
|
115
120
|
*/
|
|
116
121
|
class MatchedNode {
|
|
117
|
-
constructor(nodeName, nameMemory) {
|
|
122
|
+
constructor(nodeName, nameMemory, searchTextLocationMemory = new Map()) {
|
|
118
123
|
this.nodeName = nodeName;
|
|
119
124
|
this.nameMemory = nameMemory;
|
|
125
|
+
this.searchTextLocationMemory = searchTextLocationMemory;
|
|
120
126
|
}
|
|
121
127
|
}
|
|
122
128
|
/**
|
|
@@ -144,23 +150,30 @@ class NameMemory {
|
|
|
144
150
|
for (const entry of this.names.entries()) {
|
|
145
151
|
result += entry[0] + ': ' + entry[1] + '\n';
|
|
146
152
|
}
|
|
147
|
-
return
|
|
148
|
-
(this.inheritedNameMemory ? this.inheritedNameMemory.toString() : ''));
|
|
153
|
+
return result + (this.inheritedNameMemory ? this.inheritedNameMemory.toString() : '');
|
|
149
154
|
}
|
|
150
155
|
}
|
|
151
156
|
// TODO: add individual tests
|
|
152
|
-
function findNodes(pattern, filePath, allFiles, nameMemory) {
|
|
157
|
+
function findNodes(pattern, filePath, allFiles, nameMemory, searchTextLocationMemory) {
|
|
153
158
|
const matchedNodes = matchNode(pattern, filePath, nameMemory);
|
|
154
159
|
if (!pattern.nameResolutionPattern)
|
|
155
160
|
return matchedNodes;
|
|
156
161
|
const nameResolution = pattern.nameResolutionPattern;
|
|
162
|
+
if (pattern.searchTextVariable !== undefined) {
|
|
163
|
+
matchedNodes.forEach((node) => {
|
|
164
|
+
common_1.Logger.log('Saving search text location to variable ' + pattern.searchTextVariable + ' = ' + filePath);
|
|
165
|
+
node.searchTextLocationMemory = searchTextLocationMemory;
|
|
166
|
+
searchTextLocationMemory.set(pattern.searchTextVariable, filePath);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
157
169
|
return matchedNodes.map((node) => {
|
|
158
170
|
const foundNames = new NameMemory(nameMemory);
|
|
159
171
|
const nameVariable = getVariableForName(pattern.variableForName);
|
|
160
172
|
foundNames.saveName(nameVariable, node.nodeName);
|
|
161
|
-
const resolvedName = resolveName(nameResolution, filePath, allFiles, foundNames);
|
|
173
|
+
const resolvedName = resolveName(nameResolution, filePath, allFiles, foundNames, searchTextLocationMemory);
|
|
162
174
|
if (!resolvedName) {
|
|
163
175
|
common_1.Logger.warn(`could not resolve name '${node.nodeName}'`);
|
|
176
|
+
common_1.Logger.warn(`current regexp: '${nameResolution.regExp}'`);
|
|
164
177
|
return new MatchedNode(node.nodeName, foundNames);
|
|
165
178
|
}
|
|
166
179
|
common_1.Logger.log(`resolved node with name '${node.nodeName}' to actual name '${resolvedName}'.\ncurrent name memory\n---\n${foundNames.toString()}`);
|
|
@@ -204,17 +217,21 @@ class PathContent {
|
|
|
204
217
|
* @param foundNames map of names found by matching regular expressions in name resolution chains so far
|
|
205
218
|
*/
|
|
206
219
|
// TODO: add individual tests
|
|
207
|
-
function resolveName(nameResolution, filePath, allFiles, foundNames) {
|
|
220
|
+
function resolveName(nameResolution, filePath, allFiles, foundNames, searchTextLocationMemory) {
|
|
208
221
|
const regExp = replaceNameVariables(nameResolution.regExp, foundNames);
|
|
209
|
-
const contents = getContentsToResolveNameFrom(nameResolution, filePath, allFiles);
|
|
222
|
+
const contents = getContentsToResolveNameFrom(nameResolution, filePath, allFiles, searchTextLocationMemory);
|
|
210
223
|
for (const content of contents) {
|
|
211
|
-
const resolvedNames = matchNodeByRegExp(regExp, content.read(), 1, nameResolution.variableForName, foundNames);
|
|
224
|
+
const resolvedNames = matchNodeByRegExp(nameResolution.preConditionRegExp, regExp, content.read(), 1, nameResolution.variableForName, foundNames);
|
|
212
225
|
if (resolvedNames.length > 0) {
|
|
213
226
|
const resolvedName = resolvedNames[0];
|
|
227
|
+
searchTextLocationMemory.set(nameResolution.searchTextVariable, content.filePath());
|
|
228
|
+
common_1.Logger.log('Saving search text location to variable ' +
|
|
229
|
+
nameResolution.searchTextVariable +
|
|
230
|
+
' = ' +
|
|
231
|
+
content.filePath());
|
|
214
232
|
if (resolvedNames.length >= 2) {
|
|
215
233
|
const allNames = resolvedNames.map((node) => node.nodeName).join(', ');
|
|
216
|
-
common_1.Logger.warn('name resolution returned with multiple possible names. choosing first name from list: ' +
|
|
217
|
-
allNames);
|
|
234
|
+
common_1.Logger.warn('name resolution returned with multiple possible names. choosing first name from list: ' + allNames);
|
|
218
235
|
}
|
|
219
236
|
const nameVariable = getVariableForName(nameResolution.variableForName);
|
|
220
237
|
foundNames.saveName(nameVariable, resolvedName.nodeName);
|
|
@@ -225,11 +242,9 @@ function resolveName(nameResolution, filePath, allFiles, foundNames) {
|
|
|
225
242
|
}
|
|
226
243
|
else {
|
|
227
244
|
// continue with next resolution pattern
|
|
228
|
-
const nextFilePath = shouldSearchInPath(nameResolution.
|
|
229
|
-
? content.filePath()
|
|
230
|
-
: filePath;
|
|
245
|
+
const nextFilePath = shouldSearchInPath(nameResolution) ? content.filePath() : filePath;
|
|
231
246
|
common_1.Logger.log(`continue to resolve name in file '${nextFilePath}' using pattern '${nameResolution.regExp}'`);
|
|
232
|
-
const resolvedName = resolveName(nameResolution.nameResolutionPattern, nextFilePath, allFiles, foundNames);
|
|
247
|
+
const resolvedName = resolveName(nameResolution.nameResolutionPattern, nextFilePath, allFiles, foundNames, searchTextLocationMemory);
|
|
233
248
|
if (resolvedName) {
|
|
234
249
|
// TODO: add metadata to node for debugging
|
|
235
250
|
common_1.Logger.log(`resolved name '${resolvedName}' in file ${content.filePath()} using pattern ${nameResolution.regExp}`);
|
|
@@ -240,9 +255,10 @@ function resolveName(nameResolution, filePath, allFiles, foundNames) {
|
|
|
240
255
|
}
|
|
241
256
|
return undefined;
|
|
242
257
|
}
|
|
243
|
-
function shouldSearchInPath(
|
|
244
|
-
return (searchTextLocation === model_1.SearchTextLocation.FILE_PATH ||
|
|
245
|
-
searchTextLocation === model_1.SearchTextLocation.ANY_FILE_PATH
|
|
258
|
+
function shouldSearchInPath(namePattern) {
|
|
259
|
+
return (namePattern.searchTextLocation === model_1.SearchTextLocation.FILE_PATH ||
|
|
260
|
+
namePattern.searchTextLocation === model_1.SearchTextLocation.ANY_FILE_PATH ||
|
|
261
|
+
namePattern.searchTextReference !== undefined);
|
|
246
262
|
}
|
|
247
263
|
function replaceNameVariables(regExp, nameMemory) {
|
|
248
264
|
for (const variable of nameMemory.getCurrentNames().entries()) {
|
|
@@ -253,7 +269,7 @@ function replaceNameVariables(regExp, nameMemory) {
|
|
|
253
269
|
}
|
|
254
270
|
return regExp;
|
|
255
271
|
}
|
|
256
|
-
function getContentsToResolveNameFrom(nameResolution, filePath, allFiles) {
|
|
272
|
+
function getContentsToResolveNameFrom(nameResolution, filePath, allFiles, searchTextLocationMemory) {
|
|
257
273
|
if (nameResolution.searchTextLocation === model_1.SearchTextLocation.FILE_PATH) {
|
|
258
274
|
return [new PathContent(filePath)];
|
|
259
275
|
}
|
|
@@ -266,13 +282,21 @@ function getContentsToResolveNameFrom(nameResolution, filePath, allFiles) {
|
|
|
266
282
|
else if (nameResolution.searchTextLocation === model_1.SearchTextLocation.ANY_FILE_PATH) {
|
|
267
283
|
return allFiles.map((file) => new PathContent(file));
|
|
268
284
|
}
|
|
285
|
+
else if (nameResolution.searchTextReference !== undefined) {
|
|
286
|
+
const searchTextLocation = searchTextLocationMemory.get(nameResolution.searchTextReference);
|
|
287
|
+
common_1.Logger.log('Using referenced search text location: ' + searchTextLocation);
|
|
288
|
+
if (!searchTextLocation) {
|
|
289
|
+
throw new Error('Cannot find saved search text location for reference "' + nameResolution.searchTextReference + '"');
|
|
290
|
+
}
|
|
291
|
+
return [new FileContent(searchTextLocation)];
|
|
292
|
+
}
|
|
269
293
|
else {
|
|
270
294
|
return [];
|
|
271
295
|
}
|
|
272
296
|
}
|
|
273
297
|
// TODO: add individual tests
|
|
274
298
|
function matchNode(pattern, filePath, nameMemory) {
|
|
275
|
-
if (shouldSearchInPath(pattern
|
|
299
|
+
if (shouldSearchInPath(pattern)) {
|
|
276
300
|
return matchNodeByPattern(pattern, filePath, nameMemory);
|
|
277
301
|
}
|
|
278
302
|
if (pattern.searchTextLocation === model_1.SearchTextLocation.FILE_CONTENT) {
|
|
@@ -283,15 +307,22 @@ function matchNode(pattern, filePath, nameMemory) {
|
|
|
283
307
|
}
|
|
284
308
|
function matchNodeByPattern(pattern, searchText, nameMemory) {
|
|
285
309
|
const variableForName = getVariableForName(pattern.variableForName);
|
|
286
|
-
return matchNodeByRegExp(pattern.regExp, searchText, pattern.capturingGroupIndexForName, variableForName, nameMemory);
|
|
310
|
+
return matchNodeByRegExp(pattern.preConditionRegExp, pattern.regExp, searchText, pattern.capturingGroupIndexForName, variableForName, nameMemory);
|
|
287
311
|
}
|
|
288
|
-
function matchNodeByRegExp(regExpString, searchText, capturingGroupIndexForName, variableForName, inheritedNameMemory) {
|
|
312
|
+
function matchNodeByRegExp(preConditionRegExpString, regExpString, searchText, capturingGroupIndexForName, variableForName, inheritedNameMemory) {
|
|
313
|
+
if (preConditionRegExpString) {
|
|
314
|
+
const preConditionRegExpWithReplacedVariables = replaceNameVariables(preConditionRegExpString, inheritedNameMemory);
|
|
315
|
+
const preConditionRegExp = new RegExp(preConditionRegExpWithReplacedVariables, 'g');
|
|
316
|
+
if (searchText.match(preConditionRegExp) == null) {
|
|
317
|
+
return [];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
289
320
|
const regExpWithReplacedVariables = replaceNameVariables(regExpString, inheritedNameMemory);
|
|
290
321
|
const regExp = new RegExp(regExpWithReplacedVariables, 'g');
|
|
291
322
|
return getAllPatternMatches(regExp, searchText, (matchArray) => {
|
|
292
323
|
if (matchArray.length >= capturingGroupIndexForName) {
|
|
293
324
|
const name = matchArray[capturingGroupIndexForName];
|
|
294
|
-
common_1.Logger.log(`matched name '${name}' from regexp '${
|
|
325
|
+
common_1.Logger.log(`matched name '${name}' from regexp '${regExpWithReplacedVariables}'`);
|
|
295
326
|
const nameMemory = new NameMemory(inheritedNameMemory);
|
|
296
327
|
nameMemory.saveName(variableForName, name);
|
|
297
328
|
return new MatchedNode(name, nameMemory);
|
package/build/src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PatternAnalyzer.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PatternAnalyzer.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
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.multiFile', () => {
|
|
8
|
+
const sourceFolder = __dirname + '/testdata/multi-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
|
+
regExp: '$sourceRoot/([^/]+)/source.java',
|
|
18
|
+
capturingGroupIndexForName: 1,
|
|
19
|
+
variableForName: 'serviceName',
|
|
20
|
+
nodeType: 'MicroService'
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
it('can resolve a name from the content of another file', async () => {
|
|
24
|
+
const inputSystem = new ms_1.System('test');
|
|
25
|
+
const systemPattern = {
|
|
26
|
+
nodePatterns: [],
|
|
27
|
+
edgePatterns: [
|
|
28
|
+
{
|
|
29
|
+
edgeType: 'AsyncEventFlow',
|
|
30
|
+
sourceNodePattern: javaSourceFilePattern(),
|
|
31
|
+
targetNodePattern: {
|
|
32
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
33
|
+
regExp: `"(.+_KAFKA_TOPIC)"`,
|
|
34
|
+
capturingGroupIndexForName: 1,
|
|
35
|
+
variableForName: 'envName',
|
|
36
|
+
nameResolutionPattern: {
|
|
37
|
+
searchTextLocation: model_1.SearchTextLocation.ANY_FILE_PATH,
|
|
38
|
+
regExp: `service1/config\.yml`,
|
|
39
|
+
capturingGroupIndexForName: 1,
|
|
40
|
+
nameResolutionPattern: {
|
|
41
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
42
|
+
regExp: `name:\\s*$envName\\s*value:\\s*(\\w+)`,
|
|
43
|
+
capturingGroupIndexForName: 1
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
nodeType: 'MessageExchange'
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
};
|
|
51
|
+
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
52
|
+
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
53
|
+
expect(outputSystem.getAllEdges()).toHaveLength(2);
|
|
54
|
+
expect(outputSystem.findMicroService('service1')).toBeDefined();
|
|
55
|
+
expect(outputSystem.findMessageExchange('actual_topic_1')).toBeDefined();
|
|
56
|
+
expect(outputSystem.findMessageExchange('actual_topic_2')).toBeDefined();
|
|
57
|
+
(0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, PatternAnalyzer_1.PatternAnalyzer.name);
|
|
58
|
+
});
|
|
59
|
+
it('can reference a source location from a variable in a stack of name resolutions', async () => {
|
|
60
|
+
const inputSystem = new ms_1.System('test');
|
|
61
|
+
const systemPattern = {
|
|
62
|
+
nodePatterns: [],
|
|
63
|
+
edgePatterns: [
|
|
64
|
+
{
|
|
65
|
+
edgeType: 'AsyncEventFlow',
|
|
66
|
+
sourceNodePattern: javaSourceFilePattern(),
|
|
67
|
+
targetNodePattern: {
|
|
68
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
69
|
+
searchTextVariable: 'javaSourceFile',
|
|
70
|
+
regExp: `\\.stream\\(([\\w^"]+)[\\),]`,
|
|
71
|
+
capturingGroupIndexForName: 1,
|
|
72
|
+
variableForName: 'topicJavaVariable',
|
|
73
|
+
nodeType: 'MessageExchange',
|
|
74
|
+
nameResolutionPattern: {
|
|
75
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_PATH,
|
|
76
|
+
regExp: `$sourceRoot/([^/]+)/`,
|
|
77
|
+
capturingGroupIndexForName: 1,
|
|
78
|
+
variableForName: 'serviceName',
|
|
79
|
+
nameResolutionPattern: {
|
|
80
|
+
searchTextReference: 'javaSourceFile',
|
|
81
|
+
regExp: `ConfigProperty\\(name = "([\\w_]+)"\\)[^;]+?$topicJavaVariable;`,
|
|
82
|
+
capturingGroupIndexForName: 1,
|
|
83
|
+
variableForName: 'topicEnvVariable',
|
|
84
|
+
nameResolutionPattern: {
|
|
85
|
+
searchTextLocation: model_1.SearchTextLocation.ANY_FILE_PATH,
|
|
86
|
+
regExp: `$serviceName/config\\.yml`,
|
|
87
|
+
capturingGroupIndexForName: 1,
|
|
88
|
+
nameResolutionPattern: {
|
|
89
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_CONTENT,
|
|
90
|
+
regExp: `name:\\s*$topicEnvVariable\\s*value:\\s*(\\w+)`,
|
|
91
|
+
capturingGroupIndexForName: 1
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
};
|
|
100
|
+
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
101
|
+
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
102
|
+
// console.log(JSON.stringify(outputSystem, null, 2))
|
|
103
|
+
expect(outputSystem.getAllEdges()).toHaveLength(2);
|
|
104
|
+
expect(outputSystem.findMicroService('service1')).toBeDefined();
|
|
105
|
+
expect(outputSystem.findMessageExchange('actual_topic_1')).toBeDefined();
|
|
106
|
+
expect(outputSystem.findMessageExchange('actual_topic_2')).toBeDefined();
|
|
107
|
+
(0, verifiers_1.verifyEachContentHasTransformer)(outputSystem, PatternAnalyzer_1.PatternAnalyzer.name);
|
|
108
|
+
});
|
|
109
|
+
it('only searches in files matching the file mask and not in excluded folders', async () => {
|
|
110
|
+
const inputSystem = new ms_1.System('test');
|
|
111
|
+
const systemPattern = {
|
|
112
|
+
includedFileEndings: ['.yml'],
|
|
113
|
+
excludedFolders: ['excluded'],
|
|
114
|
+
nodePatterns: [
|
|
115
|
+
{
|
|
116
|
+
searchTextLocation: model_1.SearchTextLocation.FILE_PATH,
|
|
117
|
+
regExp: '$sourceRoot/([^/]+)/.*',
|
|
118
|
+
capturingGroupIndexForName: 1,
|
|
119
|
+
variableForName: 'serviceName',
|
|
120
|
+
nodeType: 'MicroService'
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
edgePatterns: []
|
|
124
|
+
};
|
|
125
|
+
const analyzer = new PatternAnalyzer_1.PatternAnalyzer(sourceFolder);
|
|
126
|
+
const outputSystem = await analyzer.transform(inputSystem, systemPattern);
|
|
127
|
+
expect(outputSystem.getMicroServices()).toHaveLength(1);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=PatternAnalyzer.multiFile.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternAnalyzer.multiFile.test.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/experimental/code-pattern/PatternAnalyzer.multiFile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,177 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -15,6 +15,10 @@ export declare type NodePattern = NamePattern & {
|
|
|
15
15
|
* the name is used in logs and in system model metadata.
|
|
16
16
|
*/
|
|
17
17
|
name?: string;
|
|
18
|
+
/**
|
|
19
|
+
* a description of this pattern
|
|
20
|
+
*/
|
|
21
|
+
description?: string;
|
|
18
22
|
/**
|
|
19
23
|
* the class name of the node to create. this class must exist in model/ms.ts
|
|
20
24
|
* @see ../model/ms.ts
|
|
@@ -28,7 +32,19 @@ export declare type NamePattern = {
|
|
|
28
32
|
/**
|
|
29
33
|
* location of the search text that is used for matching the regular expression.
|
|
30
34
|
*/
|
|
31
|
-
searchTextLocation
|
|
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;
|
|
32
48
|
/**
|
|
33
49
|
* a JavaScript regular expression that defines the pattern to be matched.
|
|
34
50
|
* the expression must define at least one capturing group from which an intermediate name is derived.
|
|
@@ -93,4 +109,8 @@ export declare type EdgePattern = {
|
|
|
93
109
|
* the name is used in logs and in system model metadata.
|
|
94
110
|
*/
|
|
95
111
|
name?: string;
|
|
112
|
+
/**
|
|
113
|
+
* a description of this pattern
|
|
114
|
+
*/
|
|
115
|
+
description?: string;
|
|
96
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../src/system-element-extractors/experimental/code-pattern/model.ts"],"names":[],"mappings":";;;
|
|
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"}
|