@base44/vite-plugin 1.0.9 → 1.0.10

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.
@@ -19,6 +19,14 @@ export declare class DataItemIdProcessor {
19
19
  */
20
20
  processRootElement(path: NodePath<t.JSXOpeningElement>): void;
21
21
  private hasSpreadAttribute;
22
+ /**
23
+ * Returns true when `fn` is a direct callback argument to a `.map()` or
24
+ * `.flatMap()` call — i.e. the function is an iteration callback, not a
25
+ * component definition. This prevents injecting prop-forwarding into
26
+ * patterns like `[...Array(3)].map((_, i) => <div />)` where the first
27
+ * param may be `undefined`.
28
+ */
29
+ private isMapCallbackFunction;
22
30
  private functionContainsMapCall;
23
31
  /**
24
32
  * Returns an expression for reading `data-collection-item-id` from the component's
@@ -1 +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;AAWvC,qBAAa,mBAAmB;IAKlB,OAAO,CAAC,KAAK;IAJzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,SAAS,CAAsB;gBAEnB,KAAK,EAAE,OAAO,CAAC;IAMnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAwBlD;;;;;;;;;OASG;IACH,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAyB7D,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,uBAAuB;IA2B/B;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAqDvC,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,oBAAoB;CAY7B"}
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;AAWvC,qBAAa,mBAAmB;IAKlB,OAAO,CAAC,KAAK;IAJzB,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,SAAS,CAAsB;gBAEnB,KAAK,EAAE,OAAO,CAAC;IAMnC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAwBlD;;;;;;;;;OASG;IACH,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IA6B7D,OAAO,CAAC,kBAAkB;IAM1B;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,uBAAuB;IA2B/B;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAsDvC,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,oBAAoB;CAY7B"}
@@ -56,6 +56,10 @@ export class DataItemIdProcessor {
56
56
  const fn = this.pathUtils.findEnclosingFunction(path);
57
57
  if (!fn)
58
58
  return;
59
+ // Skip if this function IS a .map()/.flatMap() callback — it's an iteration
60
+ // function, not a component (e.g. [...Array(3)].map((_, i) => <div />))
61
+ if (this.isMapCallbackFunction(fn))
62
+ return;
59
63
  // Skip if this function maps over a collection — it's a container, not an item
60
64
  if (this.functionContainsMapCall(fn))
61
65
  return;
@@ -67,6 +71,22 @@ export class DataItemIdProcessor {
67
71
  hasSpreadAttribute(path) {
68
72
  return path.node.attributes.some((attr) => this.types.isJSXSpreadAttribute(attr));
69
73
  }
74
+ /**
75
+ * Returns true when `fn` is a direct callback argument to a `.map()` or
76
+ * `.flatMap()` call — i.e. the function is an iteration callback, not a
77
+ * component definition. This prevents injecting prop-forwarding into
78
+ * patterns like `[...Array(3)].map((_, i) => <div />)` where the first
79
+ * param may be `undefined`.
80
+ */
81
+ isMapCallbackFunction(fn) {
82
+ const parent = fn.parentPath;
83
+ if (!parent?.isCallExpression())
84
+ return false;
85
+ const callee = parent.node.callee;
86
+ return (this.types.isMemberExpression(callee) &&
87
+ this.types.isIdentifier(callee.property) &&
88
+ (callee.property.name === "map" || callee.property.name === "flatMap"));
89
+ }
70
90
  functionContainsMapCall(fn) {
71
91
  let found = false;
72
92
  const types = this.types;
@@ -126,8 +146,9 @@ export class DataItemIdProcessor {
126
146
  return this.types.identifier(FORWARDING_PARAM_NAME);
127
147
  }
128
148
  if (firstParam.isIdentifier()) {
129
- // props["data-collection-item-id"] — no params modification needed
130
- return this.types.memberExpression(this.types.identifier(firstParam.node.name), this.types.stringLiteral(DATA_COLLECTION_ITEM_ID), true // computed
149
+ // props?.["data-collection-item-id"] — optional access in case param is nullish
150
+ return this.types.optionalMemberExpression(this.types.identifier(firstParam.node.name), this.types.stringLiteral(DATA_COLLECTION_ITEM_ID), true, // computed
151
+ true // optional
131
152
  );
132
153
  }
133
154
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"collection-item-id-processor.js","sourceRoot":"","sources":["../../src/processors/collection-item-id-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection-item-id-processor.js","sourceRoot":"","sources":["../../src/processors/collection-item-id-processor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base44/vite-plugin",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "The Vite plugin for base44 based applications",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -71,6 +71,10 @@ export class DataItemIdProcessor {
71
71
  const fn = this.pathUtils.findEnclosingFunction(path);
72
72
  if (!fn) return;
73
73
 
74
+ // Skip if this function IS a .map()/.flatMap() callback — it's an iteration
75
+ // function, not a component (e.g. [...Array(3)].map((_, i) => <div />))
76
+ if (this.isMapCallbackFunction(fn)) return;
77
+
74
78
  // Skip if this function maps over a collection — it's a container, not an item
75
79
  if (this.functionContainsMapCall(fn)) return;
76
80
 
@@ -86,6 +90,24 @@ export class DataItemIdProcessor {
86
90
  );
87
91
  }
88
92
 
93
+ /**
94
+ * Returns true when `fn` is a direct callback argument to a `.map()` or
95
+ * `.flatMap()` call — i.e. the function is an iteration callback, not a
96
+ * component definition. This prevents injecting prop-forwarding into
97
+ * patterns like `[...Array(3)].map((_, i) => <div />)` where the first
98
+ * param may be `undefined`.
99
+ */
100
+ private isMapCallbackFunction(fn: NodePath<t.Function>): boolean {
101
+ const parent = fn.parentPath;
102
+ if (!parent?.isCallExpression()) return false;
103
+ const callee = parent.node.callee;
104
+ return (
105
+ this.types.isMemberExpression(callee) &&
106
+ this.types.isIdentifier(callee.property) &&
107
+ (callee.property.name === "map" || callee.property.name === "flatMap")
108
+ );
109
+ }
110
+
89
111
  private functionContainsMapCall(fn: NodePath<t.Function>): boolean {
90
112
  let found = false;
91
113
  const types = this.types;
@@ -159,11 +181,12 @@ export class DataItemIdProcessor {
159
181
  }
160
182
 
161
183
  if (firstParam.isIdentifier()) {
162
- // props["data-collection-item-id"] — no params modification needed
163
- return this.types.memberExpression(
184
+ // props?.["data-collection-item-id"] — optional access in case param is nullish
185
+ return this.types.optionalMemberExpression(
164
186
  this.types.identifier(firstParam.node.name),
165
187
  this.types.stringLiteral(DATA_COLLECTION_ITEM_ID),
166
- true // computed
188
+ true, // computed
189
+ true // optional
167
190
  );
168
191
  }
169
192