@base44-preview/vite-plugin 0.2.26-pr.43.056eecd → 0.2.26-pr.43.79e9508
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/consts.d.ts +0 -1
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +0 -1
- package/dist/consts.js.map +1 -1
- package/dist/jsx-processor.d.ts +0 -6
- package/dist/jsx-processor.d.ts.map +1 -1
- package/dist/jsx-processor.js +0 -15
- package/dist/jsx-processor.js.map +1 -1
- package/dist/processors/collection-item-field-processor.d.ts +5 -0
- package/dist/processors/collection-item-field-processor.d.ts.map +1 -1
- package/dist/processors/collection-item-field-processor.js +35 -9
- package/dist/processors/collection-item-field-processor.js.map +1 -1
- package/package.json +1 -1
- package/src/consts.ts +0 -2
- package/src/jsx-processor.ts +0 -22
- package/src/processors/collection-item-field-processor.ts +55 -9
package/dist/consts.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ export declare const DATA_COLLECTION_ITEM_ID = "data-collection-item-id";
|
|
|
3
3
|
export declare const DATA_COLLECTION_ITEM_FIELD = "data-collection-item-field";
|
|
4
4
|
export declare const DATA_COLLECTION_REFERENCE = "data-collection-reference";
|
|
5
5
|
export declare const DATA_COLLECTION_FIELD_REFERENCE = "data-collection-field-reference";
|
|
6
|
-
export declare const DATA_DYNAMIC = "data-dynamic";
|
|
7
6
|
export declare const DATA_ARR_INDEX = "data-arr-index";
|
|
8
7
|
export declare const DATA_ARR_VARIABLE_NAME = "data-arr-variable-name";
|
|
9
8
|
export declare const DATA_ARR_FIELD = "data-arr-field";
|
package/dist/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,+BAA+B,oCAAoC,CAAC;AACjF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,+BAA+B,oCAAoC,CAAC;AACjF,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,eAAO,MAAM,yBAAyB,UAAoB,CAAC;AAC3D,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,eAAe,UAAyB,CAAC"}
|
package/dist/consts.js
CHANGED
|
@@ -3,7 +3,6 @@ export const DATA_COLLECTION_ITEM_ID = "data-collection-item-id";
|
|
|
3
3
|
export const DATA_COLLECTION_ITEM_FIELD = "data-collection-item-field";
|
|
4
4
|
export const DATA_COLLECTION_REFERENCE = "data-collection-reference";
|
|
5
5
|
export const DATA_COLLECTION_FIELD_REFERENCE = "data-collection-field-reference";
|
|
6
|
-
export const DATA_DYNAMIC = "data-dynamic";
|
|
7
6
|
export const DATA_ARR_INDEX = "data-arr-index";
|
|
8
7
|
export const DATA_ARR_VARIABLE_NAME = "data-arr-variable-name";
|
|
9
8
|
export const DATA_ARR_FIELD = "data-arr-field";
|
package/dist/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AACjE,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAAG,iCAAiC,CAAC;AACjF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AACjE,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAAG,iCAAiC,CAAC;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC"}
|
package/dist/jsx-processor.d.ts
CHANGED
|
@@ -8,16 +8,10 @@ export declare class JSXProcessor {
|
|
|
8
8
|
private dataItemIdProcessor;
|
|
9
9
|
private dataItemFieldProcessor;
|
|
10
10
|
private staticArrayProcessor;
|
|
11
|
-
private attributeUtils;
|
|
12
11
|
constructor(types: typeof t, filename: string);
|
|
13
12
|
processJSXElement(path: NodePath<t.JSXOpeningElement>): void;
|
|
14
13
|
private addSourceLocationAttribute;
|
|
15
14
|
private addDynamicContentAttribute;
|
|
16
|
-
/**
|
|
17
|
-
* After all collection processors have run, check if any data-collection-*
|
|
18
|
-
* attributes were added and set data-dynamic="text" accordingly.
|
|
19
|
-
*/
|
|
20
|
-
private collectAndAddDynamicAttribute;
|
|
21
15
|
private hasAttribute;
|
|
22
16
|
private checkIfElementHasDynamicContent;
|
|
23
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-processor.d.ts","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"jsx-processor.d.ts","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAOvC,qBAAa,YAAY;IAQrB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IARlB,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,oBAAoB,CAAuB;gBAGzC,KAAK,EAAE,OAAO,CAAC,EACf,QAAQ,EAAE,MAAM;IAS1B,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAc5D,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,+BAA+B;CAgFxC"}
|
package/dist/jsx-processor.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { DATA_DYNAMIC } from "./consts.js";
|
|
2
1
|
import { CollectionIdProcessor } from "./processors/collection-id-processor.js";
|
|
3
2
|
import { ReferenceFieldProcessor } from "./processors/collection-reference-field-processor.js";
|
|
4
3
|
import { DataItemIdProcessor } from "./processors/collection-item-id-processor.js";
|
|
5
4
|
import { DataItemFieldProcessor } from "./processors/collection-item-field-processor.js";
|
|
6
5
|
import { StaticArrayProcessor } from "./processors/static-array-processor.js";
|
|
7
|
-
import { JSXAttributeUtils } from "./processors/shared-utils.js";
|
|
8
6
|
export class JSXProcessor {
|
|
9
7
|
types;
|
|
10
8
|
filename;
|
|
@@ -13,7 +11,6 @@ export class JSXProcessor {
|
|
|
13
11
|
dataItemIdProcessor;
|
|
14
12
|
dataItemFieldProcessor;
|
|
15
13
|
staticArrayProcessor;
|
|
16
|
-
attributeUtils;
|
|
17
14
|
constructor(types, filename) {
|
|
18
15
|
this.types = types;
|
|
19
16
|
this.filename = filename;
|
|
@@ -22,7 +19,6 @@ export class JSXProcessor {
|
|
|
22
19
|
this.dataItemIdProcessor = new DataItemIdProcessor(types);
|
|
23
20
|
this.dataItemFieldProcessor = new DataItemFieldProcessor(types);
|
|
24
21
|
this.staticArrayProcessor = new StaticArrayProcessor(types);
|
|
25
|
-
this.attributeUtils = new JSXAttributeUtils(types);
|
|
26
22
|
}
|
|
27
23
|
processJSXElement(path) {
|
|
28
24
|
if (this.hasAttribute(path, "data-source-location"))
|
|
@@ -34,7 +30,6 @@ export class JSXProcessor {
|
|
|
34
30
|
this.dataItemIdProcessor.process(path);
|
|
35
31
|
this.dataItemFieldProcessor.process(path);
|
|
36
32
|
this.staticArrayProcessor.process(path);
|
|
37
|
-
this.collectAndAddDynamicAttribute(path);
|
|
38
33
|
}
|
|
39
34
|
addSourceLocationAttribute(path) {
|
|
40
35
|
const { line, column } = path.node.loc?.start || { line: 1, column: 0 };
|
|
@@ -51,16 +46,6 @@ export class JSXProcessor {
|
|
|
51
46
|
attr.name.name === "data-source-location");
|
|
52
47
|
path.node.attributes.splice(sourceLocIdx + 1, 0, this.types.jsxAttribute(this.types.jsxIdentifier("data-dynamic-content"), this.types.stringLiteral(isDynamic ? "true" : "false")));
|
|
53
48
|
}
|
|
54
|
-
/**
|
|
55
|
-
* After all collection processors have run, check if any data-collection-*
|
|
56
|
-
* attributes were added and set data-dynamic="text" accordingly.
|
|
57
|
-
*/
|
|
58
|
-
collectAndAddDynamicAttribute(path) {
|
|
59
|
-
const hasCollectionField = this.attributeUtils.hasAttribute(path, "data-collection-item-field");
|
|
60
|
-
if (hasCollectionField) {
|
|
61
|
-
this.attributeUtils.addStringAttribute(path, DATA_DYNAMIC, "text");
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
49
|
hasAttribute(path, name) {
|
|
65
50
|
return path.node.attributes.some((attr) => this.types.isJSXAttribute(attr) &&
|
|
66
51
|
this.types.isJSXIdentifier(attr.name) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-processor.js","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"jsx-processor.js","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,11 @@ export declare class DataItemFieldProcessor {
|
|
|
16
16
|
private extractFromImageElement;
|
|
17
17
|
private extractFromConditionalImage;
|
|
18
18
|
private tryAddItemId;
|
|
19
|
+
/**
|
|
20
|
+
* For simple identifiers from destructured component props like ({ name, price }),
|
|
21
|
+
* find or inject _id in the ObjectPattern so we can reference it directly.
|
|
22
|
+
*/
|
|
23
|
+
private tryAddItemIdFromDestructuredParams;
|
|
19
24
|
private tryAddItemIdFromParentComponent;
|
|
20
25
|
private findKeyWithId;
|
|
21
26
|
}
|
|
@@ -1 +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;
|
|
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;IA2CpB;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IA6C1C,OAAO,CAAC,+BAA+B;IA+BvC,OAAO,CAAC,aAAa;CAuBtB"}
|
|
@@ -23,7 +23,7 @@ export class DataItemFieldProcessor {
|
|
|
23
23
|
if (!result)
|
|
24
24
|
return;
|
|
25
25
|
this.attributeUtils.addStringAttribute(path, DATA_COLLECTION_ITEM_FIELD, result.fieldPath);
|
|
26
|
-
this.tryAddItemId(path, result.rootIdentifier);
|
|
26
|
+
this.tryAddItemId(path, result.rootIdentifier, result.fieldPath);
|
|
27
27
|
}
|
|
28
28
|
extractFieldFromChildren(jsxElement) {
|
|
29
29
|
const children = jsxElement.get("children");
|
|
@@ -151,29 +151,55 @@ export class DataItemFieldProcessor {
|
|
|
151
151
|
}
|
|
152
152
|
return null;
|
|
153
153
|
}
|
|
154
|
-
tryAddItemId(path, rootIdentifier) {
|
|
154
|
+
tryAddItemId(path, rootIdentifier, fieldPath) {
|
|
155
155
|
if (this.attributeUtils.hasAttribute(path, DATA_COLLECTION_ITEM_ID)) {
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
+
// Simple identifier: {name} from ({ name, price }) => ...
|
|
159
|
+
// rootIdentifier IS the field value (a string), not an object with _id.
|
|
160
|
+
// We need to find _id from sibling destructured params instead.
|
|
161
|
+
if (rootIdentifier.name === fieldPath) {
|
|
162
|
+
this.tryAddItemIdFromDestructuredParams(path);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Member expression: {product.name} → product?._id
|
|
158
166
|
const idExpr = this.types.optionalMemberExpression(this.types.identifier(rootIdentifier.name), this.types.identifier("_id"), false, true);
|
|
159
167
|
const binding = path.scope.getBinding(rootIdentifier.name);
|
|
160
168
|
if (!binding) {
|
|
161
169
|
this.tryAddItemIdFromParentComponent(path, rootIdentifier);
|
|
162
170
|
return;
|
|
163
171
|
}
|
|
164
|
-
if (binding.path.isVariableDeclarator()
|
|
172
|
+
if (binding.path.isVariableDeclarator() ||
|
|
173
|
+
binding.kind === "param") {
|
|
165
174
|
this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, idExpr);
|
|
166
|
-
return;
|
|
167
175
|
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* For simple identifiers from destructured component props like ({ name, price }),
|
|
179
|
+
* find or inject _id in the ObjectPattern so we can reference it directly.
|
|
180
|
+
*/
|
|
181
|
+
tryAddItemIdFromDestructuredParams(path) {
|
|
168
182
|
const fn = path.getFunctionParent();
|
|
169
|
-
if (fn)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
183
|
+
if (!fn)
|
|
184
|
+
return;
|
|
185
|
+
const params = fn.get("params");
|
|
186
|
+
for (const param of Array.isArray(params) ? params : [params]) {
|
|
187
|
+
if (!param.isObjectPattern())
|
|
188
|
+
continue;
|
|
189
|
+
// Check if _id is already destructured
|
|
190
|
+
for (const prop of param.get("properties")) {
|
|
191
|
+
if (prop.isObjectProperty() &&
|
|
192
|
+
this.types.isIdentifier(prop.node.key) &&
|
|
193
|
+
prop.node.key.name === "_id" &&
|
|
194
|
+
this.types.isIdentifier(prop.node.value)) {
|
|
195
|
+
this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, this.types.identifier(prop.node.value.name));
|
|
174
196
|
return;
|
|
175
197
|
}
|
|
176
198
|
}
|
|
199
|
+
// _id not destructured yet — inject it into the pattern
|
|
200
|
+
param.node.properties.push(this.types.objectProperty(this.types.identifier("_id"), this.types.identifier("_id"), false, true));
|
|
201
|
+
this.attributeUtils.addExpressionAttribute(path, DATA_COLLECTION_ITEM_ID, this.types.identifier("_id"));
|
|
202
|
+
return;
|
|
177
203
|
}
|
|
178
204
|
}
|
|
179
205
|
tryAddItemIdFromParentComponent(path, rootIdentifier) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-item-field-processor.js","sourceRoot":"","sources":["../../src/processors/collection-item-field-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,sBAAsB;IAKb;IAJZ,cAAc,CAAoB;IAClC,eAAe,CAA0B;IACzC,WAAW,CAAmB;IAEtC,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;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,IAAmC;QACzC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,0BAA0B,CAAC,EAAE,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE;YAAE,OAAO;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CACpC,IAAI,EACJ,0BAA0B,EAC1B,MAAM,CAAC,SAAS,CACjB,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"collection-item-field-processor.js","sourceRoot":"","sources":["../../src/processors/collection-item-field-processor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/consts.ts
CHANGED
|
@@ -3,8 +3,6 @@ export const DATA_COLLECTION_ITEM_ID = "data-collection-item-id";
|
|
|
3
3
|
export const DATA_COLLECTION_ITEM_FIELD = "data-collection-item-field";
|
|
4
4
|
export const DATA_COLLECTION_REFERENCE = "data-collection-reference";
|
|
5
5
|
export const DATA_COLLECTION_FIELD_REFERENCE = "data-collection-field-reference";
|
|
6
|
-
export const DATA_DYNAMIC = "data-dynamic";
|
|
7
|
-
|
|
8
6
|
export const DATA_ARR_INDEX = "data-arr-index";
|
|
9
7
|
export const DATA_ARR_VARIABLE_NAME = "data-arr-variable-name";
|
|
10
8
|
export const DATA_ARR_FIELD = "data-arr-field";
|
package/src/jsx-processor.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { NodePath } from "@babel/traverse";
|
|
2
2
|
import type * as t from "@babel/types";
|
|
3
|
-
import { DATA_DYNAMIC } from "./consts.js";
|
|
4
3
|
import { CollectionIdProcessor } from "./processors/collection-id-processor.js";
|
|
5
4
|
import { ReferenceFieldProcessor } from "./processors/collection-reference-field-processor.js";
|
|
6
5
|
import { DataItemIdProcessor } from "./processors/collection-item-id-processor.js";
|
|
7
6
|
import { DataItemFieldProcessor } from "./processors/collection-item-field-processor.js";
|
|
8
7
|
import { StaticArrayProcessor } from "./processors/static-array-processor.js";
|
|
9
|
-
import { JSXAttributeUtils } from "./processors/shared-utils.js";
|
|
10
8
|
|
|
11
9
|
export class JSXProcessor {
|
|
12
10
|
private collectionIdProcessor: CollectionIdProcessor;
|
|
@@ -14,7 +12,6 @@ export class JSXProcessor {
|
|
|
14
12
|
private dataItemIdProcessor: DataItemIdProcessor;
|
|
15
13
|
private dataItemFieldProcessor: DataItemFieldProcessor;
|
|
16
14
|
private staticArrayProcessor: StaticArrayProcessor;
|
|
17
|
-
private attributeUtils: JSXAttributeUtils;
|
|
18
15
|
|
|
19
16
|
constructor(
|
|
20
17
|
private types: typeof t,
|
|
@@ -25,7 +22,6 @@ export class JSXProcessor {
|
|
|
25
22
|
this.dataItemIdProcessor = new DataItemIdProcessor(types);
|
|
26
23
|
this.dataItemFieldProcessor = new DataItemFieldProcessor(types);
|
|
27
24
|
this.staticArrayProcessor = new StaticArrayProcessor(types);
|
|
28
|
-
this.attributeUtils = new JSXAttributeUtils(types);
|
|
29
25
|
}
|
|
30
26
|
|
|
31
27
|
processJSXElement(path: NodePath<t.JSXOpeningElement>): void {
|
|
@@ -40,7 +36,6 @@ export class JSXProcessor {
|
|
|
40
36
|
this.dataItemFieldProcessor.process(path);
|
|
41
37
|
this.staticArrayProcessor.process(path);
|
|
42
38
|
|
|
43
|
-
this.collectAndAddDynamicAttribute(path);
|
|
44
39
|
}
|
|
45
40
|
|
|
46
41
|
private addSourceLocationAttribute(
|
|
@@ -84,23 +79,6 @@ export class JSXProcessor {
|
|
|
84
79
|
);
|
|
85
80
|
}
|
|
86
81
|
|
|
87
|
-
/**
|
|
88
|
-
* After all collection processors have run, check if any data-collection-*
|
|
89
|
-
* attributes were added and set data-dynamic="text" accordingly.
|
|
90
|
-
*/
|
|
91
|
-
private collectAndAddDynamicAttribute(
|
|
92
|
-
path: NodePath<t.JSXOpeningElement>
|
|
93
|
-
): void {
|
|
94
|
-
const hasCollectionField = this.attributeUtils.hasAttribute(
|
|
95
|
-
path,
|
|
96
|
-
"data-collection-item-field"
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
if (hasCollectionField) {
|
|
100
|
-
this.attributeUtils.addStringAttribute(path, DATA_DYNAMIC, "text");
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
82
|
private hasAttribute(
|
|
105
83
|
path: NodePath<t.JSXOpeningElement>,
|
|
106
84
|
name: string
|
|
@@ -40,7 +40,7 @@ export class DataItemFieldProcessor {
|
|
|
40
40
|
result.fieldPath
|
|
41
41
|
);
|
|
42
42
|
|
|
43
|
-
this.tryAddItemId(path, result.rootIdentifier);
|
|
43
|
+
this.tryAddItemId(path, result.rootIdentifier, result.fieldPath);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
private extractFieldFromChildren(
|
|
@@ -220,12 +220,22 @@ export class DataItemFieldProcessor {
|
|
|
220
220
|
|
|
221
221
|
private tryAddItemId(
|
|
222
222
|
path: NodePath<t.JSXOpeningElement>,
|
|
223
|
-
rootIdentifier: t.Identifier
|
|
223
|
+
rootIdentifier: t.Identifier,
|
|
224
|
+
fieldPath: string
|
|
224
225
|
): void {
|
|
225
226
|
if (this.attributeUtils.hasAttribute(path, DATA_COLLECTION_ITEM_ID)) {
|
|
226
227
|
return;
|
|
227
228
|
}
|
|
228
229
|
|
|
230
|
+
// Simple identifier: {name} from ({ name, price }) => ...
|
|
231
|
+
// rootIdentifier IS the field value (a string), not an object with _id.
|
|
232
|
+
// We need to find _id from sibling destructured params instead.
|
|
233
|
+
if (rootIdentifier.name === fieldPath) {
|
|
234
|
+
this.tryAddItemIdFromDestructuredParams(path);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Member expression: {product.name} → product?._id
|
|
229
239
|
const idExpr = this.types.optionalMemberExpression(
|
|
230
240
|
this.types.identifier(rootIdentifier.name),
|
|
231
241
|
this.types.identifier("_id"),
|
|
@@ -239,28 +249,64 @@ export class DataItemFieldProcessor {
|
|
|
239
249
|
return;
|
|
240
250
|
}
|
|
241
251
|
|
|
242
|
-
if (
|
|
252
|
+
if (
|
|
253
|
+
binding.path.isVariableDeclarator() ||
|
|
254
|
+
binding.kind === "param"
|
|
255
|
+
) {
|
|
243
256
|
this.attributeUtils.addExpressionAttribute(
|
|
244
257
|
path,
|
|
245
258
|
DATA_COLLECTION_ITEM_ID,
|
|
246
259
|
idExpr
|
|
247
260
|
);
|
|
248
|
-
return;
|
|
249
261
|
}
|
|
262
|
+
}
|
|
250
263
|
|
|
264
|
+
/**
|
|
265
|
+
* For simple identifiers from destructured component props like ({ name, price }),
|
|
266
|
+
* find or inject _id in the ObjectPattern so we can reference it directly.
|
|
267
|
+
*/
|
|
268
|
+
private tryAddItemIdFromDestructuredParams(
|
|
269
|
+
path: NodePath<t.JSXOpeningElement>
|
|
270
|
+
): void {
|
|
251
271
|
const fn = path.getFunctionParent();
|
|
252
|
-
if (fn)
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
272
|
+
if (!fn) return;
|
|
273
|
+
|
|
274
|
+
const params = fn.get("params");
|
|
275
|
+
for (const param of Array.isArray(params) ? params : [params]) {
|
|
276
|
+
if (!param.isObjectPattern()) continue;
|
|
277
|
+
|
|
278
|
+
// Check if _id is already destructured
|
|
279
|
+
for (const prop of param.get("properties")) {
|
|
280
|
+
if (
|
|
281
|
+
prop.isObjectProperty() &&
|
|
282
|
+
this.types.isIdentifier(prop.node.key) &&
|
|
283
|
+
prop.node.key.name === "_id" &&
|
|
284
|
+
this.types.isIdentifier(prop.node.value)
|
|
285
|
+
) {
|
|
256
286
|
this.attributeUtils.addExpressionAttribute(
|
|
257
287
|
path,
|
|
258
288
|
DATA_COLLECTION_ITEM_ID,
|
|
259
|
-
|
|
289
|
+
this.types.identifier(prop.node.value.name)
|
|
260
290
|
);
|
|
261
291
|
return;
|
|
262
292
|
}
|
|
263
293
|
}
|
|
294
|
+
|
|
295
|
+
// _id not destructured yet — inject it into the pattern
|
|
296
|
+
param.node.properties.push(
|
|
297
|
+
this.types.objectProperty(
|
|
298
|
+
this.types.identifier("_id"),
|
|
299
|
+
this.types.identifier("_id"),
|
|
300
|
+
false,
|
|
301
|
+
true
|
|
302
|
+
)
|
|
303
|
+
);
|
|
304
|
+
this.attributeUtils.addExpressionAttribute(
|
|
305
|
+
path,
|
|
306
|
+
DATA_COLLECTION_ITEM_ID,
|
|
307
|
+
this.types.identifier("_id")
|
|
308
|
+
);
|
|
309
|
+
return;
|
|
264
310
|
}
|
|
265
311
|
}
|
|
266
312
|
|