bridgelist 1.0.3 → 1.0.5

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,232 @@ function analyzeMethod(filePath, className, methodName) {
76
77
  }
77
78
  });
78
79
  }
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);
90
+ }
91
+ typescript_1.default.forEachChild(modifier, addAllChildren);
92
+ }
93
+ });
94
+ }
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
+ });
157
+ }
158
+ else {
159
+ // Constant values
160
+ results.push({
161
+ targetField: containerVar ? `${containerVar}.${targetField}` : targetField,
162
+ sourceField: "Constant value",
163
+ transformation: initializer.getText()
164
+ });
165
+ }
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
+ }
177
+ });
178
+ return result;
179
+ }
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
+ }
215
+ }
216
+ }
217
+ // Find all property accesses in an expression
79
218
  function findPropertyAccesses(node) {
80
219
  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();
220
+ const visitedNodes = new Set();
221
+ // Track most specific property paths
222
+ const allPropertyPaths = new Set();
223
+ const partialPropertyPaths = new Set();
85
224
  function visit(n) {
86
- // Normaler Property-Zugriff: obj.property
225
+ // Avoid duplicate processing
226
+ if (visitedNodes.has(n)) {
227
+ return;
228
+ }
229
+ visitedNodes.add(n);
230
+ // Skip decorator nodes
231
+ if (isPartOfDecorator(n)) {
232
+ return;
233
+ }
234
+ // Handle nested PropertyAccessExpression
87
235
  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());
236
+ // For nested property accesses, we want the full chain
237
+ // e.g., hubspotContact.properties.fieldName
238
+ let current = n;
239
+ let isFromParam = false;
240
+ // Traverse to the base of the expression
241
+ while (typescript_1.default.isPropertyAccessExpression(current.expression)) {
242
+ // Add each partial path to the set of partial paths
243
+ partialPropertyPaths.add(current.expression.getText());
94
244
  current = current.expression;
95
245
  }
96
- // now current is the base variable
97
- if (typescript_1.default.isIdentifier(current)) {
98
- baseName = current.getText();
246
+ // Check if the base is a parameter
247
+ if (typescript_1.default.isIdentifier(current.expression) &&
248
+ parameterNames.has(current.expression.getText())) {
249
+ isFromParam = true;
99
250
  }
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);
251
+ // If this is a property access based on a method parameter, add it
252
+ if (isFromParam) {
253
+ allPropertyPaths.add(n.getText());
105
254
  }
106
255
  }
107
- // Eckige Klammern-Zugriff: obj['property'] oder obj[variable]
108
- else if (typescript_1.default.isElementAccessExpression(n)) {
109
- const fullText = n.getText();
256
+ // Handle ElementAccessExpression (e.g., obj['property'] or obj[variable])
257
+ else if (typescript_1.default.isElementAccessExpression(n) &&
258
+ n.expression &&
259
+ typescript_1.default.isPropertyAccessExpression(n.expression)) {
110
260
  let current = n.expression;
111
- let baseName = "";
112
- // Navigiere durch verschachtelte PropertyAccessExpressions
113
- while (typescript_1.default.isPropertyAccessExpression(current)) {
114
- partialPaths.add(current.getText());
261
+ let isFromParam = false;
262
+ // Traverse to the base of the expression and track partial paths
263
+ while (typescript_1.default.isPropertyAccessExpression(current.expression)) {
264
+ partialPropertyPaths.add(current.expression.getText());
115
265
  current = current.expression;
116
266
  }
117
- // Wenn wir bei der Basis-Variable angelangt sind
118
- if (typescript_1.default.isIdentifier(current)) {
119
- baseName = current.getText();
267
+ // Check if the base is a parameter
268
+ if (typescript_1.default.isIdentifier(current.expression) &&
269
+ parameterNames.has(current.expression.getText())) {
270
+ isFromParam = true;
120
271
  }
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'])
272
+ // If this is an element access based on a method parameter
273
+ if (isFromParam) {
126
274
  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);
275
+ allPropertyPaths.add(`${n.expression.getText()}['${n.argumentExpression.text}']`);
276
+ }
277
+ else if (typescript_1.default.isBinaryExpression(n.argumentExpression) &&
278
+ n.argumentExpression.operatorToken.kind === typescript_1.default.SyntaxKind.PlusToken &&
279
+ typescript_1.default.isPropertyAccessExpression(n.argumentExpression.left) &&
280
+ typescript_1.default.isStringLiteral(n.argumentExpression.right)) {
281
+ const prefix = n.argumentExpression.left.getText();
282
+ const suffix = n.argumentExpression.right.text;
283
+ allPropertyPaths.add(`${n.expression.getText()}[${prefix} + '${suffix}']`);
131
284
  }
132
285
  else {
133
- // Andernfalls verwende den Originaltext (bei dynamischen Zugriffen)
134
- allPropertyAccesses.add(fullText);
286
+ allPropertyPaths.add(n.getText());
135
287
  }
288
+ // Add the base of the element access as a partial path
289
+ partialPropertyPaths.add(n.expression.getText());
136
290
  }
137
291
  }
138
292
  typescript_1.default.forEachChild(n, visit);
139
293
  }
140
294
  visit(node);
141
- // keep only PropertyAccessExpressions with a full path
142
- allPropertyAccesses.forEach(path => {
143
- if (!partialPaths.has(path)) {
295
+ // Only add property paths that are not partial paths
296
+ allPropertyPaths.forEach(path => {
297
+ if (!partialPropertyPaths.has(path)) {
144
298
  sourceFields.add(path);
145
299
  }
146
300
  });
147
301
  return Array.from(sourceFields);
148
302
  }
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
- }
180
- }
181
- 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
- }
219
- }
220
- }
221
- });
222
- return nestedResults;
223
- }
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
- });
235
- }
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;
243
- }
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
- }
253
- }
254
- else if (typescript_1.default.isObjectLiteralExpression(firstArg)) {
255
- objectLiteral = firstArg;
256
- }
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;
267
- }
268
- }
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
- }
353
- }
354
- // recursive call for all child nodes
355
- typescript_1.default.forEachChild(node, visit);
356
- }
357
- visit(methodNode);
303
+ // Run our analysis passes
304
+ collectVariables(methodNode);
305
+ analyzePropertyAssignments(methodNode);
358
306
  return results;
359
307
  }
360
308
  // 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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"}