bridgelist 1.0.3 → 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,285 +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 and ElementAccessExpressions
82
- const allPropertyAccesses = new Set();
83
- // save all PropertyAccessExpressions with a partial path
84
- const partialPaths = new Set();
85
- function visit(n) {
86
- // Normaler Property-Zugriff: obj.property
87
- if (typescript_1.default.isPropertyAccessExpression(n)) {
88
- const fullText = n.getText();
89
- let current = n.expression;
90
- let baseName = "";
91
- // navigate through PropertyAccessExpression recursively
92
- while (typescript_1.default.isPropertyAccessExpression(current)) {
93
- partialPaths.add(current.getText());
94
- current = current.expression;
95
- }
96
- // now current is the base variable
97
- if (typescript_1.default.isIdentifier(current)) {
98
- baseName = current.getText();
99
- }
100
- // verify if base variable is a parameter or this
101
- const isSourceObject = parameterNames.has(baseName) || baseName === "this";
102
- // if base variable is a parameter or this, save PropertyAccessExpression
103
- if (isSourceObject && typescript_1.default.isIdentifier(n.name)) {
104
- allPropertyAccesses.add(fullText);
105
- }
106
- }
107
- // Eckige Klammern-Zugriff: obj['property'] oder obj[variable]
108
- else if (typescript_1.default.isElementAccessExpression(n)) {
109
- const fullText = n.getText();
110
- let current = n.expression;
111
- let baseName = "";
112
- // Navigiere durch verschachtelte PropertyAccessExpressions
113
- while (typescript_1.default.isPropertyAccessExpression(current)) {
114
- partialPaths.add(current.getText());
115
- current = current.expression;
116
- }
117
- // Wenn wir bei der Basis-Variable angelangt sind
118
- if (typescript_1.default.isIdentifier(current)) {
119
- baseName = current.getText();
120
- }
121
- // Überprüfe, ob die Basis-Variable ein Parameter oder 'this' ist
122
- const isSourceObject = parameterNames.has(baseName) || baseName === "this";
123
- // Wenn es ein Element-Zugriff auf eine gültige Quellvariable ist
124
- if (isSourceObject) {
125
- // Versuche, den String-Literal-Wert zu extrahieren (bei obj['property'])
126
- if (typescript_1.default.isStringLiteral(n.argumentExpression)) {
127
- const propertyName = n.argumentExpression.text;
128
- // Erstelle eine lesbare Darstellung für die Dokumentation
129
- const readableForm = `${baseName}.properties['${propertyName}']`;
130
- allPropertyAccesses.add(readableForm);
131
- }
132
- else {
133
- // Andernfalls verwende den Originaltext (bei dynamischen Zugriffen)
134
- allPropertyAccesses.add(fullText);
135
- }
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);
136
90
  }
137
- }
138
- typescript_1.default.forEachChild(n, visit);
139
- }
140
- visit(node);
141
- // keep only PropertyAccessExpressions with a full path
142
- allPropertyAccesses.forEach(path => {
143
- if (!partialPaths.has(path)) {
144
- sourceFields.add(path);
91
+ typescript_1.default.forEachChild(modifier, addAllChildren);
145
92
  }
146
93
  });
147
- return Array.from(sourceFields);
148
94
  }
149
- // extract nested properties from an object literal expression
150
- function extractNestedProperties(obj, parentPath) {
151
- const nestedResults = [];
152
- obj.properties.forEach(prop => {
153
- if (typescript_1.default.isPropertyAssignment(prop) && prop.name) {
154
- const propName = prop.name.getText();
155
- const fieldPath = parentPath ? `${parentPath}.${propName}` : propName;
156
- const initializer = prop.initializer;
157
- // process nested objects recursively
158
- if (typescript_1.default.isObjectLiteralExpression(initializer)) {
159
- // extracth all PropertyAccessExpressions in the initializer
160
- const sourceFields = findPropertyAccesses(initializer);
161
- if (sourceFields.length > 0) {
162
- nestedResults.push({
163
- targetField: fieldPath,
164
- sourceField: sourceFields.join(', '),
165
- transformation: 'Composite Object'
166
- });
167
- }
168
- else {
169
- const nestedProps = extractNestedProperties(initializer, fieldPath);
170
- nestedResults.push(...nestedProps);
171
- // set constant value if no nested properties are found
172
- if (nestedProps.length === 0) {
173
- nestedResults.push({
174
- targetField: fieldPath,
175
- sourceField: 'Constant value',
176
- transformation: initializer.getText()
177
- });
178
- }
179
- }
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
+ });
180
157
  }
181
158
  else {
182
- // regular property assignment
183
- if (typescript_1.default.isPropertyAccessExpression(initializer)) {
184
- nestedResults.push({
185
- targetField: fieldPath,
186
- sourceField: initializer.getText()
187
- });
188
- }
189
- else if (typescript_1.default.isCallExpression(initializer)) {
190
- // find all PropertyAccessExpressions in the arguments of the function call
191
- const sourceFields = initializer.arguments.flatMap(arg => findPropertyAccesses(arg));
192
- nestedResults.push({
193
- targetField: fieldPath,
194
- sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.arguments.map(arg => arg.getText()).join(', '),
195
- transformation: initializer.expression.getText()
196
- });
197
- }
198
- else {
199
- const sourceFields = findPropertyAccesses(initializer);
200
- if (sourceFields.length > 0) {
201
- nestedResults.push({
202
- targetField: fieldPath,
203
- sourceField: sourceFields.join(', '),
204
- transformation: initializer.kind !== typescript_1.default.SyntaxKind.StringLiteral &&
205
- initializer.kind !== typescript_1.default.SyntaxKind.NumericLiteral &&
206
- initializer.kind !== typescript_1.default.SyntaxKind.TrueKeyword &&
207
- initializer.kind !== typescript_1.default.SyntaxKind.FalseKeyword ?
208
- 'Transformed' : 'Direct mapping'
209
- });
210
- }
211
- else {
212
- nestedResults.push({
213
- targetField: fieldPath,
214
- sourceField: 'Constant value',
215
- transformation: initializer.getText()
216
- });
217
- }
218
- }
159
+ // Constant values
160
+ results.push({
161
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
162
+ sourceField: "Constant value",
163
+ transformation: initializer.getText()
164
+ });
219
165
  }
220
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
+ }
221
177
  });
222
- return nestedResults;
178
+ return result;
223
179
  }
224
- // iterative AST traversal
225
- function visit(node) {
226
- // analysis for VariableStatement
227
- if (typescript_1.default.isVariableStatement(node)) {
228
- node.declarationList.declarations.forEach(declaration => {
229
- if (declaration.initializer && typescript_1.default.isObjectLiteralExpression(declaration.initializer) &&
230
- declaration.name && typescript_1.default.isIdentifier(declaration.name)) {
231
- // save variable with object literal initializer
232
- objectVariables.set(declaration.name.getText(), declaration.initializer);
233
- }
234
- });
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
+ }
235
215
  }
236
- // search for ReturnStatement
237
- if (typescript_1.default.isReturnStatement(node) && node.expression) {
238
- let objectLiteral;
239
- let expression = node.expression;
240
- // Handle type assertions
241
- if (typescript_1.default.isAsExpression(expression)) {
242
- 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;
243
224
  }
244
- // Handle method calls that have an object parameter
245
- if (typescript_1.default.isCallExpression(expression) && expression.arguments.length > 0) {
246
- const firstArg = expression.arguments[0];
247
- if (typescript_1.default.isIdentifier(firstArg)) {
248
- const variableName = firstArg.getText();
249
- const varObjectLiteral = objectVariables.get(variableName);
250
- if (varObjectLiteral) {
251
- objectLiteral = varObjectLiteral;
252
- }
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());
230
+ }
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}']`);
253
239
  }
254
- else if (typescript_1.default.isObjectLiteralExpression(firstArg)) {
255
- objectLiteral = firstArg;
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}']`);
256
247
  }
257
- }
258
- // Existing cases
259
- else if (typescript_1.default.isObjectLiteralExpression(expression)) {
260
- objectLiteral = expression;
261
- }
262
- else if (typescript_1.default.isIdentifier(expression)) {
263
- const variableName = expression.getText();
264
- const varObjectLiteral = objectVariables.get(variableName);
265
- if (varObjectLiteral) {
266
- objectLiteral = varObjectLiteral;
248
+ else {
249
+ sourceFields.add(n.getText());
267
250
  }
268
251
  }
269
- // if object literal is found, extract mappings from it
270
- if (objectLiteral) {
271
- // analyze all properties in the object literal
272
- objectLiteral.properties.forEach(prop => {
273
- // im Hauptteil der visit-Funktion, bei der Analyse der Property-Initialisierungen
274
- if (typescript_1.default.isPropertyAssignment(prop)) {
275
- const targetField = prop.name.getText();
276
- const initializer = prop.initializer;
277
- // simple PropertyAccessExpression
278
- if (typescript_1.default.isPropertyAccessExpression(initializer)) {
279
- results.push({
280
- targetField,
281
- sourceField: initializer.getText()
282
- });
283
- }
284
- // Element-Zugriff: obj['property']
285
- else if (typescript_1.default.isElementAccessExpression(initializer)) {
286
- const expression = initializer.expression;
287
- let baseName = "";
288
- // Finde den Basis-Variablennamen
289
- if (typescript_1.default.isPropertyAccessExpression(expression)) {
290
- const baseExp = expression.expression;
291
- if (typescript_1.default.isIdentifier(baseExp)) {
292
- baseName = baseExp.getText();
293
- }
294
- }
295
- else if (typescript_1.default.isIdentifier(expression)) {
296
- baseName = expression.getText();
297
- }
298
- // Nur hinzufügen, wenn es ein Parameter oder 'this' ist
299
- if (parameterNames.has(baseName) || baseName === "this") {
300
- let sourceFieldText = initializer.getText();
301
- // Versuche eine lesbarere Form zu erstellen
302
- if (typescript_1.default.isStringLiteral(initializer.argumentExpression)) {
303
- const propertyName = initializer.argumentExpression.text;
304
- sourceFieldText = `${baseName}.properties['${propertyName}']`;
305
- }
306
- results.push({
307
- targetField,
308
- sourceField: sourceFieldText
309
- });
310
- }
311
- }
312
- // complex case: FunctionCallExpression
313
- else if (typescript_1.default.isCallExpression(initializer)) {
314
- // find all PropertyAccessExpressions in the arguments of the function call
315
- const sourceFields = initializer.arguments.flatMap(arg => findPropertyAccesses(arg));
316
- results.push({
317
- targetField,
318
- sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.arguments.map(arg => arg.getText()).join(', '),
319
- transformation: initializer.expression.getText()
320
- });
321
- }
322
- // complex case: nested ObjectLiteralExpression
323
- else if (typescript_1.default.isObjectLiteralExpression(initializer)) {
324
- // extract all nested mappings from the nested object literal
325
- const nestedMappings = extractNestedProperties(initializer, targetField);
326
- results.push(...nestedMappings);
327
- }
328
- // other cases: constant value or transformation
329
- else {
330
- const sourceFields = findPropertyAccesses(initializer);
331
- if (sourceFields.length > 0) {
332
- results.push({
333
- targetField,
334
- sourceField: sourceFields.join(', '),
335
- transformation: initializer.kind !== typescript_1.default.SyntaxKind.StringLiteral &&
336
- initializer.kind !== typescript_1.default.SyntaxKind.NumericLiteral &&
337
- initializer.kind !== typescript_1.default.SyntaxKind.TrueKeyword &&
338
- initializer.kind !== typescript_1.default.SyntaxKind.FalseKeyword ?
339
- 'Transformed' : 'Direct mapping'
340
- });
341
- }
342
- else {
343
- results.push({
344
- targetField,
345
- sourceField: 'Constant value',
346
- transformation: initializer.getText()
347
- });
348
- }
349
- }
350
- }
351
- });
352
- }
252
+ typescript_1.default.forEachChild(n, visit);
353
253
  }
354
- // recursive call for all child nodes
355
- typescript_1.default.forEachChild(node, visit);
254
+ visit(node);
255
+ return Array.from(sourceFields);
356
256
  }
357
- visit(methodNode);
257
+ // Run our analysis passes
258
+ collectVariables(methodNode);
259
+ analyzePropertyAssignments(methodNode);
358
260
  return results;
359
261
  }
360
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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"}