bridgelist 1.0.7 → 1.1.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 +3 -3
- package/dist/analyzers/array-analyzer.d.ts +14 -0
- package/dist/analyzers/array-analyzer.js +103 -0
- package/dist/analyzers/array-analyzer.js.map +1 -0
- package/dist/analyzers/ast-analyzer.js +11 -65
- package/dist/analyzers/ast-analyzer.js.map +1 -1
- package/dist/analyzers/method-analyzer.d.ts +3 -2
- package/dist/analyzers/method-analyzer.js +91 -89
- package/dist/analyzers/method-analyzer.js.map +1 -1
- package/dist/analyzers/property-access-analyzer.d.ts +3 -6
- package/dist/analyzers/property-access-analyzer.js +62 -58
- package/dist/analyzers/property-access-analyzer.js.map +1 -1
- package/dist/decorators/array-documentation.d.ts +2 -0
- package/dist/decorators/array-documentation.js +9 -0
- package/dist/decorators/array-documentation.js.map +1 -0
- package/dist/decorators/mapping-documentation.js.map +1 -1
- package/dist/generators/array-list-generator.d.ts +1 -0
- package/dist/generators/array-list-generator.js +143 -0
- package/dist/generators/array-list-generator.js.map +1 -0
- package/dist/generators/doc-generator-html.d.ts +1 -0
- package/dist/generators/doc-generator-html.js +375 -0
- package/dist/generators/doc-generator-html.js.map +1 -0
- package/dist/generators/doc-output-registry.d.ts +4 -0
- package/dist/generators/doc-output-registry.js +21 -0
- package/dist/generators/doc-output-registry.js.map +1 -0
- package/dist/generators/mapping-generator.d.ts +2 -0
- package/dist/generators/mapping-generator.js +167 -0
- package/dist/generators/mapping-generator.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.js +16 -6
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/utils/array-scanner.d.ts +7 -0
- package/dist/utils/array-scanner.js +53 -0
- package/dist/utils/array-scanner.js.map +1 -0
- package/dist/utils/find-all-ts-files.d.ts +1 -0
- package/dist/utils/find-all-ts-files.js +25 -0
- package/dist/utils/find-all-ts-files.js.map +1 -0
- package/dist/utils/find-decorated-methods.d.ts +16 -0
- package/dist/utils/find-decorated-methods.js +103 -0
- package/dist/utils/find-decorated-methods.js.map +1 -0
- package/dist/utils/mapping-scanner.d.ts +7 -0
- package/dist/utils/mapping-scanner.js +53 -0
- package/dist/utils/mapping-scanner.js.map +1 -0
- package/docs/documentation.html +434 -0
- package/package.json +6 -3
- package/docs/example-mapping.html +0 -1170
package/README.md
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MethodDeclaration } from 'ts-morph';
|
|
2
|
+
export declare class ArrayAnalyzer {
|
|
3
|
+
private readonly methodNode;
|
|
4
|
+
private decoratorNodes;
|
|
5
|
+
constructor(methodNode: MethodDeclaration);
|
|
6
|
+
extractArrayElements(): string[];
|
|
7
|
+
private initializeDecorators;
|
|
8
|
+
private addAllChildrenToDecoratorSet;
|
|
9
|
+
private isPartOfDecorator;
|
|
10
|
+
private findMainArray;
|
|
11
|
+
private processArrayElements;
|
|
12
|
+
private formatObjectLiteral;
|
|
13
|
+
}
|
|
14
|
+
export declare function analyzeArrayInMethod(filePath: string, className: string, methodName: string): string[];
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArrayAnalyzer = void 0;
|
|
4
|
+
exports.analyzeArrayInMethod = analyzeArrayInMethod;
|
|
5
|
+
const ts_morph_1 = require("ts-morph");
|
|
6
|
+
class ArrayAnalyzer {
|
|
7
|
+
constructor(methodNode) {
|
|
8
|
+
this.decoratorNodes = new Set();
|
|
9
|
+
this.methodNode = methodNode;
|
|
10
|
+
this.initializeDecorators();
|
|
11
|
+
}
|
|
12
|
+
extractArrayElements() {
|
|
13
|
+
const arrayLiterals = this.methodNode.getDescendantsOfKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression)
|
|
14
|
+
.filter(arrayLiteral => !this.isPartOfDecorator(arrayLiteral));
|
|
15
|
+
if (arrayLiterals.length === 0) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
// When multiple arrays exist, choose the largest as it's likely the main data array
|
|
19
|
+
const mainArray = this.findMainArray(arrayLiterals);
|
|
20
|
+
return this.processArrayElements(mainArray);
|
|
21
|
+
}
|
|
22
|
+
initializeDecorators() {
|
|
23
|
+
this.methodNode.getDecorators().forEach(decorator => {
|
|
24
|
+
this.decoratorNodes.add(decorator);
|
|
25
|
+
this.addAllChildrenToDecoratorSet(decorator);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
addAllChildrenToDecoratorSet(node) {
|
|
29
|
+
// Recursively mark all decorator child nodes to exclude them from analysis
|
|
30
|
+
this.decoratorNodes.add(node);
|
|
31
|
+
node.getChildren().forEach(child => this.addAllChildrenToDecoratorSet(child));
|
|
32
|
+
}
|
|
33
|
+
isPartOfDecorator(node) {
|
|
34
|
+
return this.decoratorNodes.has(node) ||
|
|
35
|
+
node.getAncestors().some(ancestor => this.decoratorNodes.has(ancestor));
|
|
36
|
+
}
|
|
37
|
+
findMainArray(arrayLiterals) {
|
|
38
|
+
if (arrayLiterals.length === 1) {
|
|
39
|
+
return arrayLiterals[0];
|
|
40
|
+
}
|
|
41
|
+
return arrayLiterals.reduce((largest, current) => {
|
|
42
|
+
return current.getElements().length > largest.getElements().length ? current : largest;
|
|
43
|
+
}, arrayLiterals[0]);
|
|
44
|
+
}
|
|
45
|
+
processArrayElements(arrayLiteral) {
|
|
46
|
+
const elements = [];
|
|
47
|
+
arrayLiteral.getElements().forEach(element => {
|
|
48
|
+
const elementKind = element.getKind();
|
|
49
|
+
switch (elementKind) {
|
|
50
|
+
case ts_morph_1.SyntaxKind.StringLiteral:
|
|
51
|
+
elements.push(element.asKindOrThrow(ts_morph_1.SyntaxKind.StringLiteral).getLiteralValue());
|
|
52
|
+
break;
|
|
53
|
+
case ts_morph_1.SyntaxKind.NumericLiteral:
|
|
54
|
+
case ts_morph_1.SyntaxKind.TrueKeyword:
|
|
55
|
+
case ts_morph_1.SyntaxKind.FalseKeyword:
|
|
56
|
+
elements.push(element.getText());
|
|
57
|
+
break;
|
|
58
|
+
case ts_morph_1.SyntaxKind.ObjectLiteralExpression:
|
|
59
|
+
elements.push(this.formatObjectLiteral(element));
|
|
60
|
+
break;
|
|
61
|
+
default:
|
|
62
|
+
elements.push(element.getText());
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return elements;
|
|
67
|
+
}
|
|
68
|
+
formatObjectLiteral(objectLiteral) {
|
|
69
|
+
const propertyAssignments = objectLiteral.getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertyAssignment);
|
|
70
|
+
if (propertyAssignments.length === 0) {
|
|
71
|
+
return '{}';
|
|
72
|
+
}
|
|
73
|
+
const formattedProps = propertyAssignments.map(prop => {
|
|
74
|
+
const name = prop.getName();
|
|
75
|
+
const initializer = prop.getInitializer();
|
|
76
|
+
if (!initializer) {
|
|
77
|
+
return `${name}: undefined`;
|
|
78
|
+
}
|
|
79
|
+
let value = initializer.getText();
|
|
80
|
+
if (initializer.getKind() === ts_morph_1.SyntaxKind.StringLiteral) {
|
|
81
|
+
value = initializer.asKindOrThrow(ts_morph_1.SyntaxKind.StringLiteral).getLiteralValue();
|
|
82
|
+
}
|
|
83
|
+
return `${name}: ${value}`;
|
|
84
|
+
});
|
|
85
|
+
return `{ ${formattedProps.join(', ')} }`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.ArrayAnalyzer = ArrayAnalyzer;
|
|
89
|
+
function analyzeArrayInMethod(filePath, className, methodName) {
|
|
90
|
+
const project = new ts_morph_1.Project();
|
|
91
|
+
const sourceFile = project.addSourceFileAtPath(filePath);
|
|
92
|
+
const classDeclaration = sourceFile.getClass(className);
|
|
93
|
+
if (!classDeclaration) {
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
const methodDeclaration = classDeclaration.getMethod(methodName);
|
|
97
|
+
if (!methodDeclaration) {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
const analyzer = new ArrayAnalyzer(methodDeclaration);
|
|
101
|
+
return analyzer.extractArrayElements();
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=array-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/array-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.analyzeMethod = analyzeMethod;
|
|
40
|
-
const
|
|
41
|
-
const fs = __importStar(require("fs"));
|
|
42
|
-
const path = __importStar(require("path"));
|
|
4
|
+
const ts_morph_1 = require("ts-morph");
|
|
43
5
|
const method_analyzer_1 = require("./method-analyzer");
|
|
44
6
|
function analyzeMethod(filePath, className, methodName) {
|
|
45
|
-
const
|
|
46
|
-
const sourceFile =
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
return analyzer.extractMappings();
|
|
7
|
+
const project = new ts_morph_1.Project();
|
|
8
|
+
const sourceFile = project.addSourceFileAtPath(filePath);
|
|
9
|
+
const classDeclaration = sourceFile.getClass(className);
|
|
10
|
+
if (!classDeclaration) {
|
|
11
|
+
return [];
|
|
51
12
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
function findMethod(node) {
|
|
56
|
-
if (typescript_1.default.isMethodDeclaration(node) &&
|
|
57
|
-
node.name.getText() === methodName &&
|
|
58
|
-
node.parent &&
|
|
59
|
-
typescript_1.default.isClassDeclaration(node.parent) &&
|
|
60
|
-
node.parent.name &&
|
|
61
|
-
node.parent.name.getText() === className) {
|
|
62
|
-
return node;
|
|
63
|
-
}
|
|
64
|
-
let result;
|
|
65
|
-
typescript_1.default.forEachChild(node, child => {
|
|
66
|
-
if (!result) {
|
|
67
|
-
result = findMethod(child);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
return result;
|
|
13
|
+
const methodDeclaration = classDeclaration.getMethod(methodName);
|
|
14
|
+
if (!methodDeclaration) {
|
|
15
|
+
return [];
|
|
71
16
|
}
|
|
72
|
-
|
|
17
|
+
const analyzer = new method_analyzer_1.MethodAnalyzer(methodDeclaration);
|
|
18
|
+
return analyzer.extractMappings();
|
|
73
19
|
}
|
|
74
20
|
//# sourceMappingURL=ast-analyzer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/ast-analyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ast-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/ast-analyzer.ts"],"names":[],"mappings":";;AAUA,sCAqBC;AA9BD,uCAAmC;AACnC,uDAAmD;AAQnD,SAAgB,aAAa,CACzB,QAAgB,EAChB,SAAiB,EACjB,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,kBAAO,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEzD,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,gCAAc,CAAC,iBAAiB,CAAC,CAAC;IAEvD,OAAO,QAAQ,CAAC,eAAe,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { MethodDeclaration } from 'ts-morph';
|
|
2
2
|
import { MappingRelation } from './ast-analyzer';
|
|
3
3
|
export declare class MethodAnalyzer {
|
|
4
4
|
private readonly methodNode;
|
|
@@ -6,7 +6,7 @@ export declare class MethodAnalyzer {
|
|
|
6
6
|
private variableDeclarations;
|
|
7
7
|
private parameterNames;
|
|
8
8
|
private decoratorNodes;
|
|
9
|
-
constructor(methodNode:
|
|
9
|
+
constructor(methodNode: MethodDeclaration);
|
|
10
10
|
extractMappings(): MappingRelation[];
|
|
11
11
|
private initializeParameters;
|
|
12
12
|
private initializeDecorators;
|
|
@@ -20,6 +20,7 @@ export declare class MethodAnalyzer {
|
|
|
20
20
|
private processOtherExpression;
|
|
21
21
|
private findContainingVariable;
|
|
22
22
|
private processElementAccess;
|
|
23
|
+
private isParameterBasedExpression;
|
|
23
24
|
private processDynamicConcatenation;
|
|
24
25
|
private processStringLiteralAccess;
|
|
25
26
|
private processOtherDynamicAccess;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.MethodAnalyzer = void 0;
|
|
4
|
+
const ts_morph_1 = require("ts-morph");
|
|
7
5
|
const property_access_analyzer_1 = require("./property-access-analyzer");
|
|
8
|
-
const typescript_1 = __importDefault(require("typescript"));
|
|
9
6
|
class MethodAnalyzer {
|
|
10
7
|
constructor(methodNode) {
|
|
11
8
|
this.results = [];
|
|
@@ -17,75 +14,76 @@ class MethodAnalyzer {
|
|
|
17
14
|
this.initializeDecorators();
|
|
18
15
|
}
|
|
19
16
|
extractMappings() {
|
|
20
|
-
this.collectVariables(
|
|
21
|
-
this.analyzePropertyAssignments(
|
|
17
|
+
this.collectVariables();
|
|
18
|
+
this.analyzePropertyAssignments();
|
|
22
19
|
return this.results;
|
|
23
20
|
}
|
|
24
21
|
initializeParameters() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
22
|
+
this.methodNode.getParameters().forEach(param => {
|
|
23
|
+
const name = param.getName();
|
|
24
|
+
if (name) {
|
|
25
|
+
this.parameterNames.add(name);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
32
28
|
}
|
|
33
29
|
initializeDecorators() {
|
|
34
|
-
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.addAllChildrenToDecoratorSet(modifier);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
}
|
|
30
|
+
this.methodNode.getDecorators().forEach(decorator => {
|
|
31
|
+
this.decoratorNodes.add(decorator);
|
|
32
|
+
this.addAllChildrenToDecoratorSet(decorator);
|
|
33
|
+
});
|
|
42
34
|
}
|
|
43
35
|
addAllChildrenToDecoratorSet(node) {
|
|
44
36
|
this.decoratorNodes.add(node);
|
|
45
|
-
|
|
37
|
+
node.getChildren().forEach(child => this.addAllChildrenToDecoratorSet(child));
|
|
46
38
|
}
|
|
47
39
|
isPartOfDecorator(node) {
|
|
48
|
-
return this.decoratorNodes.has(node)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
40
|
+
return this.decoratorNodes.has(node) ||
|
|
41
|
+
node.getAncestors().some(ancestor => this.decoratorNodes.has(ancestor));
|
|
42
|
+
}
|
|
43
|
+
collectVariables() {
|
|
44
|
+
// Verwende ts-morph's Built-in Methoden
|
|
45
|
+
this.methodNode.getDescendantsOfKind(ts_morph_1.SyntaxKind.VariableDeclaration)
|
|
46
|
+
.filter(varDecl => !this.isPartOfDecorator(varDecl))
|
|
47
|
+
.forEach(varDecl => {
|
|
48
|
+
const name = varDecl.getName();
|
|
49
|
+
const initializer = varDecl.getInitializer();
|
|
50
|
+
if (name && initializer) {
|
|
51
|
+
this.variableDeclarations.set(name, initializer);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
58
54
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
analyzePropertyAssignments(parentPath = "") {
|
|
56
|
+
// Direkte Suche nach PropertyAssignments
|
|
57
|
+
this.methodNode.getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertyAssignment)
|
|
58
|
+
.filter(propAssign => !this.isPartOfDecorator(propAssign))
|
|
59
|
+
.filter(propAssign => { var _a; return ((_a = propAssign.getParent()) === null || _a === void 0 ? void 0 : _a.getKind()) === ts_morph_1.SyntaxKind.ObjectLiteralExpression; })
|
|
60
|
+
.forEach(propAssign => this.processPropertyAssignment(propAssign, parentPath));
|
|
61
|
+
}
|
|
62
|
+
processPropertyAssignment(node, parentPath = "") {
|
|
63
|
+
const targetField = node.getName();
|
|
64
|
+
const fullTargetPath = parentPath ? `${parentPath}.${targetField}` : targetField;
|
|
65
|
+
const initializer = node.getInitializer();
|
|
66
|
+
const containerVar = this.findContainingVariable(node.getParent());
|
|
67
|
+
if (!initializer)
|
|
62
68
|
return;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
this.processCallExpression(initializer, targetField, containerVar);
|
|
82
|
-
}
|
|
83
|
-
else if (typescript_1.default.isObjectLiteralExpression(initializer)) {
|
|
84
|
-
// For nested objects, we'll handle them recursively
|
|
85
|
-
// Child properties will be analyzed in subsequent recursive calls
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.processOtherExpression(initializer, targetField, containerVar);
|
|
69
|
+
const kind = initializer.getKind();
|
|
70
|
+
switch (kind) {
|
|
71
|
+
case ts_morph_1.SyntaxKind.ElementAccessExpression:
|
|
72
|
+
this.processElementAccess(initializer, fullTargetPath, containerVar);
|
|
73
|
+
break;
|
|
74
|
+
case ts_morph_1.SyntaxKind.PropertyAccessExpression:
|
|
75
|
+
this.processPropertyAccess(initializer, fullTargetPath, containerVar);
|
|
76
|
+
break;
|
|
77
|
+
case ts_morph_1.SyntaxKind.CallExpression:
|
|
78
|
+
this.processCallExpression(initializer, fullTargetPath, containerVar);
|
|
79
|
+
break;
|
|
80
|
+
case ts_morph_1.SyntaxKind.ObjectLiteralExpression:
|
|
81
|
+
// Verschachtelte Objekte: mit vollständigem Pfad verarbeiten
|
|
82
|
+
initializer.getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertyAssignment)
|
|
83
|
+
.forEach(propAssign => this.processPropertyAssignment(propAssign, fullTargetPath));
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
this.processOtherExpression(initializer, fullTargetPath, containerVar);
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
89
|
processPropertyAccess(initializer, targetField, containerVar) {
|
|
@@ -96,10 +94,12 @@ class MethodAnalyzer {
|
|
|
96
94
|
}
|
|
97
95
|
processCallExpression(initializer, targetField, containerVar) {
|
|
98
96
|
const sourceFields = this.findPropertyAccesses(initializer);
|
|
97
|
+
// Mit ts-morph können wir sicher auf Expression zugreifen
|
|
98
|
+
const callExpr = initializer.asKindOrThrow(ts_morph_1.SyntaxKind.CallExpression);
|
|
99
99
|
this.results.push({
|
|
100
100
|
targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
|
|
101
101
|
sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.getText(),
|
|
102
|
-
transformation:
|
|
102
|
+
transformation: callExpr.getExpression().getText()
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
processOtherExpression(initializer, targetField, containerVar) {
|
|
@@ -112,7 +112,6 @@ class MethodAnalyzer {
|
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
114
|
else {
|
|
115
|
-
// Constant values
|
|
116
115
|
this.results.push({
|
|
117
116
|
targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
|
|
118
117
|
sourceField: "Constant value",
|
|
@@ -121,52 +120,55 @@ class MethodAnalyzer {
|
|
|
121
120
|
}
|
|
122
121
|
}
|
|
123
122
|
findContainingVariable(objectLiteral) {
|
|
124
|
-
|
|
125
|
-
this.variableDeclarations.forEach((value, key) => {
|
|
123
|
+
for (const [key, value] of this.variableDeclarations) {
|
|
126
124
|
if (value === objectLiteral) {
|
|
127
|
-
|
|
125
|
+
return key;
|
|
128
126
|
}
|
|
129
|
-
}
|
|
130
|
-
return
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
131
129
|
}
|
|
132
130
|
processElementAccess(expr, targetField, containerVar) {
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
this.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
expr.argumentExpression.operatorToken.kind === typescript_1.default.SyntaxKind.PlusToken &&
|
|
141
|
-
typescript_1.default.isPropertyAccessExpression(expr.argumentExpression.left) &&
|
|
142
|
-
typescript_1.default.isStringLiteral(expr.argumentExpression.right)) {
|
|
143
|
-
this.processDynamicConcatenation(expr, objExpr, targetField, containerVar);
|
|
131
|
+
const elemAccess = expr.asKindOrThrow(ts_morph_1.SyntaxKind.ElementAccessExpression);
|
|
132
|
+
const objExpr = elemAccess.getExpression();
|
|
133
|
+
const argExpr = elemAccess.getArgumentExpression();
|
|
134
|
+
if (objExpr.getKind() === ts_morph_1.SyntaxKind.PropertyAccessExpression &&
|
|
135
|
+
this.isParameterBasedExpression(objExpr)) {
|
|
136
|
+
if ((argExpr === null || argExpr === void 0 ? void 0 : argExpr.getKind()) === ts_morph_1.SyntaxKind.BinaryExpression) {
|
|
137
|
+
this.processDynamicConcatenation(elemAccess, objExpr, targetField, containerVar);
|
|
144
138
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
this.processStringLiteralAccess(expr, objExpr, targetField, containerVar);
|
|
139
|
+
else if ((argExpr === null || argExpr === void 0 ? void 0 : argExpr.getKind()) === ts_morph_1.SyntaxKind.StringLiteral) {
|
|
140
|
+
this.processStringLiteralAccess(elemAccess, objExpr, targetField, containerVar);
|
|
148
141
|
}
|
|
149
|
-
// Handle other dynamic access
|
|
150
142
|
else {
|
|
151
143
|
this.processOtherDynamicAccess(expr, targetField, containerVar);
|
|
152
144
|
}
|
|
153
145
|
}
|
|
154
146
|
}
|
|
147
|
+
isParameterBasedExpression(expr) {
|
|
148
|
+
if (expr.getKind() !== ts_morph_1.SyntaxKind.PropertyAccessExpression)
|
|
149
|
+
return false;
|
|
150
|
+
const propAccess = expr.asKindOrThrow(ts_morph_1.SyntaxKind.PropertyAccessExpression);
|
|
151
|
+
const baseExpr = propAccess.getExpression();
|
|
152
|
+
return baseExpr.getKind() === ts_morph_1.SyntaxKind.Identifier &&
|
|
153
|
+
this.parameterNames.has(baseExpr.getText());
|
|
154
|
+
}
|
|
155
155
|
processDynamicConcatenation(expr, objExpr, targetField, containerVar) {
|
|
156
|
-
const
|
|
157
|
-
const
|
|
158
|
-
const
|
|
156
|
+
const elemAccess = expr.asKindOrThrow(ts_morph_1.SyntaxKind.ElementAccessExpression);
|
|
157
|
+
const binaryExpr = elemAccess.getArgumentExpression().asKindOrThrow(ts_morph_1.SyntaxKind.BinaryExpression);
|
|
158
|
+
const left = binaryExpr.getLeft().asKindOrThrow(ts_morph_1.SyntaxKind.PropertyAccessExpression);
|
|
159
|
+
const right = binaryExpr.getRight().asKindOrThrow(ts_morph_1.SyntaxKind.StringLiteral);
|
|
159
160
|
this.results.push({
|
|
160
161
|
targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
|
|
161
|
-
sourceField: `Dynamic access: ${objExpr.getText()}[${
|
|
162
|
+
sourceField: `Dynamic access: ${objExpr.getText()}[${left.getText()} + '${right.getLiteralValue()}']`,
|
|
162
163
|
transformation: "Dynamic property mapping"
|
|
163
164
|
});
|
|
164
165
|
}
|
|
165
166
|
processStringLiteralAccess(expr, objExpr, targetField, containerVar) {
|
|
166
|
-
const
|
|
167
|
+
const elemAccess = expr.asKindOrThrow(ts_morph_1.SyntaxKind.ElementAccessExpression);
|
|
168
|
+
const stringLiteral = elemAccess.getArgumentExpression().asKindOrThrow(ts_morph_1.SyntaxKind.StringLiteral);
|
|
167
169
|
this.results.push({
|
|
168
170
|
targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
|
|
169
|
-
sourceField: `${objExpr.getText()}['${stringLiteral.
|
|
171
|
+
sourceField: `${objExpr.getText()}['${stringLiteral.getLiteralValue()}']`
|
|
170
172
|
});
|
|
171
173
|
}
|
|
172
174
|
processOtherDynamicAccess(expr, targetField, containerVar) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/method-analyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"method-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/method-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
/**
|
|
3
|
-
* Analyzes property accesses in TypeScript expressions
|
|
4
|
-
*/
|
|
1
|
+
import { Node } from 'ts-morph';
|
|
5
2
|
export declare class PropertyAccessAnalyzer {
|
|
6
3
|
private sourceFields;
|
|
7
4
|
private visitedNodes;
|
|
@@ -9,8 +6,8 @@ export declare class PropertyAccessAnalyzer {
|
|
|
9
6
|
private partialPropertyPaths;
|
|
10
7
|
private parameterNames;
|
|
11
8
|
private decoratorNodes;
|
|
12
|
-
constructor(parameterNames: Set<string>, decoratorNodes: Set<
|
|
13
|
-
findPropertyAccesses(node:
|
|
9
|
+
constructor(parameterNames: Set<string>, decoratorNodes: Set<Node>);
|
|
10
|
+
findPropertyAccesses(node: Node): string[];
|
|
14
11
|
private visit;
|
|
15
12
|
private isPartOfDecorator;
|
|
16
13
|
private isRelevantElementAccessExpression;
|