@base44-preview/vite-plugin 0.2.26-pr.42.7e00d38 → 0.2.26-pr.43.554d4c7

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.
Files changed (67) hide show
  1. package/dist/consts.d.ts +12 -0
  2. package/dist/consts.d.ts.map +1 -0
  3. package/dist/consts.js +12 -0
  4. package/dist/consts.js.map +1 -0
  5. package/dist/injections/visual-edit-agent.d.ts.map +1 -1
  6. package/dist/injections/visual-edit-agent.js +10 -303
  7. package/dist/injections/visual-edit-agent.js.map +1 -1
  8. package/dist/jsx-processor.d.ts +4 -1
  9. package/dist/jsx-processor.d.ts.map +1 -1
  10. package/dist/jsx-processor.js +33 -6
  11. package/dist/jsx-processor.js.map +1 -1
  12. package/dist/jsx-utils.d.ts +9 -0
  13. package/dist/jsx-utils.d.ts.map +1 -1
  14. package/dist/jsx-utils.js +86 -0
  15. package/dist/jsx-utils.js.map +1 -1
  16. package/dist/processors/collection-id-processor.d.ts +20 -0
  17. package/dist/processors/collection-id-processor.d.ts.map +1 -0
  18. package/dist/processors/collection-id-processor.js +182 -0
  19. package/dist/processors/collection-id-processor.js.map +1 -0
  20. package/dist/processors/collection-item-field-processor.d.ts +22 -0
  21. package/dist/processors/collection-item-field-processor.d.ts.map +1 -0
  22. package/dist/processors/collection-item-field-processor.js +206 -0
  23. package/dist/processors/collection-item-field-processor.js.map +1 -0
  24. package/dist/processors/collection-item-id-processor.d.ts +12 -0
  25. package/dist/processors/collection-item-id-processor.d.ts.map +1 -0
  26. package/dist/processors/collection-item-id-processor.js +50 -0
  27. package/dist/processors/collection-item-id-processor.js.map +1 -0
  28. package/dist/processors/collection-reference-field-processor.d.ts +31 -0
  29. package/dist/processors/collection-reference-field-processor.d.ts.map +1 -0
  30. package/dist/processors/collection-reference-field-processor.js +174 -0
  31. package/dist/processors/collection-reference-field-processor.js.map +1 -0
  32. package/dist/processors/collection-tracing-utils.d.ts +31 -0
  33. package/dist/processors/collection-tracing-utils.d.ts.map +1 -0
  34. package/dist/processors/collection-tracing-utils.js +326 -0
  35. package/dist/processors/collection-tracing-utils.js.map +1 -0
  36. package/dist/processors/shared-utils.d.ts +64 -0
  37. package/dist/processors/shared-utils.d.ts.map +1 -1
  38. package/dist/processors/shared-utils.js +464 -0
  39. package/dist/processors/shared-utils.js.map +1 -1
  40. package/dist/processors/static-array-processor.d.ts +2 -3
  41. package/dist/processors/static-array-processor.d.ts.map +1 -1
  42. package/dist/processors/static-array-processor.js +2 -3
  43. package/dist/processors/static-array-processor.js.map +1 -1
  44. package/dist/statics/index.mjs +1 -5
  45. package/dist/statics/index.mjs.map +1 -1
  46. package/dist/types.d.ts +5 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +2 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/visual-edit-plugin.d.ts +0 -1
  51. package/dist/visual-edit-plugin.d.ts.map +1 -1
  52. package/dist/visual-edit-plugin.js +29 -178
  53. package/dist/visual-edit-plugin.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/consts.ts +12 -0
  56. package/src/injections/visual-edit-agent.ts +10 -369
  57. package/src/jsx-processor.ts +41 -14
  58. package/src/jsx-utils.ts +116 -0
  59. package/src/processors/collection-id-processor.ts +261 -0
  60. package/src/processors/collection-item-field-processor.ts +309 -0
  61. package/src/processors/collection-item-id-processor.ts +69 -0
  62. package/src/processors/collection-reference-field-processor.ts +225 -0
  63. package/src/processors/collection-tracing-utils.ts +436 -0
  64. package/src/processors/shared-utils.ts +595 -0
  65. package/src/processors/static-array-processor.ts +6 -3
  66. package/src/types.ts +4 -0
  67. package/src/visual-edit-plugin.ts +34 -215
@@ -0,0 +1,50 @@
1
+ import { DATA_COLLECTION_ITEM_ID } from "../consts.js";
2
+ import { JSXAttributeUtils, ExpressionAnalysisUtils, } from "./shared-utils.js";
3
+ export class DataItemIdProcessor {
4
+ types;
5
+ attributeUtils;
6
+ expressionUtils;
7
+ constructor(types) {
8
+ this.types = types;
9
+ this.attributeUtils = new JSXAttributeUtils(types);
10
+ this.expressionUtils = new ExpressionAnalysisUtils(types);
11
+ }
12
+ process(path) {
13
+ if (this.attributeUtils.hasAttribute(path, DATA_COLLECTION_ITEM_ID)) {
14
+ return;
15
+ }
16
+ const keyAttr = this.findKeyAttribute(path);
17
+ if (!keyAttr)
18
+ return;
19
+ const expression = this.extractKeyExpression(keyAttr);
20
+ if (!expression)
21
+ return;
22
+ if (!this.expressionUtils.isIdAccess(expression))
23
+ return;
24
+ const optionalExpr = this.types.isMemberExpression(expression)
25
+ ? this.expressionUtils.createOptionalChainExpression(expression)
26
+ : expression;
27
+ this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, optionalExpr);
28
+ }
29
+ findKeyAttribute(path) {
30
+ for (const attr of path.node.attributes) {
31
+ if (this.types.isJSXAttribute(attr) &&
32
+ this.types.isJSXIdentifier(attr.name) &&
33
+ attr.name.name === "key") {
34
+ return attr;
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ extractKeyExpression(attr) {
40
+ if (!attr.value)
41
+ return null;
42
+ if (this.types.isJSXExpressionContainer(attr.value)) {
43
+ const expr = attr.value.expression;
44
+ if (this.types.isExpression(expr))
45
+ return expr;
46
+ }
47
+ return null;
48
+ }
49
+ }
50
+ //# sourceMappingURL=collection-item-id-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-item-id-processor.js","sourceRoot":"","sources":["../../src/processors/collection-item-id-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,mBAAmB;IAIV;IAHZ,cAAc,CAAoB;IAClC,eAAe,CAA0B;IAEjD,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CAAC,IAAmC;QACzC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO;QAEzD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,UAAU,CAAC;YAChE,CAAC,CAAC,UAAU,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC,IAAI,EACJ,uBAAuB,EACvB,YAAY,CACb,CAAC;IACJ,CAAC;IAEO,gBAAgB,CACtB,IAAmC;QAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IACE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EACxB,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAC1B,IAAoB;QAEpB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAE7B,IAAI,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ import type { NodePath } from "@babel/traverse";
2
+ import type * as t from "@babel/types";
3
+ export declare class ReferenceFieldProcessor {
4
+ private types;
5
+ private attributeUtils;
6
+ private expressionUtils;
7
+ private typeCheckUtils;
8
+ constructor(types: typeof t);
9
+ process(path: NodePath<t.JSXOpeningElement>): void;
10
+ /**
11
+ * Strategy A: Element is the direct return of a .map() callback
12
+ * whose array is a reference variable (initialized via type-check pattern).
13
+ */
14
+ private isReturnedFromReferenceMap;
15
+ /**
16
+ * Strategy B: Element is inside a && expression where the left operand
17
+ * references a field name that appears in an ancestor's data-collection-reference.
18
+ */
19
+ private isInsideReferenceLogicalExpression;
20
+ /**
21
+ * Strategy C: Element is inside a .map() chain on a reference property.
22
+ * e.g. item.relatedProducts.map(...) or item.relatedProducts.filter(...).map(...)
23
+ */
24
+ private isInReferencePropertyMapChain;
25
+ private findEnclosingMapCallback;
26
+ private isReferenceArray;
27
+ private extractFieldNameFromExpression;
28
+ private isFieldInAncestorReference;
29
+ private extractReferenceFieldFromMapChain;
30
+ }
31
+ //# sourceMappingURL=collection-reference-field-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-reference-field-processor.d.ts","sourceRoot":"","sources":["../../src/processors/collection-reference-field-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAWvC,qBAAa,uBAAuB;IAKtB,OAAO,CAAC,KAAK;IAJzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,cAAc,CAAiB;gBAEnB,KAAK,EAAE,OAAO,CAAC;IAMnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAoBlD;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAsBlC;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAiB1C;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAuBrC,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,iCAAiC;CAmC1C"}
@@ -0,0 +1,174 @@
1
+ import { DATA_COLLECTION_FIELD_REFERENCE, DATA_COLLECTION_REFERENCE, } from "../consts.js";
2
+ import { JSXAttributeUtils, ExpressionAnalysisUtils, TypeCheckUtils, } from "./shared-utils.js";
3
+ export class ReferenceFieldProcessor {
4
+ types;
5
+ attributeUtils;
6
+ expressionUtils;
7
+ typeCheckUtils;
8
+ constructor(types) {
9
+ this.types = types;
10
+ this.attributeUtils = new JSXAttributeUtils(types);
11
+ this.expressionUtils = new ExpressionAnalysisUtils(types);
12
+ this.typeCheckUtils = new TypeCheckUtils(types);
13
+ }
14
+ process(path) {
15
+ if (this.attributeUtils.hasAttribute(path, DATA_COLLECTION_FIELD_REFERENCE)) {
16
+ return;
17
+ }
18
+ if (this.isReturnedFromReferenceMap(path) ||
19
+ this.isInsideReferenceLogicalExpression(path) ||
20
+ this.isInReferencePropertyMapChain(path)) {
21
+ this.attributeUtils.addStringAttribute(path, DATA_COLLECTION_FIELD_REFERENCE, "true");
22
+ }
23
+ }
24
+ /**
25
+ * Strategy A: Element is the direct return of a .map() callback
26
+ * whose array is a reference variable (initialized via type-check pattern).
27
+ */
28
+ isReturnedFromReferenceMap(path) {
29
+ const jsxElement = path.parentPath;
30
+ if (!jsxElement?.isJSXElement())
31
+ return false;
32
+ const parent = jsxElement.parentPath;
33
+ if (!parent)
34
+ return false;
35
+ const callbackFn = this.findEnclosingMapCallback(parent);
36
+ if (!callbackFn)
37
+ return false;
38
+ const mapCall = callbackFn.parentPath;
39
+ if (!mapCall?.isCallExpression())
40
+ return false;
41
+ const callee = mapCall.get("callee");
42
+ if (!callee.isMemberExpression())
43
+ return false;
44
+ const arrayObj = callee.get("object");
45
+ return this.isReferenceArray(arrayObj);
46
+ }
47
+ /**
48
+ * Strategy B: Element is inside a && expression where the left operand
49
+ * references a field name that appears in an ancestor's data-collection-reference.
50
+ */
51
+ isInsideReferenceLogicalExpression(path) {
52
+ const jsxElement = path.parentPath;
53
+ if (!jsxElement?.isJSXElement())
54
+ return false;
55
+ const logicalParent = jsxElement.parentPath;
56
+ if (!logicalParent?.isLogicalExpression())
57
+ return false;
58
+ if (logicalParent.node.operator !== "&&")
59
+ return false;
60
+ const left = logicalParent.node.left;
61
+ const fieldName = this.extractFieldNameFromExpression(left);
62
+ if (!fieldName)
63
+ return false;
64
+ return this.isFieldInAncestorReference(path, fieldName);
65
+ }
66
+ /**
67
+ * Strategy C: Element is inside a .map() chain on a reference property.
68
+ * e.g. item.relatedProducts.map(...) or item.relatedProducts.filter(...).map(...)
69
+ */
70
+ isInReferencePropertyMapChain(path) {
71
+ const jsxElement = path.parentPath;
72
+ if (!jsxElement?.isJSXElement())
73
+ return false;
74
+ let current = jsxElement;
75
+ while (current) {
76
+ if (current.isCallExpression()) {
77
+ const callee = current.get("callee");
78
+ if (callee.isMemberExpression()) {
79
+ const fieldName = this.extractReferenceFieldFromMapChain(callee);
80
+ if (fieldName && this.isFieldInAncestorReference(path, fieldName)) {
81
+ return true;
82
+ }
83
+ }
84
+ }
85
+ current = current.parentPath;
86
+ }
87
+ return false;
88
+ }
89
+ findEnclosingMapCallback(path) {
90
+ let current = path;
91
+ while (current) {
92
+ if (current.isArrowFunctionExpression() || current.isFunctionExpression()) {
93
+ const parent = current.parentPath;
94
+ if (parent?.isCallExpression()) {
95
+ const callee = parent.get("callee");
96
+ if (callee.isMemberExpression()) {
97
+ const prop = callee.get("property");
98
+ if (prop.isIdentifier() &&
99
+ (prop.node.name === "map" || prop.node.name === "flatMap")) {
100
+ return current;
101
+ }
102
+ }
103
+ }
104
+ }
105
+ current = current.parentPath;
106
+ }
107
+ return null;
108
+ }
109
+ isReferenceArray(path) {
110
+ if (!path.isIdentifier())
111
+ return false;
112
+ const binding = path.scope.getBinding(path.node.name);
113
+ if (!binding?.path.isVariableDeclarator())
114
+ return false;
115
+ const init = binding.path.get("init");
116
+ if (!init.isConditionalExpression())
117
+ return false;
118
+ const test = init.node.test;
119
+ return this.typeCheckUtils.isReferenceTypeCheck(test);
120
+ }
121
+ extractFieldNameFromExpression(node) {
122
+ if (this.types.isMemberExpression(node)) {
123
+ const prop = node.property;
124
+ if (this.types.isIdentifier(prop))
125
+ return prop.name;
126
+ }
127
+ if (this.types.isOptionalMemberExpression(node)) {
128
+ const prop = node.property;
129
+ if (this.types.isIdentifier(prop))
130
+ return prop.name;
131
+ }
132
+ return null;
133
+ }
134
+ isFieldInAncestorReference(path, fieldName) {
135
+ const ancestor = this.attributeUtils.findAncestorWithAttribute(path, DATA_COLLECTION_REFERENCE);
136
+ if (!ancestor)
137
+ return false;
138
+ const refValue = this.attributeUtils.getAttributeStringValue(ancestor, DATA_COLLECTION_REFERENCE);
139
+ if (!refValue)
140
+ return false;
141
+ const references = refValue.split(",").map((r) => r.trim());
142
+ return references.includes(fieldName);
143
+ }
144
+ extractReferenceFieldFromMapChain(callee) {
145
+ const prop = callee.get("property");
146
+ if (!prop.isIdentifier())
147
+ return null;
148
+ const methodName = prop.node.name;
149
+ const obj = callee.get("object");
150
+ if (methodName === "map" || methodName === "flatMap") {
151
+ if (obj.isMemberExpression()) {
152
+ const fieldProp = obj.get("property");
153
+ if (fieldProp.isIdentifier())
154
+ return fieldProp.node.name;
155
+ }
156
+ }
157
+ if (methodName === "map" || methodName === "flatMap") {
158
+ if (obj.isCallExpression()) {
159
+ const innerCallee = obj.get("callee");
160
+ if (innerCallee.isMemberExpression()) {
161
+ return this.extractReferenceFieldFromMapChain(innerCallee);
162
+ }
163
+ }
164
+ }
165
+ if (["filter", "sort", "slice"].includes(methodName) &&
166
+ obj.isMemberExpression()) {
167
+ const fieldProp = obj.get("property");
168
+ if (fieldProp.isIdentifier())
169
+ return fieldProp.node.name;
170
+ }
171
+ return null;
172
+ }
173
+ }
174
+ //# sourceMappingURL=collection-reference-field-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-reference-field-processor.js","sourceRoot":"","sources":["../../src/processors/collection-reference-field-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { NodePath } from "@babel/traverse";
2
+ import type * as t from "@babel/types";
3
+ import type { CollectionInfo } from "../types.js";
4
+ export declare class CollectionTracingUtils {
5
+ private types;
6
+ private expressionUtils;
7
+ private bindingUtils;
8
+ private callUtils;
9
+ private visitedSetters;
10
+ private visitedGetByIdSetters;
11
+ constructor(types: typeof t);
12
+ resetVisited(): void;
13
+ traceCollectionSource(path: NodePath<t.Expression>): CollectionInfo | null;
14
+ private traceExpression;
15
+ private traceIdentifierToCollection;
16
+ private traceVariableDeclarator;
17
+ private traceUseStateSetter;
18
+ private traceMemberExpression;
19
+ private traceCallExpression;
20
+ private checkDirectServiceCall;
21
+ private traceArrayDestructuring;
22
+ private traceObjectDestructuring;
23
+ private tracePromiseAllElement;
24
+ private traceParameterToCollection;
25
+ private traceArrayExpression;
26
+ private getFunctionName;
27
+ private getJSXElementName;
28
+ traceGetByIdSource(path: NodePath): CollectionInfo | null;
29
+ private findGetByIdInScope;
30
+ }
31
+ //# sourceMappingURL=collection-tracing-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-tracing-utils.d.ts","sourceRoot":"","sources":["../../src/processors/collection-tracing-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,qBAAa,sBAAsB;IAOrB,OAAO,CAAC,KAAK;IANzB,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,qBAAqB,CAAqB;gBAE9B,KAAK,EAAE,OAAO,CAAC;IAMnC,YAAY,IAAI,IAAI;IAKpB,qBAAqB,CACnB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAC3B,cAAc,GAAG,IAAI;IAKxB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,2BAA2B;IAkBnC,OAAO,CAAC,uBAAuB;IAkD/B,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,qBAAqB;IAgC7B,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,uBAAuB;IA4B/B,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,0BAA0B;IA4DlC,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;IAOzB,kBAAkB,CAChB,IAAI,EAAE,QAAQ,GACb,cAAc,GAAG,IAAI;IAKxB,OAAO,CAAC,kBAAkB;CAqB3B"}
@@ -0,0 +1,326 @@
1
+ import { ExpressionAnalysisUtils, BindingUtils, CallExpressionUtils, } from "./shared-utils.js";
2
+ export class CollectionTracingUtils {
3
+ types;
4
+ expressionUtils;
5
+ bindingUtils;
6
+ callUtils;
7
+ visitedSetters = new Set();
8
+ visitedGetByIdSetters = new Set();
9
+ constructor(types) {
10
+ this.types = types;
11
+ this.expressionUtils = new ExpressionAnalysisUtils(types);
12
+ this.bindingUtils = new BindingUtils(types);
13
+ this.callUtils = new CallExpressionUtils(types);
14
+ }
15
+ resetVisited() {
16
+ this.visitedSetters.clear();
17
+ this.visitedGetByIdSetters.clear();
18
+ }
19
+ traceCollectionSource(path) {
20
+ this.resetVisited();
21
+ return this.traceExpression(path);
22
+ }
23
+ traceExpression(path) {
24
+ if (path.isIdentifier()) {
25
+ return this.traceIdentifierToCollection(path);
26
+ }
27
+ if (path.isMemberExpression()) {
28
+ return this.traceMemberExpression(path);
29
+ }
30
+ if (path.isCallExpression()) {
31
+ return this.traceCallExpression(path);
32
+ }
33
+ if (path.isAwaitExpression()) {
34
+ const argument = path.get("argument");
35
+ if (argument.isExpression()) {
36
+ return this.traceExpression(argument);
37
+ }
38
+ }
39
+ if (path.isArrayExpression()) {
40
+ return this.traceArrayExpression(path);
41
+ }
42
+ return null;
43
+ }
44
+ traceIdentifierToCollection(path) {
45
+ const name = path.node.name;
46
+ const binding = path.scope.getBinding(name);
47
+ if (!binding)
48
+ return null;
49
+ if (binding.path.isVariableDeclarator()) {
50
+ return this.traceVariableDeclarator(binding.path, name);
51
+ }
52
+ if (this.bindingUtils.isFunctionParameter(name, path)) {
53
+ return this.traceParameterToCollection(name, path);
54
+ }
55
+ return null;
56
+ }
57
+ traceVariableDeclarator(declaratorPath, variableName) {
58
+ const init = declaratorPath.get("init");
59
+ if (init.isCallExpression()) {
60
+ const directResult = this.checkDirectServiceCall(init);
61
+ if (directResult)
62
+ return directResult;
63
+ const useStateInfo = this.bindingUtils.isUseStateCall(init);
64
+ if (useStateInfo?.setterName) {
65
+ return this.traceUseStateSetter(useStateInfo.setterName, declaratorPath);
66
+ }
67
+ }
68
+ if (init.isAwaitExpression()) {
69
+ const awaitArg = init.get("argument");
70
+ if (awaitArg.isCallExpression()) {
71
+ const directResult = this.checkDirectServiceCall(awaitArg);
72
+ if (directResult)
73
+ return directResult;
74
+ }
75
+ return this.traceExpression(init);
76
+ }
77
+ if (init.isMemberExpression()) {
78
+ return this.traceExpression(init);
79
+ }
80
+ if (init.isIdentifier()) {
81
+ return this.traceExpression(init);
82
+ }
83
+ if (init.isCallExpression()) {
84
+ return this.traceExpression(init);
85
+ }
86
+ const id = declaratorPath.get("id");
87
+ if (id.isArrayPattern()) {
88
+ return this.traceArrayDestructuring(declaratorPath, id, variableName);
89
+ }
90
+ if (id.isObjectPattern()) {
91
+ return this.traceObjectDestructuring(declaratorPath, id, variableName);
92
+ }
93
+ return null;
94
+ }
95
+ traceUseStateSetter(setterName, declaratorPath) {
96
+ if (this.visitedSetters.has(setterName))
97
+ return null;
98
+ this.visitedSetters.add(setterName);
99
+ const functionScope = declaratorPath.getFunctionParent() ?? declaratorPath.scope.path;
100
+ const setterCall = this.bindingUtils.findSetterCallInScope(setterName, functionScope);
101
+ if (!setterCall)
102
+ return null;
103
+ const args = setterCall.get("arguments");
104
+ const firstArg = args[0];
105
+ if (!firstArg || !firstArg.isExpression())
106
+ return null;
107
+ return this.traceExpression(firstArg);
108
+ }
109
+ traceMemberExpression(path) {
110
+ const property = path.get("property");
111
+ const object = path.get("object");
112
+ if (property.isIdentifier() &&
113
+ property.node.name === "items") {
114
+ if (object.isExpression()) {
115
+ return this.traceExpression(object);
116
+ }
117
+ }
118
+ if (object.isIdentifier()) {
119
+ const objResult = this.traceIdentifierToCollection(object);
120
+ if (objResult && property.isIdentifier()) {
121
+ if (objResult.references.includes(property.node.name)) {
122
+ return { id: property.node.name, references: [] };
123
+ }
124
+ }
125
+ return objResult;
126
+ }
127
+ if (object.isExpression()) {
128
+ return this.traceExpression(object);
129
+ }
130
+ return null;
131
+ }
132
+ traceCallExpression(path) {
133
+ const directResult = this.checkDirectServiceCall(path);
134
+ if (directResult)
135
+ return directResult;
136
+ if (this.callUtils.isChainedArrayMethod(path.node)) {
137
+ const callee = path.get("callee");
138
+ if (callee.isMemberExpression()) {
139
+ const obj = callee.get("object");
140
+ return this.traceExpression(obj);
141
+ }
142
+ }
143
+ return null;
144
+ }
145
+ checkDirectServiceCall(path) {
146
+ const getAllInfo = this.callUtils.isGetAllCall(path.node);
147
+ if (getAllInfo) {
148
+ return {
149
+ id: getAllInfo.collectionName,
150
+ references: getAllInfo.references,
151
+ };
152
+ }
153
+ const getByIdInfo = this.callUtils.isGetByIdCall(path.node);
154
+ if (getByIdInfo) {
155
+ return {
156
+ id: getByIdInfo.collectionName,
157
+ references: getByIdInfo.multiRefFields,
158
+ };
159
+ }
160
+ return null;
161
+ }
162
+ traceArrayDestructuring(declaratorPath, pattern, variableName) {
163
+ const elements = pattern.get("elements");
164
+ const index = elements.findIndex((el) => el.isIdentifier() && el.node.name === variableName);
165
+ if (index === -1)
166
+ return null;
167
+ const init = declaratorPath.get("init");
168
+ if (init.hasNode() && this.bindingUtils.isPromiseAllCall(init)) {
169
+ return this.tracePromiseAllElement(init, index);
170
+ }
171
+ if (init.isCallExpression()) {
172
+ const useStateInfo = this.bindingUtils.isUseStateCall(init);
173
+ if (useStateInfo && index === 0 && useStateInfo.setterName) {
174
+ return this.traceUseStateSetter(useStateInfo.setterName, declaratorPath);
175
+ }
176
+ }
177
+ return null;
178
+ }
179
+ traceObjectDestructuring(declaratorPath, pattern, variableName) {
180
+ const init = declaratorPath.get("init");
181
+ if (!init.isExpression())
182
+ return null;
183
+ const prop = pattern.node.properties.find((p) => this.types.isObjectProperty(p) &&
184
+ this.types.isIdentifier(p.value) &&
185
+ p.value.name === variableName);
186
+ if (!prop || !this.types.isObjectProperty(prop))
187
+ return null;
188
+ const key = prop.key;
189
+ const propertyName = this.types.isIdentifier(key)
190
+ ? key.name
191
+ : this.types.isStringLiteral(key)
192
+ ? key.value
193
+ : null;
194
+ if (propertyName === "items") {
195
+ return this.traceExpression(init);
196
+ }
197
+ return this.traceExpression(init);
198
+ }
199
+ tracePromiseAllElement(init, index) {
200
+ let callExpr;
201
+ if (init.isAwaitExpression()) {
202
+ const arg = init.get("argument");
203
+ if (!arg.isCallExpression())
204
+ return null;
205
+ callExpr = arg;
206
+ }
207
+ else if (init.isCallExpression()) {
208
+ callExpr = init;
209
+ }
210
+ else {
211
+ return null;
212
+ }
213
+ const args = callExpr.get("arguments");
214
+ const firstArg = args[0];
215
+ if (!firstArg?.isArrayExpression())
216
+ return null;
217
+ const elements = firstArg.get("elements");
218
+ const targetElement = elements[index];
219
+ if (!targetElement || !targetElement.isExpression())
220
+ return null;
221
+ return this.traceExpression(targetElement);
222
+ }
223
+ traceParameterToCollection(paramName, path) {
224
+ const fn = path.getFunctionParent();
225
+ if (!fn)
226
+ return null;
227
+ const fnName = this.getFunctionName(fn);
228
+ if (!fnName)
229
+ return null;
230
+ const programPath = fn.findParent((p) => p.isProgram());
231
+ if (!programPath)
232
+ return null;
233
+ let result = null;
234
+ programPath.traverse({
235
+ JSXOpeningElement: (jsxPath) => {
236
+ if (result)
237
+ return;
238
+ const elementName = this.getJSXElementName(jsxPath.node);
239
+ if (elementName !== fnName)
240
+ return;
241
+ for (const attr of jsxPath.node.attributes) {
242
+ if (!this.types.isJSXAttribute(attr))
243
+ continue;
244
+ if (!this.types.isJSXIdentifier(attr.name))
245
+ continue;
246
+ if (attr.name.name !== paramName)
247
+ continue;
248
+ if (attr.value &&
249
+ this.types.isJSXExpressionContainer(attr.value) &&
250
+ this.types.isExpression(attr.value.expression)) {
251
+ const exprPath = jsxPath
252
+ .get("attributes")
253
+ .find((a) => a.isJSXAttribute() &&
254
+ this.types.isJSXIdentifier(a.node.name) &&
255
+ a.node.name.name === paramName);
256
+ if (exprPath && exprPath.isJSXAttribute()) {
257
+ const valPath = exprPath.get("value");
258
+ if (valPath.isJSXExpressionContainer()) {
259
+ const expr = valPath.get("expression");
260
+ if (expr.isExpression()) {
261
+ result = this.traceExpression(expr);
262
+ }
263
+ }
264
+ }
265
+ }
266
+ }
267
+ },
268
+ });
269
+ return result;
270
+ }
271
+ traceArrayExpression(path) {
272
+ const elements = path.get("elements");
273
+ for (const el of elements) {
274
+ if (el.isSpreadElement()) {
275
+ const arg = el.get("argument");
276
+ if (arg.isExpression()) {
277
+ const result = this.traceExpression(arg);
278
+ if (result)
279
+ return result;
280
+ }
281
+ }
282
+ }
283
+ return null;
284
+ }
285
+ getFunctionName(fn) {
286
+ if (fn.isFunctionDeclaration() && fn.node.id) {
287
+ return fn.node.id.name;
288
+ }
289
+ const parent = fn.parentPath;
290
+ if (parent?.isVariableDeclarator()) {
291
+ const id = parent.get("id");
292
+ if (id.isIdentifier())
293
+ return id.node.name;
294
+ }
295
+ return null;
296
+ }
297
+ getJSXElementName(node) {
298
+ if (this.types.isJSXIdentifier(node.name)) {
299
+ return node.name.name;
300
+ }
301
+ return null;
302
+ }
303
+ traceGetByIdSource(path) {
304
+ this.visitedGetByIdSetters.clear();
305
+ return this.findGetByIdInScope(path);
306
+ }
307
+ findGetByIdInScope(path) {
308
+ const fn = path.getFunctionParent() ?? path.scope.path;
309
+ let result = null;
310
+ fn.traverse({
311
+ CallExpression: (callPath) => {
312
+ if (result)
313
+ return;
314
+ const info = this.callUtils.isGetByIdCall(callPath.node);
315
+ if (info) {
316
+ result = {
317
+ id: info.collectionName,
318
+ references: info.multiRefFields,
319
+ };
320
+ }
321
+ },
322
+ });
323
+ return result;
324
+ }
325
+ }
326
+ //# sourceMappingURL=collection-tracing-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-tracing-utils.js","sourceRoot":"","sources":["../../src/processors/collection-tracing-utils.ts"],"names":[],"mappings":"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"}