@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.
- package/dist/processors/collection-item-id-processor.d.ts +8 -0
- package/dist/processors/collection-item-id-processor.d.ts.map +1 -1
- package/dist/processors/collection-item-id-processor.js +23 -2
- package/dist/processors/collection-item-id-processor.js.map +1 -1
- package/package.json +1 -1
- package/src/processors/collection-item-id-processor.ts +26 -3
|
@@ -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;
|
|
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"] —
|
|
130
|
-
return this.types.
|
|
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
|
@@ -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"] —
|
|
163
|
-
return this.types.
|
|
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
|
|