bridgelist 1.0.2 → 1.0.4

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.
@@ -64,10 +64,11 @@ function analyzeMethod(filePath, className, methodName) {
64
64
  return result;
65
65
  }
66
66
  function extractMappings(methodNode) {
67
+ // Initialize results array
67
68
  const results = [];
68
- // Speichert Variablen, die Objekt-Literale enthalten
69
- const objectVariables = new Map();
70
- // identify all parameters of the method
69
+ // Store all variable declarations with their initializers
70
+ const variableDeclarations = new Map();
71
+ // Identify all parameters of the method
71
72
  const parameterNames = new Set();
72
73
  if (methodNode.parameters) {
73
74
  methodNode.parameters.forEach(param => {
@@ -76,211 +77,186 @@ function analyzeMethod(filePath, className, methodName) {
76
77
  }
77
78
  });
78
79
  }
79
- function findPropertyAccesses(node) {
80
- const sourceFields = new Set();
81
- // save all PropertyAccessExpressions
82
- const allPropertyAccesses = new Set();
83
- // save all PropertyAccessExpressions with a partial path
84
- const partialPaths = new Set();
85
- function visit(n) {
86
- if (typescript_1.default.isPropertyAccessExpression(n)) {
87
- const fullText = n.getText();
88
- let current = n.expression;
89
- let baseName = "";
90
- // navigate through PropertyAccessExpression recursively
91
- while (typescript_1.default.isPropertyAccessExpression(current)) {
92
- partialPaths.add(current.getText());
93
- current = current.expression;
94
- }
95
- // now current is the base variable
96
- if (typescript_1.default.isIdentifier(current)) {
97
- baseName = current.getText();
98
- }
99
- // verify if base variable is a parameter or this
100
- const isSourceObject = parameterNames.has(baseName) || baseName === "this";
101
- // if base variable is a parameter or this, save PropertyAccessExpression
102
- if (isSourceObject && typescript_1.default.isIdentifier(n.name)) {
103
- allPropertyAccesses.add(fullText);
80
+ // Keep track of decorator nodes to exclude them from analysis
81
+ const decoratorNodes = new Set();
82
+ if (methodNode.modifiers) {
83
+ methodNode.modifiers.forEach(modifier => {
84
+ if (typescript_1.default.isDecorator(modifier)) {
85
+ decoratorNodes.add(modifier);
86
+ // Also add the decorator's children to the exclusion set
87
+ function addAllChildren(node) {
88
+ decoratorNodes.add(node);
89
+ typescript_1.default.forEachChild(node, addAllChildren);
104
90
  }
105
- }
106
- typescript_1.default.forEachChild(n, visit);
107
- }
108
- visit(node);
109
- // keep only PropertyAccessExpressions with a full path
110
- allPropertyAccesses.forEach(path => {
111
- if (!partialPaths.has(path)) {
112
- sourceFields.add(path);
91
+ typescript_1.default.forEachChild(modifier, addAllChildren);
113
92
  }
114
93
  });
115
- return Array.from(sourceFields);
116
94
  }
117
- // extract nested properties from an object literal expression
118
- function extractNestedProperties(obj, parentPath) {
119
- const nestedResults = [];
120
- obj.properties.forEach(prop => {
121
- if (typescript_1.default.isPropertyAssignment(prop) && prop.name) {
122
- const propName = prop.name.getText();
123
- const fieldPath = parentPath ? `${parentPath}.${propName}` : propName;
124
- const initializer = prop.initializer;
125
- // process nested objects recursively
126
- if (typescript_1.default.isObjectLiteralExpression(initializer)) {
127
- // extracth all PropertyAccessExpressions in the initializer
128
- const sourceFields = findPropertyAccesses(initializer);
129
- if (sourceFields.length > 0) {
130
- nestedResults.push({
131
- targetField: fieldPath,
132
- sourceField: sourceFields.join(', '),
133
- transformation: 'Composite Object'
134
- });
135
- }
136
- else {
137
- const nestedProps = extractNestedProperties(initializer, fieldPath);
138
- nestedResults.push(...nestedProps);
139
- // set constant value if no nested properties are found
140
- if (nestedProps.length === 0) {
141
- nestedResults.push({
142
- targetField: fieldPath,
143
- sourceField: 'Constant value',
144
- transformation: initializer.getText()
145
- });
146
- }
147
- }
95
+ // Check if a node is part of a decorator
96
+ function isPartOfDecorator(node) {
97
+ return decoratorNodes.has(node);
98
+ }
99
+ // First pass: collect all variable declarations
100
+ function collectVariables(node) {
101
+ // Skip decorator nodes
102
+ if (isPartOfDecorator(node)) {
103
+ return;
104
+ }
105
+ // Handle variable declarations
106
+ if (typescript_1.default.isVariableDeclaration(node) && typescript_1.default.isIdentifier(node.name) && node.initializer) {
107
+ variableDeclarations.set(node.name.getText(), node.initializer);
108
+ }
109
+ typescript_1.default.forEachChild(node, collectVariables);
110
+ }
111
+ // Second pass: analyze object property assignments and mapping relations
112
+ function analyzePropertyAssignments(node) {
113
+ // Skip decorator nodes
114
+ if (isPartOfDecorator(node)) {
115
+ return;
116
+ }
117
+ // Handle object literal properties
118
+ if (typescript_1.default.isPropertyAssignment(node) && node.parent && typescript_1.default.isObjectLiteralExpression(node.parent)) {
119
+ const targetField = node.name.getText();
120
+ const initializer = node.initializer;
121
+ // Find the variable that this object belongs to
122
+ let containerVar = findContainingVariable(node.parent);
123
+ // Process different types of initializers
124
+ if (typescript_1.default.isElementAccessExpression(initializer)) {
125
+ // Handle element access (e.g., obj[key])
126
+ processElementAccess(initializer, targetField, containerVar);
127
+ }
128
+ else if (typescript_1.default.isPropertyAccessExpression(initializer)) {
129
+ // Handle property access (e.g., obj.prop)
130
+ results.push({
131
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
132
+ sourceField: initializer.getText()
133
+ });
134
+ }
135
+ else if (typescript_1.default.isCallExpression(initializer)) {
136
+ // Handle function calls
137
+ const sourceFields = findPropertyAccesses(initializer);
138
+ results.push({
139
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
140
+ sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.getText(),
141
+ transformation: initializer.expression.getText()
142
+ });
143
+ }
144
+ else if (typescript_1.default.isObjectLiteralExpression(initializer)) {
145
+ // For nested objects, we'll handle them recursively
146
+ // Child properties will be analyzed in subsequent recursive calls
147
+ }
148
+ else {
149
+ // Handle other expressions or literals
150
+ const sourceFields = findPropertyAccesses(initializer);
151
+ if (sourceFields.length > 0) {
152
+ results.push({
153
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
154
+ sourceField: sourceFields.join(', '),
155
+ transformation: "Expression"
156
+ });
148
157
  }
149
158
  else {
150
- // regular property assignment
151
- if (typescript_1.default.isPropertyAccessExpression(initializer)) {
152
- nestedResults.push({
153
- targetField: fieldPath,
154
- sourceField: initializer.getText()
155
- });
156
- }
157
- else if (typescript_1.default.isCallExpression(initializer)) {
158
- // find all PropertyAccessExpressions in the arguments of the function call
159
- const sourceFields = initializer.arguments.flatMap(arg => findPropertyAccesses(arg));
160
- nestedResults.push({
161
- targetField: fieldPath,
162
- sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.arguments.map(arg => arg.getText()).join(', '),
163
- transformation: initializer.expression.getText()
164
- });
165
- }
166
- else {
167
- const sourceFields = findPropertyAccesses(initializer);
168
- if (sourceFields.length > 0) {
169
- nestedResults.push({
170
- targetField: fieldPath,
171
- sourceField: sourceFields.join(', '),
172
- transformation: initializer.kind !== typescript_1.default.SyntaxKind.StringLiteral &&
173
- initializer.kind !== typescript_1.default.SyntaxKind.NumericLiteral &&
174
- initializer.kind !== typescript_1.default.SyntaxKind.TrueKeyword &&
175
- initializer.kind !== typescript_1.default.SyntaxKind.FalseKeyword ?
176
- 'Transformed' : 'Direct mapping'
177
- });
178
- }
179
- else {
180
- nestedResults.push({
181
- targetField: fieldPath,
182
- sourceField: 'Constant value',
183
- transformation: initializer.getText()
184
- });
185
- }
186
- }
159
+ // Constant values
160
+ results.push({
161
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
162
+ sourceField: "Constant value",
163
+ transformation: initializer.getText()
164
+ });
187
165
  }
188
166
  }
167
+ }
168
+ typescript_1.default.forEachChild(node, analyzePropertyAssignments);
169
+ }
170
+ // Helper to find the variable an object belongs to
171
+ function findContainingVariable(objectLiteral) {
172
+ let result;
173
+ variableDeclarations.forEach((value, key) => {
174
+ if (value === objectLiteral) {
175
+ result = key;
176
+ }
189
177
  });
190
- return nestedResults;
178
+ return result;
191
179
  }
192
- // iterative AST traversal
193
- function visit(node) {
194
- // analysis for VariableStatement
195
- if (typescript_1.default.isVariableStatement(node)) {
196
- node.declarationList.declarations.forEach(declaration => {
197
- if (declaration.initializer && typescript_1.default.isObjectLiteralExpression(declaration.initializer) &&
198
- declaration.name && typescript_1.default.isIdentifier(declaration.name)) {
199
- // save variable with object literal initializer
200
- objectVariables.set(declaration.name.getText(), declaration.initializer);
201
- }
202
- });
180
+ // Helper to process element access expressions
181
+ function processElementAccess(expr, targetField, containerVar) {
182
+ const objExpr = expr.expression;
183
+ if (typescript_1.default.isPropertyAccessExpression(objExpr) &&
184
+ objExpr.expression &&
185
+ typescript_1.default.isIdentifier(objExpr.expression) &&
186
+ parameterNames.has(objExpr.expression.getText())) {
187
+ // Handle dynamic property access with string concatenation
188
+ if (typescript_1.default.isBinaryExpression(expr.argumentExpression) &&
189
+ expr.argumentExpression.operatorToken.kind === typescript_1.default.SyntaxKind.PlusToken &&
190
+ typescript_1.default.isPropertyAccessExpression(expr.argumentExpression.left) &&
191
+ typescript_1.default.isStringLiteral(expr.argumentExpression.right)) {
192
+ const prefix = expr.argumentExpression.left.getText();
193
+ const suffix = expr.argumentExpression.right.text;
194
+ results.push({
195
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
196
+ sourceField: `Dynamic access: ${objExpr.getText()}[${prefix} + '${suffix}']`,
197
+ transformation: "Dynamic property mapping"
198
+ });
199
+ }
200
+ // Handle direct string literal access
201
+ else if (typescript_1.default.isStringLiteral(expr.argumentExpression)) {
202
+ results.push({
203
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
204
+ sourceField: `${objExpr.getText()}['${expr.argumentExpression.text}']`
205
+ });
206
+ }
207
+ // Handle other dynamic access
208
+ else {
209
+ results.push({
210
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
211
+ sourceField: `Dynamic access: ${expr.getText()}`,
212
+ transformation: "Dynamic property mapping"
213
+ });
214
+ }
203
215
  }
204
- // search for ReturnStatement
205
- if (typescript_1.default.isReturnStatement(node) && node.expression) {
206
- let objectLiteral;
207
- let expression = node.expression;
208
- // Handle type assertions
209
- if (typescript_1.default.isAsExpression(expression)) {
210
- expression = expression.expression;
216
+ }
217
+ // Find all property accesses in an expression
218
+ function findPropertyAccesses(node) {
219
+ const sourceFields = new Set();
220
+ function visit(n) {
221
+ // Skip decorator nodes
222
+ if (isPartOfDecorator(n)) {
223
+ return;
211
224
  }
212
- // Case 1: direct return of an object literal
213
- if (typescript_1.default.isObjectLiteralExpression(expression)) {
214
- objectLiteral = expression;
225
+ if (typescript_1.default.isPropertyAccessExpression(n) &&
226
+ n.expression &&
227
+ typescript_1.default.isIdentifier(n.expression) &&
228
+ parameterNames.has(n.expression.getText())) {
229
+ sourceFields.add(n.getText());
215
230
  }
216
- // Case 2: return of an object literal from a variable
217
- else if (typescript_1.default.isIdentifier(expression)) {
218
- const variableName = expression.getText();
219
- const varObjectLiteral = objectVariables.get(variableName);
220
- if (varObjectLiteral) {
221
- objectLiteral = varObjectLiteral;
231
+ else if (typescript_1.default.isElementAccessExpression(n) &&
232
+ n.expression &&
233
+ typescript_1.default.isPropertyAccessExpression(n.expression) &&
234
+ n.expression.expression &&
235
+ typescript_1.default.isIdentifier(n.expression.expression) &&
236
+ parameterNames.has(n.expression.expression.getText())) {
237
+ if (typescript_1.default.isStringLiteral(n.argumentExpression)) {
238
+ sourceFields.add(`${n.expression.getText()}['${n.argumentExpression.text}']`);
239
+ }
240
+ else if (typescript_1.default.isBinaryExpression(n.argumentExpression) &&
241
+ n.argumentExpression.operatorToken.kind === typescript_1.default.SyntaxKind.PlusToken &&
242
+ typescript_1.default.isPropertyAccessExpression(n.argumentExpression.left) &&
243
+ typescript_1.default.isStringLiteral(n.argumentExpression.right)) {
244
+ const prefix = n.argumentExpression.left.getText();
245
+ const suffix = n.argumentExpression.right.text;
246
+ sourceFields.add(`${n.expression.getText()}[${prefix} + '${suffix}']`);
247
+ }
248
+ else {
249
+ sourceFields.add(n.getText());
222
250
  }
223
251
  }
224
- // if object literal is found, extract mappings from it
225
- if (objectLiteral) {
226
- // analyze all properties in the object literal
227
- objectLiteral.properties.forEach(prop => {
228
- if (typescript_1.default.isPropertyAssignment(prop)) {
229
- const targetField = prop.name.getText();
230
- const initializer = prop.initializer;
231
- // simple PropertyAccessExpression
232
- if (typescript_1.default.isPropertyAccessExpression(initializer)) {
233
- results.push({
234
- targetField,
235
- sourceField: initializer.getText()
236
- });
237
- }
238
- // complex case: FunctionCallExpression
239
- else if (typescript_1.default.isCallExpression(initializer)) {
240
- // find all PropertyAccessExpressions in the arguments of the function call
241
- const sourceFields = initializer.arguments.flatMap(arg => findPropertyAccesses(arg));
242
- results.push({
243
- targetField,
244
- sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.arguments.map(arg => arg.getText()).join(', '),
245
- transformation: initializer.expression.getText()
246
- });
247
- }
248
- // complex case: nested ObjectLiteralExpression
249
- else if (typescript_1.default.isObjectLiteralExpression(initializer)) {
250
- // extract all nested mappings from the nested object literal
251
- const nestedMappings = extractNestedProperties(initializer, targetField);
252
- results.push(...nestedMappings);
253
- }
254
- // other cases: constant value or transformation
255
- else {
256
- const sourceFields = findPropertyAccesses(initializer);
257
- if (sourceFields.length > 0) {
258
- results.push({
259
- targetField,
260
- sourceField: sourceFields.join(', '),
261
- transformation: initializer.kind !== typescript_1.default.SyntaxKind.StringLiteral &&
262
- initializer.kind !== typescript_1.default.SyntaxKind.NumericLiteral &&
263
- initializer.kind !== typescript_1.default.SyntaxKind.TrueKeyword &&
264
- initializer.kind !== typescript_1.default.SyntaxKind.FalseKeyword ?
265
- 'Transformed' : 'Direct mapping'
266
- });
267
- }
268
- else {
269
- results.push({
270
- targetField,
271
- sourceField: 'Constant value',
272
- transformation: initializer.getText()
273
- });
274
- }
275
- }
276
- }
277
- });
278
- }
252
+ typescript_1.default.forEachChild(n, visit);
279
253
  }
280
- // recursive call for all child nodes
281
- typescript_1.default.forEachChild(node, visit);
254
+ visit(node);
255
+ return Array.from(sourceFields);
282
256
  }
283
- visit(methodNode);
257
+ // Run our analysis passes
258
+ collectVariables(methodNode);
259
+ analyzePropertyAssignments(methodNode);
284
260
  return results;
285
261
  }
286
262
  // find method in AST and extract mappings
@@ -1 +1 @@
1
- {"version":3,"file":"ast-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/ast-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/ast-analyzer.ts"],"names":[],"mappings":"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"}