@base44/vite-plugin 0.2.27 → 0.2.29

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 (77) hide show
  1. package/dist/capabilities/inline-edit/controller.d.ts.map +1 -1
  2. package/dist/capabilities/inline-edit/controller.js +9 -3
  3. package/dist/capabilities/inline-edit/controller.js.map +1 -1
  4. package/dist/capabilities/inline-edit/dom-utils.d.ts +1 -0
  5. package/dist/capabilities/inline-edit/dom-utils.d.ts.map +1 -1
  6. package/dist/capabilities/inline-edit/dom-utils.js +17 -7
  7. package/dist/capabilities/inline-edit/dom-utils.js.map +1 -1
  8. package/dist/capabilities/inline-edit/index.d.ts +1 -1
  9. package/dist/capabilities/inline-edit/index.d.ts.map +1 -1
  10. package/dist/capabilities/inline-edit/types.d.ts +4 -0
  11. package/dist/capabilities/inline-edit/types.d.ts.map +1 -1
  12. package/dist/consts.d.ts +11 -0
  13. package/dist/consts.d.ts.map +1 -0
  14. package/dist/consts.js +11 -0
  15. package/dist/consts.js.map +1 -0
  16. package/dist/injections/visual-edit-agent.d.ts.map +1 -1
  17. package/dist/injections/visual-edit-agent.js +26 -4
  18. package/dist/injections/visual-edit-agent.js.map +1 -1
  19. package/dist/jsx-processor.d.ts +3 -1
  20. package/dist/jsx-processor.d.ts.map +1 -1
  21. package/dist/jsx-processor.js +29 -6
  22. package/dist/jsx-processor.js.map +1 -1
  23. package/dist/jsx-utils.d.ts +9 -0
  24. package/dist/jsx-utils.d.ts.map +1 -1
  25. package/dist/jsx-utils.js +86 -0
  26. package/dist/jsx-utils.js.map +1 -1
  27. package/dist/processors/collection-id-processor.d.ts +20 -0
  28. package/dist/processors/collection-id-processor.d.ts.map +1 -0
  29. package/dist/processors/collection-id-processor.js +182 -0
  30. package/dist/processors/collection-id-processor.js.map +1 -0
  31. package/dist/processors/collection-item-field-processor.d.ts +39 -0
  32. package/dist/processors/collection-item-field-processor.d.ts.map +1 -0
  33. package/dist/processors/collection-item-field-processor.js +281 -0
  34. package/dist/processors/collection-item-field-processor.js.map +1 -0
  35. package/dist/processors/collection-item-id-processor.d.ts +12 -0
  36. package/dist/processors/collection-item-id-processor.d.ts.map +1 -0
  37. package/dist/processors/collection-item-id-processor.js +50 -0
  38. package/dist/processors/collection-item-id-processor.js.map +1 -0
  39. package/dist/processors/static-array-processor.d.ts +0 -3
  40. package/dist/processors/static-array-processor.d.ts.map +1 -1
  41. package/dist/processors/static-array-processor.js +2 -4
  42. package/dist/processors/static-array-processor.js.map +1 -1
  43. package/dist/processors/utils/collection-tracing-utils.d.ts +36 -0
  44. package/dist/processors/utils/collection-tracing-utils.d.ts.map +1 -0
  45. package/dist/processors/utils/collection-tracing-utils.js +390 -0
  46. package/dist/processors/utils/collection-tracing-utils.js.map +1 -0
  47. package/dist/processors/utils/shared-utils.d.ts +96 -0
  48. package/dist/processors/utils/shared-utils.d.ts.map +1 -0
  49. package/dist/processors/utils/shared-utils.js +600 -0
  50. package/dist/processors/utils/shared-utils.js.map +1 -0
  51. package/dist/statics/index.mjs +2 -2
  52. package/dist/statics/index.mjs.map +1 -1
  53. package/dist/visual-edit-plugin.d.ts +0 -1
  54. package/dist/visual-edit-plugin.d.ts.map +1 -1
  55. package/dist/visual-edit-plugin.js +29 -178
  56. package/dist/visual-edit-plugin.js.map +1 -1
  57. package/package.json +1 -1
  58. package/src/capabilities/inline-edit/controller.ts +35 -29
  59. package/src/capabilities/inline-edit/dom-utils.ts +14 -4
  60. package/src/capabilities/inline-edit/index.ts +1 -1
  61. package/src/capabilities/inline-edit/types.ts +5 -0
  62. package/src/consts.ts +11 -0
  63. package/src/injections/visual-edit-agent.ts +33 -4
  64. package/src/jsx-processor.ts +36 -14
  65. package/src/jsx-utils.ts +116 -0
  66. package/src/processors/collection-id-processor.ts +261 -0
  67. package/src/processors/collection-item-field-processor.ts +433 -0
  68. package/src/processors/collection-item-id-processor.ts +69 -0
  69. package/src/processors/static-array-processor.ts +7 -4
  70. package/src/processors/utils/collection-tracing-utils.ts +507 -0
  71. package/src/processors/utils/shared-utils.ts +785 -0
  72. package/src/visual-edit-plugin.ts +34 -215
  73. package/dist/processors/shared-utils.d.ts +0 -19
  74. package/dist/processors/shared-utils.d.ts.map +0 -1
  75. package/dist/processors/shared-utils.js +0 -77
  76. package/dist/processors/shared-utils.js.map +0 -1
  77. package/src/processors/shared-utils.ts +0 -116
@@ -0,0 +1,20 @@
1
+ import type { NodePath } from "@babel/traverse";
2
+ import type * as t from "@babel/types";
3
+ export declare class CollectionIdProcessor {
4
+ private types;
5
+ private attributeUtils;
6
+ private pathUtils;
7
+ private expressionUtils;
8
+ private tracingUtils;
9
+ constructor(types: typeof t);
10
+ process(path: NodePath<t.JSXOpeningElement>): void;
11
+ private tryDirectMapInChildren;
12
+ private extractMapSource;
13
+ private traceMapCall;
14
+ private traceOptionalMapCall;
15
+ private callbackProducesJSX;
16
+ private tryGetByIdInChildren;
17
+ private checkChildForGetById;
18
+ private tryComponentRootWithCollectionProp;
19
+ }
20
+ //# sourceMappingURL=collection-id-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-id-processor.d.ts","sourceRoot":"","sources":["../../src/processors/collection-id-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAevC,qBAAa,qBAAqB;IAMpB,OAAO,CAAC,KAAK;IALzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,YAAY,CAAyB;gBAEzB,KAAK,EAAE,OAAO,CAAC;IAOnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAuBlD,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,kCAAkC;CAkC3C"}
@@ -0,0 +1,182 @@
1
+ import { DATA_COLLECTION_ID, DATA_COLLECTION_REFERENCE, MAX_JSX_DEPTH, } from "../consts.js";
2
+ import { JSXUtils } from "../jsx-utils.js";
3
+ import { JSXAttributeUtils, PathNavigationUtils, ExpressionAnalysisUtils, } from "./utils/shared-utils.js";
4
+ import { CollectionTracingUtils } from "./utils/collection-tracing-utils.js";
5
+ export class CollectionIdProcessor {
6
+ types;
7
+ attributeUtils;
8
+ pathUtils;
9
+ expressionUtils;
10
+ tracingUtils;
11
+ constructor(types) {
12
+ this.types = types;
13
+ this.attributeUtils = new JSXAttributeUtils(types);
14
+ this.pathUtils = new PathNavigationUtils(types);
15
+ this.expressionUtils = new ExpressionAnalysisUtils(types);
16
+ this.tracingUtils = new CollectionTracingUtils(types);
17
+ }
18
+ process(path) {
19
+ if (this.attributeUtils.hasAttribute(path, DATA_COLLECTION_ID))
20
+ return;
21
+ const info = this.tryDirectMapInChildren(path) ??
22
+ this.tryGetByIdInChildren(path) ??
23
+ this.tryComponentRootWithCollectionProp(path);
24
+ if (!info)
25
+ return;
26
+ const target = this.pathUtils.findDOMElementTarget(path) ?? path;
27
+ this.attributeUtils.addStringAttribute(target, DATA_COLLECTION_ID, info.id);
28
+ if (info.references.length > 0) {
29
+ this.attributeUtils.addStringAttribute(target, DATA_COLLECTION_REFERENCE, info.references.join(","));
30
+ }
31
+ }
32
+ tryDirectMapInChildren(path) {
33
+ const jsxElement = path.parentPath;
34
+ if (!jsxElement?.isJSXElement())
35
+ return null;
36
+ const children = jsxElement.get("children");
37
+ for (const child of children) {
38
+ if (!child.isJSXExpressionContainer())
39
+ continue;
40
+ const expression = child.get("expression");
41
+ if (expression.isJSXEmptyExpression())
42
+ continue;
43
+ const mapSource = this.extractMapSource(expression);
44
+ if (mapSource)
45
+ return mapSource;
46
+ }
47
+ return null;
48
+ }
49
+ extractMapSource(expr) {
50
+ if (expr.isCallExpression()) {
51
+ return this.traceMapCall(expr);
52
+ }
53
+ if (expr.isLogicalExpression()) {
54
+ if (expr.node.operator === "&&") {
55
+ const right = expr.get("right");
56
+ return this.extractMapSource(right);
57
+ }
58
+ }
59
+ if (expr.isConditionalExpression()) {
60
+ const consequent = expr.get("consequent");
61
+ const alternate = expr.get("alternate");
62
+ return (this.extractMapSource(consequent) ?? this.extractMapSource(alternate));
63
+ }
64
+ if (expr.isOptionalCallExpression()) {
65
+ return this.traceOptionalMapCall(expr);
66
+ }
67
+ return null;
68
+ }
69
+ traceMapCall(callPath) {
70
+ const callee = callPath.get("callee");
71
+ if (!callee.isMemberExpression())
72
+ return null;
73
+ const property = callee.get("property");
74
+ if (!property.isIdentifier() ||
75
+ (property.node.name !== "map" && property.node.name !== "flatMap")) {
76
+ return null;
77
+ }
78
+ if (!this.callbackProducesJSX(callPath))
79
+ return null;
80
+ const arrayObj = callee.get("object");
81
+ return this.tracingUtils.traceCollectionSource(arrayObj);
82
+ }
83
+ traceOptionalMapCall(callPath) {
84
+ const callee = callPath.get("callee");
85
+ if (!callee.isMemberExpression() &&
86
+ !callee.isOptionalMemberExpression()) {
87
+ return null;
88
+ }
89
+ const property = callee.get("property");
90
+ if (!property.isIdentifier() ||
91
+ (property.node.name !== "map" && property.node.name !== "flatMap")) {
92
+ return null;
93
+ }
94
+ const arrayObj = callee.get("object");
95
+ return this.tracingUtils.traceCollectionSource(arrayObj);
96
+ }
97
+ callbackProducesJSX(callPath) {
98
+ const args = callPath.get("arguments");
99
+ const callback = args[0];
100
+ if (!callback)
101
+ return false;
102
+ if (callback.isArrowFunctionExpression()) {
103
+ const body = callback.get("body");
104
+ if (body.isBlockStatement()) {
105
+ return JSXUtils.doesBlockReturnJSX(body.node);
106
+ }
107
+ return JSXUtils.producesJSX(body.node);
108
+ }
109
+ if (callback.isFunctionExpression()) {
110
+ return JSXUtils.doesBlockReturnJSX(callback.node.body);
111
+ }
112
+ return false;
113
+ }
114
+ tryGetByIdInChildren(path, depth = 0) {
115
+ if (depth > MAX_JSX_DEPTH)
116
+ return null;
117
+ const jsxElement = path.parentPath;
118
+ if (!jsxElement?.isJSXElement())
119
+ return null;
120
+ const children = jsxElement.get("children");
121
+ for (const child of children) {
122
+ const info = this.checkChildForGetById(child, depth);
123
+ if (info)
124
+ return info;
125
+ }
126
+ for (const attr of path.node.attributes) {
127
+ if (this.types.isJSXAttribute(attr) &&
128
+ attr.value &&
129
+ this.types.isJSXExpressionContainer(attr.value)) {
130
+ const expr = attr.value.expression;
131
+ if (this.types.isMemberExpression(expr)) {
132
+ const info = this.tracingUtils.traceGetByIdSource(path);
133
+ if (info)
134
+ return info;
135
+ }
136
+ }
137
+ }
138
+ return null;
139
+ }
140
+ checkChildForGetById(child, depth) {
141
+ if (child.isJSXExpressionContainer()) {
142
+ const expr = child.get("expression");
143
+ if (expr.isMemberExpression() ||
144
+ expr.isOptionalMemberExpression()) {
145
+ return this.tracingUtils.traceGetByIdSource(child);
146
+ }
147
+ }
148
+ if (child.isJSXElement()) {
149
+ const childOpening = child.get("openingElement");
150
+ return this.tryGetByIdInChildren(childOpening, depth + 1);
151
+ }
152
+ return null;
153
+ }
154
+ tryComponentRootWithCollectionProp(path) {
155
+ if (!this.pathUtils.isRootReturnElement(path))
156
+ return null;
157
+ const fn = this.pathUtils.findEnclosingFunction(path);
158
+ if (!fn)
159
+ return null;
160
+ let info = null;
161
+ fn.traverse({
162
+ CallExpression: (callPath) => {
163
+ if (info)
164
+ return;
165
+ const callee = callPath.get("callee");
166
+ if (!callee.isMemberExpression())
167
+ return;
168
+ const prop = callee.get("property");
169
+ if (!prop.isIdentifier() ||
170
+ (prop.node.name !== "map" && prop.node.name !== "flatMap")) {
171
+ return;
172
+ }
173
+ if (!this.callbackProducesJSX(callPath))
174
+ return;
175
+ const arrayObj = callee.get("object");
176
+ info = this.tracingUtils.traceCollectionSource(arrayObj);
177
+ },
178
+ });
179
+ return info;
180
+ }
181
+ }
182
+ //# sourceMappingURL=collection-id-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-id-processor.js","sourceRoot":"","sources":["../../src/processors/collection-id-processor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,OAAO,qBAAqB;IAMZ;IALZ,cAAc,CAAoB;IAClC,SAAS,CAAsB;IAC/B,eAAe,CAA0B;IACzC,YAAY,CAAyB;IAE7C,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,IAAmC;QACzC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,CAAC;YAAE,OAAO;QAEvE,MAAM,IAAI,GACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACjC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAEjE,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,kBAAkB,CACpC,MAAM,EACN,yBAAyB,EACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,IAAmC;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE;gBAAE,SAAS;YAEhD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,UAAU,CAAC,oBAAoB,EAAE;gBAAE,SAAS;YAEhD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CACrC,UAAoC,CACrC,CAAC;YACF,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB,CACtB,IAA4B;QAE5B,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAA2B,CAAC;gBAC1D,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAA2B,CAAC;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAA2B,CAAC;YAClE,OAAO,CACL,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAClB,QAAoC;QAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAAE,OAAO,IAAI,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;QACpD,IACE,CAAC,QAAQ,CAAC,YAAY,EAAE;YACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAClE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAA2B,CAAC;QAChE,OAAO,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEO,oBAAoB,CAC1B,QAA4C;QAE5C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IACE,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAC5B,CAAC,MAAM,CAAC,0BAA0B,EAAE,EACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAI,MAAuC,CAAC,GAAG,CAC3D,UAAU,CACC,CAAC;QACd,IACE,CAAC,QAAQ,CAAC,YAAY,EAAE;YACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAClE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAI,MAAuC,CAAC,GAAG,CAC3D,QAAQ,CACiB,CAAC;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEO,mBAAmB,CACzB,QAAoC;QAEpC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5B,IAAI,QAAQ,CAAC,yBAAyB,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBAC5B,OAAO,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,oBAAoB,CAC1B,IAAmC,EACnC,QAAgB,CAAC;QAEjB,IAAI,KAAK,GAAG,aAAa;YAAE,OAAO,IAAI,CAAC;QAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrD,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAED,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;gBACV,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,EAC/C,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACnC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACxD,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAC1B,KAAe,EACf,KAAa;QAEb,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACrC,IACE,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,0BAA0B,EAAE,EACjC,CAAC;gBACD,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kCAAkC,CACxC,IAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE3D,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAErB,IAAI,IAAI,GAA0B,IAAI,CAAC;QAEvC,EAAE,CAAC,QAAQ,CAAC;YACV,cAAc,EAAE,CAAC,QAAoC,EAAE,EAAE;gBACvD,IAAI,IAAI;oBAAE,OAAO;gBAEjB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;oBAAE,OAAO;gBAEzC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;gBAChD,IACE,CAAC,IAAI,CAAC,YAAY,EAAE;oBACpB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAC1D,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;oBAAE,OAAO;gBAEhD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAA2B,CAAC;gBAChE,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC3D,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ import type { NodePath } from "@babel/traverse";
2
+ import type * as t from "@babel/types";
3
+ export declare class DataItemFieldProcessor {
4
+ private types;
5
+ private attributeUtils;
6
+ private expressionUtils;
7
+ private staticUtils;
8
+ constructor(types: typeof t);
9
+ process(path: NodePath<t.JSXOpeningElement>): void;
10
+ private extractFieldFromChildren;
11
+ private extractFieldFromChild;
12
+ private extractFromExpressionContainer;
13
+ private extractFromMemberExpression;
14
+ private extractFromSimpleIdentifier;
15
+ private extractFromChildElement;
16
+ private extractFromImageElement;
17
+ private extractFromConditionalImage;
18
+ private tryAddItemId;
19
+ /**
20
+ * Build the ID expression for a given root object name.
21
+ * If a specific idField was resolved from a key attribute, generates root?.id (or root?._id).
22
+ * If unknown (cross-file component), generates root?.id || root?._id to cover both conventions.
23
+ */
24
+ private buildIdExpression;
25
+ /**
26
+ * Walk up the JSX tree to find a key attribute that accesses .id or ._id.
27
+ * Returns null when no key is found (e.g. cross-file component receiving props).
28
+ */
29
+ private resolveIdFieldName;
30
+ private extractIdFieldFromKey;
31
+ /**
32
+ * For simple identifiers from destructured component props like ({ name, price }),
33
+ * find or inject the id field in the ObjectPattern so we can reference it directly.
34
+ */
35
+ private tryAddItemIdFromDestructuredParams;
36
+ private tryAddItemIdFromParentComponent;
37
+ private findKeyWithId;
38
+ }
39
+ //# sourceMappingURL=collection-item-field-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-item-field-processor.d.ts","sourceRoot":"","sources":["../../src/processors/collection-item-field-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAavC,qBAAa,sBAAsB;IAKrB,OAAO,CAAC,KAAK;IAJzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,WAAW,CAAmB;gBAElB,KAAK,EAAE,OAAO,CAAC;IAMnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAoBlD,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,8BAA8B;IAwCtC,OAAO,CAAC,2BAA2B;IA0BnC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,uBAAuB;IAyC/B,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,YAAY;IAoCpB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,qBAAqB;IAwB7B;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IA6C1C,OAAO,CAAC,+BAA+B;IA8BvC,OAAO,CAAC,aAAa;CAmBtB"}
@@ -0,0 +1,281 @@
1
+ import { DATA_COLLECTION_ITEM_FIELD, DATA_COLLECTION_ITEM_ID, EXCLUDED_FIELDS, } from "../consts.js";
2
+ import { JSXUtils } from "../jsx-utils.js";
3
+ import { JSXAttributeUtils, ExpressionAnalysisUtils, StaticValueUtils, } from "./utils/shared-utils.js";
4
+ export class DataItemFieldProcessor {
5
+ types;
6
+ attributeUtils;
7
+ expressionUtils;
8
+ staticUtils;
9
+ constructor(types) {
10
+ this.types = types;
11
+ this.attributeUtils = new JSXAttributeUtils(types);
12
+ this.expressionUtils = new ExpressionAnalysisUtils(types);
13
+ this.staticUtils = new StaticValueUtils(types);
14
+ }
15
+ process(path) {
16
+ if (this.attributeUtils.hasAttribute(path, DATA_COLLECTION_ITEM_FIELD)) {
17
+ return;
18
+ }
19
+ const jsxElement = path.parentPath;
20
+ if (!jsxElement?.isJSXElement())
21
+ return;
22
+ const result = this.extractFieldFromChildren(jsxElement);
23
+ if (!result)
24
+ return;
25
+ this.attributeUtils.addStringAttribute(path, DATA_COLLECTION_ITEM_FIELD, result.fieldPath);
26
+ this.tryAddItemId(path, result.rootIdentifier, result.fieldPath);
27
+ }
28
+ extractFieldFromChildren(jsxElement) {
29
+ const children = jsxElement.get("children");
30
+ for (const child of children) {
31
+ const result = this.extractFieldFromChild(child);
32
+ if (result)
33
+ return result;
34
+ }
35
+ return null;
36
+ }
37
+ extractFieldFromChild(child) {
38
+ if (child.isJSXExpressionContainer()) {
39
+ return this.extractFromExpressionContainer(child);
40
+ }
41
+ if (child.isJSXElement()) {
42
+ return this.extractFromChildElement(child);
43
+ }
44
+ return null;
45
+ }
46
+ extractFromExpressionContainer(container) {
47
+ const expression = container.get("expression");
48
+ if (expression.isJSXEmptyExpression())
49
+ return null;
50
+ const expr = expression;
51
+ if (expr.isMemberExpression() || expr.isOptionalMemberExpression()) {
52
+ return this.extractFromMemberExpression(expr);
53
+ }
54
+ if (expr.isLogicalExpression() && expr.node.operator === "&&") {
55
+ const left = expr.get("left");
56
+ if (left.isMemberExpression() ||
57
+ left.isOptionalMemberExpression()) {
58
+ return this.extractFromMemberExpression(left);
59
+ }
60
+ }
61
+ if (expr.isCallExpression()) {
62
+ const callee = expr.get("callee");
63
+ if (callee.isMemberExpression()) {
64
+ const obj = callee.get("object");
65
+ if (obj.isMemberExpression() || obj.isOptionalMemberExpression()) {
66
+ return this.extractFromMemberExpression(obj);
67
+ }
68
+ }
69
+ }
70
+ if (expr.isIdentifier()) {
71
+ return this.extractFromSimpleIdentifier(expr);
72
+ }
73
+ return null;
74
+ }
75
+ extractFromMemberExpression(expr) {
76
+ const rootId = this.expressionUtils.extractRootIdentifier(expr.node);
77
+ if (!rootId)
78
+ return null;
79
+ if (this.staticUtils.isDerivedFromStaticData(rootId.name, expr)) {
80
+ return null;
81
+ }
82
+ const parts = this.expressionUtils.collectMemberExpressionPath(expr.node);
83
+ if (parts.length < 2)
84
+ return null;
85
+ const fieldParts = parts.slice(1);
86
+ const fieldPath = fieldParts.join(".");
87
+ if (EXCLUDED_FIELDS.includes(fieldPath))
88
+ return null;
89
+ if (fieldParts.some((p) => EXCLUDED_FIELDS.includes(p)))
90
+ return null;
91
+ return { fieldPath, rootIdentifier: rootId };
92
+ }
93
+ extractFromSimpleIdentifier(expr) {
94
+ const name = expr.node.name;
95
+ if (EXCLUDED_FIELDS.includes(name))
96
+ return null;
97
+ if (this.staticUtils.isDerivedFromStaticData(name, expr))
98
+ return null;
99
+ return { fieldPath: name, rootIdentifier: expr.node };
100
+ }
101
+ extractFromChildElement(child) {
102
+ const elementName = JSXUtils.getElementName(child.node.openingElement);
103
+ if (!elementName)
104
+ return null;
105
+ if (elementName === "Image" || elementName === "img") {
106
+ return this.extractFromImageElement(child);
107
+ }
108
+ const logicalParent = child.parentPath;
109
+ if (logicalParent?.isJSXExpressionContainer()) {
110
+ const logicalExpr = logicalParent.parentPath;
111
+ if (logicalExpr?.isLogicalExpression()) {
112
+ return this.extractFromConditionalImage(child);
113
+ }
114
+ }
115
+ return null;
116
+ }
117
+ extractFromImageElement(imageElement) {
118
+ const openingElement = imageElement.get("openingElement");
119
+ const attrs = openingElement.node.attributes;
120
+ for (const attr of attrs) {
121
+ if (this.types.isJSXAttribute(attr) &&
122
+ this.types.isJSXIdentifier(attr.name) &&
123
+ attr.name.name === "src") {
124
+ if (attr.value &&
125
+ this.types.isJSXExpressionContainer(attr.value) &&
126
+ this.types.isExpression(attr.value.expression) &&
127
+ !this.types.isJSXEmptyExpression(attr.value.expression)) {
128
+ const expr = attr.value.expression;
129
+ if (this.types.isMemberExpression(expr) ||
130
+ this.types.isOptionalMemberExpression(expr)) {
131
+ const rootId = this.expressionUtils.extractRootIdentifier(expr);
132
+ if (!rootId)
133
+ return null;
134
+ const parts = this.expressionUtils.collectMemberExpressionPath(expr);
135
+ if (parts.length < 2)
136
+ return null;
137
+ const fieldPath = parts.slice(1).join(".");
138
+ if (EXCLUDED_FIELDS.includes(fieldPath))
139
+ return null;
140
+ return { fieldPath, rootIdentifier: rootId };
141
+ }
142
+ }
143
+ }
144
+ }
145
+ return null;
146
+ }
147
+ extractFromConditionalImage(child) {
148
+ const elementName = JSXUtils.getElementName(child.node.openingElement);
149
+ if (elementName === "Image" || elementName === "img") {
150
+ return this.extractFromImageElement(child);
151
+ }
152
+ return null;
153
+ }
154
+ tryAddItemId(path, rootIdentifier, fieldPath) {
155
+ if (this.attributeUtils.hasAttribute(path, DATA_COLLECTION_ITEM_ID)) {
156
+ return;
157
+ }
158
+ const idField = this.resolveIdFieldName(path);
159
+ if (rootIdentifier.name === fieldPath) {
160
+ this.tryAddItemIdFromDestructuredParams(path, idField);
161
+ return;
162
+ }
163
+ const idExpr = this.buildIdExpression(rootIdentifier.name, idField);
164
+ const binding = path.scope.getBinding(rootIdentifier.name);
165
+ if (!binding) {
166
+ this.tryAddItemIdFromParentComponent(path, rootIdentifier, idField);
167
+ return;
168
+ }
169
+ if (binding.path.isVariableDeclarator() ||
170
+ binding.kind === "param") {
171
+ this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, idExpr);
172
+ }
173
+ }
174
+ /**
175
+ * Build the ID expression for a given root object name.
176
+ * If a specific idField was resolved from a key attribute, generates root?.id (or root?._id).
177
+ * If unknown (cross-file component), generates root?.id || root?._id to cover both conventions.
178
+ */
179
+ buildIdExpression(rootName, idField) {
180
+ if (idField) {
181
+ return this.types.optionalMemberExpression(this.types.identifier(rootName), this.types.identifier(idField), false, true);
182
+ }
183
+ return this.types.logicalExpression("||", this.types.optionalMemberExpression(this.types.identifier(rootName), this.types.identifier("id"), false, true), this.types.optionalMemberExpression(this.types.identifier(rootName), this.types.identifier("_id"), false, true));
184
+ }
185
+ /**
186
+ * Walk up the JSX tree to find a key attribute that accesses .id or ._id.
187
+ * Returns null when no key is found (e.g. cross-file component receiving props).
188
+ */
189
+ resolveIdFieldName(path) {
190
+ let current = path.parentPath;
191
+ while (current) {
192
+ if (current.isJSXElement()) {
193
+ const opening = current.get("openingElement");
194
+ const field = this.extractIdFieldFromKey(opening);
195
+ if (field)
196
+ return field;
197
+ }
198
+ current = current.parentPath;
199
+ }
200
+ return null;
201
+ }
202
+ extractIdFieldFromKey(path) {
203
+ for (const attr of path.node.attributes) {
204
+ if (this.types.isJSXAttribute(attr) &&
205
+ this.types.isJSXIdentifier(attr.name) &&
206
+ attr.name.name === "key" &&
207
+ attr.value &&
208
+ this.types.isJSXExpressionContainer(attr.value)) {
209
+ const expr = attr.value.expression;
210
+ if (this.types.isMemberExpression(expr) &&
211
+ this.types.isIdentifier(expr.property)) {
212
+ const name = expr.property.name;
213
+ if (name === "id" || name === "_id")
214
+ return name;
215
+ }
216
+ }
217
+ }
218
+ return null;
219
+ }
220
+ /**
221
+ * For simple identifiers from destructured component props like ({ name, price }),
222
+ * find or inject the id field in the ObjectPattern so we can reference it directly.
223
+ */
224
+ tryAddItemIdFromDestructuredParams(path, idField) {
225
+ const fn = path.getFunctionParent();
226
+ if (!fn)
227
+ return;
228
+ const params = fn.get("params");
229
+ for (const param of Array.isArray(params) ? params : [params]) {
230
+ if (!param.isObjectPattern())
231
+ continue;
232
+ for (const prop of param.get("properties")) {
233
+ if (prop.isObjectProperty() &&
234
+ this.types.isIdentifier(prop.node.key) &&
235
+ (prop.node.key.name === "id" || prop.node.key.name === "_id") &&
236
+ this.types.isIdentifier(prop.node.value)) {
237
+ this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, this.types.identifier(prop.node.value.name));
238
+ return;
239
+ }
240
+ }
241
+ const fieldToInject = idField ?? "id";
242
+ param.node.properties.push(this.types.objectProperty(this.types.identifier(fieldToInject), this.types.identifier(fieldToInject), false, true));
243
+ this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, this.types.identifier(fieldToInject));
244
+ return;
245
+ }
246
+ }
247
+ tryAddItemIdFromParentComponent(path, rootIdentifier, idField) {
248
+ let current = path.parentPath;
249
+ while (current) {
250
+ if (current.isJSXElement()) {
251
+ const opening = current.get("openingElement");
252
+ const name = JSXUtils.getElementName(opening.node);
253
+ if (name && JSXUtils.isCustomComponent(name)) {
254
+ const keyAttr = this.findKeyWithId(opening);
255
+ if (keyAttr) {
256
+ const idExpr = this.buildIdExpression(rootIdentifier.name, idField);
257
+ this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, idExpr);
258
+ return;
259
+ }
260
+ }
261
+ }
262
+ current = current.parentPath;
263
+ }
264
+ }
265
+ findKeyWithId(path) {
266
+ for (const attr of path.node.attributes) {
267
+ if (this.types.isJSXAttribute(attr) &&
268
+ this.types.isJSXIdentifier(attr.name) &&
269
+ attr.name.name === "key" &&
270
+ attr.value &&
271
+ this.types.isJSXExpressionContainer(attr.value)) {
272
+ const expr = attr.value.expression;
273
+ if (this.types.isExpression(expr)) {
274
+ return this.expressionUtils.isIdAccess(expr);
275
+ }
276
+ }
277
+ }
278
+ return false;
279
+ }
280
+ }
281
+ //# sourceMappingURL=collection-item-field-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-item-field-processor.js","sourceRoot":"","sources":["../../src/processors/collection-item-field-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { NodePath } from "@babel/traverse";
2
+ import type * as t from "@babel/types";
3
+ export declare class DataItemIdProcessor {
4
+ private types;
5
+ private attributeUtils;
6
+ private expressionUtils;
7
+ constructor(types: typeof t);
8
+ process(path: NodePath<t.JSXOpeningElement>): void;
9
+ private findKeyAttribute;
10
+ private extractKeyExpression;
11
+ }
12
+ //# sourceMappingURL=collection-item-id-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-item-id-processor.d.ts","sourceRoot":"","sources":["../../src/processors/collection-item-id-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAOvC,qBAAa,mBAAmB;IAIlB,OAAO,CAAC,KAAK;IAHzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAA0B;gBAE7B,KAAK,EAAE,OAAO,CAAC;IAKnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAwBlD,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,oBAAoB;CAY7B"}
@@ -0,0 +1,50 @@
1
+ import { DATA_COLLECTION_ITEM_ID } from "../consts.js";
2
+ import { JSXAttributeUtils, ExpressionAnalysisUtils, } from "./utils/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,yBAAyB,CAAC;AAEjC,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"}
@@ -1,8 +1,5 @@
1
1
  import type { NodePath } from "@babel/traverse";
2
2
  import type * as t from "@babel/types";
3
- export declare const DATA_ARR_INDEX = "data-arr-index";
4
- export declare const DATA_ARR_VARIABLE_NAME = "data-arr-variable-name";
5
- export declare const DATA_ARR_FIELD = "data-arr-field";
6
3
  export declare class StaticArrayProcessor {
7
4
  private types;
8
5
  private attributeUtils;
@@ -1 +1 @@
1
- {"version":3,"file":"static-array-processor.d.ts","sourceRoot":"","sources":["../../src/processors/static-array-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAGvC,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAW/C,qBAAa,oBAAoB;IAInB,OAAO,CAAC,KAAK;IAHzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,gBAAgB,CAAmB;gBAEvB,KAAK,EAAE,OAAO,CAAC;IAKnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAUlD,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,uBAAuB;CAKhC"}
1
+ {"version":3,"file":"static-array-processor.d.ts","sourceRoot":"","sources":["../../src/processors/static-array-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAmBvC,qBAAa,oBAAoB;IAInB,OAAO,CAAC,KAAK;IAHzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,gBAAgB,CAAmB;gBAEvB,KAAK,EAAE,OAAO,CAAC;IAKnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAUlD,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,uBAAuB;CAKhC"}