@barefootjs/go-template 0.30.4 → 0.30.5
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/adapter/go-template-adapter.d.ts.map +1 -1
- package/dist/adapter/index.js +128 -17
- package/dist/adapter/memo/memo-compute.d.ts.map +1 -1
- package/dist/adapter/value/value-lowering.d.ts +50 -0
- package/dist/adapter/value/value-lowering.d.ts.map +1 -1
- package/dist/build.js +128 -17
- package/dist/index.js +129 -22
- package/dist/render-divergences.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/adapter/go-template-adapter.ts +41 -7
- package/src/adapter/memo/memo-compute.ts +60 -1
- package/src/adapter/value/value-lowering.ts +172 -0
- package/src/render-divergences.ts +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-template-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/go-template-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"go-template-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/go-template-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/index.js
CHANGED
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
isSupported,
|
|
32
32
|
exprToString,
|
|
33
33
|
identifierPath,
|
|
34
|
-
asCallbackMethodCall as
|
|
34
|
+
asCallbackMethodCall as asCallbackMethodCall4,
|
|
35
35
|
sortComparatorFromArrow,
|
|
36
36
|
emitParsedExpr,
|
|
37
37
|
emitIRNode,
|
|
@@ -971,6 +971,14 @@ function renderLoweringNode(ctx, node) {
|
|
|
971
971
|
return `${helper} ${parts.join(" ")}`;
|
|
972
972
|
}
|
|
973
973
|
|
|
974
|
+
// src/adapter/value/value-lowering.ts
|
|
975
|
+
import {
|
|
976
|
+
asCallbackMethodCall,
|
|
977
|
+
freeVarsInBody as freeVarsInBody2,
|
|
978
|
+
materializeGetterCalls,
|
|
979
|
+
serializeParsedExpr as serializeParsedExpr2
|
|
980
|
+
} from "@barefootjs/jsx";
|
|
981
|
+
|
|
974
982
|
// src/adapter/type/type-codegen.ts
|
|
975
983
|
function collapseLiteralUnion(typeInfo) {
|
|
976
984
|
if (typeInfo.kind !== "union" || !typeInfo.unionTypes || typeInfo.unionTypes.length === 0) {
|
|
@@ -1191,6 +1199,14 @@ function convertInitialValue(ctx, value, _typeInfo, propsParams, preParsed) {
|
|
|
1191
1199
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
1192
1200
|
return value;
|
|
1193
1201
|
}
|
|
1202
|
+
if (preParsed) {
|
|
1203
|
+
const chain = matchMapJoinChain(preParsed);
|
|
1204
|
+
if (chain) {
|
|
1205
|
+
const chainGo = mapJoinChainToGo(ctx, chain, [], propsParams ?? [], EMPTY_PROP_FALLBACK_VARS);
|
|
1206
|
+
if (chainGo !== null)
|
|
1207
|
+
return chainGo;
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1194
1210
|
return '""';
|
|
1195
1211
|
}
|
|
1196
1212
|
}
|
|
@@ -1267,13 +1283,84 @@ function getSignalInitialValueAsGo(ctx, initialValue, propsParams, propFallbackV
|
|
|
1267
1283
|
}
|
|
1268
1284
|
return "0";
|
|
1269
1285
|
}
|
|
1286
|
+
function matchMapJoinChain(expr) {
|
|
1287
|
+
if (expr.kind !== "array-method" || expr.method !== "join")
|
|
1288
|
+
return null;
|
|
1289
|
+
const mapCb = asCallbackMethodCall(expr.object);
|
|
1290
|
+
if (!mapCb || mapCb.method !== "map")
|
|
1291
|
+
return null;
|
|
1292
|
+
return { object: mapCb.object, arrow: mapCb.arrow, sepArg: expr.args[0] };
|
|
1293
|
+
}
|
|
1294
|
+
function resolveMapJoinBaseAsGo(ctx, object, signals, propsParams) {
|
|
1295
|
+
if (object.kind === "call" && object.callee.kind === "identifier" && object.args.length === 0) {
|
|
1296
|
+
const calleeName = object.callee.name;
|
|
1297
|
+
const sig = signals.find((s) => s.getter === calleeName);
|
|
1298
|
+
if (sig) {
|
|
1299
|
+
const bakeType = ctx.state.synthStructTypes.get(sig.getter) ?? sig.type ?? { kind: "array", raw: "unknown[]" };
|
|
1300
|
+
return convertInitialValue(ctx, sig.initialValue, bakeType, propsParams, sig.parsed);
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
const propName = object.kind === "member" && !object.computed && object.object.kind === "identifier" && object.object.name === "props" ? object.property : object.kind === "identifier" ? object.name : null;
|
|
1304
|
+
if (propName && propsParams.some((p) => p.name === propName)) {
|
|
1305
|
+
return `in.${capitalizeFieldName(propName)}`;
|
|
1306
|
+
}
|
|
1307
|
+
if (object.kind === "array-literal") {
|
|
1308
|
+
if (object.elements.length === 0)
|
|
1309
|
+
return "[]interface{}{}";
|
|
1310
|
+
const elems = [];
|
|
1311
|
+
for (const el of object.elements) {
|
|
1312
|
+
const go = el.kind === "object-literal" ? objectLiteralToGoMap(ctx, el) : parsedLiteralToGo(ctx, el);
|
|
1313
|
+
if (go === null)
|
|
1314
|
+
return null;
|
|
1315
|
+
elems.push(go);
|
|
1316
|
+
}
|
|
1317
|
+
return `[]interface{}{${elems.join(", ")}}`;
|
|
1318
|
+
}
|
|
1319
|
+
return null;
|
|
1320
|
+
}
|
|
1321
|
+
function mapJoinChainToGo(ctx, chain, signals, propsParams, propFallbackVars) {
|
|
1322
|
+
const itemsGo = resolveMapJoinBaseAsGo(ctx, chain.object, signals, propsParams);
|
|
1323
|
+
if (itemsGo === null)
|
|
1324
|
+
return null;
|
|
1325
|
+
const knownGetterNames = new Set(signals.map((s) => s.getter));
|
|
1326
|
+
const materialized = materializeGetterCalls(chain.arrow.body, knownGetterNames);
|
|
1327
|
+
const projJSON = serializeParsedExpr2(materialized);
|
|
1328
|
+
if (projJSON === null)
|
|
1329
|
+
return null;
|
|
1330
|
+
const paramName = chain.arrow.params[0] ?? "_";
|
|
1331
|
+
const freeVars = freeVarsInBody2(materialized, new Set(chain.arrow.params));
|
|
1332
|
+
const envEntries = [];
|
|
1333
|
+
for (const name of freeVars) {
|
|
1334
|
+
const sig = signals.find((s) => s.getter === name);
|
|
1335
|
+
let goExpr = null;
|
|
1336
|
+
if (sig) {
|
|
1337
|
+
goExpr = getSignalInitialValueAsGo(ctx, sig.initialValue, propsParams, propFallbackVars, sig.type);
|
|
1338
|
+
} else if (propsParams.some((p) => p.name === name)) {
|
|
1339
|
+
const hoisted = propFallbackVars.get(name);
|
|
1340
|
+
goExpr = hoisted ? hoisted.varName : `in.${capitalizeFieldName(name)}`;
|
|
1341
|
+
}
|
|
1342
|
+
if (goExpr === null)
|
|
1343
|
+
return null;
|
|
1344
|
+
envEntries.push(`${JSON.stringify(name)}: ${goExpr}`);
|
|
1345
|
+
}
|
|
1346
|
+
const envMap = `map[string]any{${envEntries.join(", ")}}`;
|
|
1347
|
+
let sepGo;
|
|
1348
|
+
if (!chain.sepArg) {
|
|
1349
|
+
sepGo = JSON.stringify(",");
|
|
1350
|
+
} else if (chain.sepArg.kind === "literal" && chain.sepArg.literalType === "string") {
|
|
1351
|
+
sepGo = JSON.stringify(chain.sepArg.value);
|
|
1352
|
+
} else {
|
|
1353
|
+
return null;
|
|
1354
|
+
}
|
|
1355
|
+
return `bf.Join(bf.MapEval(${itemsGo}, "${escapeGoString(projJSON)}", ${JSON.stringify(paramName)}, ${envMap}), ${sepGo})`;
|
|
1356
|
+
}
|
|
1270
1357
|
|
|
1271
1358
|
// src/adapter/memo/memo-type.ts
|
|
1272
|
-
import { asCallbackMethodCall } from "@barefootjs/jsx";
|
|
1359
|
+
import { asCallbackMethodCall as asCallbackMethodCall2 } from "@barefootjs/jsx";
|
|
1273
1360
|
function isListFilterMemo(memo) {
|
|
1274
1361
|
if (!memo.parsed)
|
|
1275
1362
|
return false;
|
|
1276
|
-
const cb =
|
|
1363
|
+
const cb = asCallbackMethodCall2(memo.parsed);
|
|
1277
1364
|
return cb !== null && cb.method === "filter";
|
|
1278
1365
|
}
|
|
1279
1366
|
function isBooleanMemo(ctx, memo, signals, propsParamMap) {
|
|
@@ -1572,10 +1659,10 @@ function computeObjectMemoInitialValue(ctx, memo) {
|
|
|
1572
1659
|
|
|
1573
1660
|
// src/adapter/memo/memo-compute.ts
|
|
1574
1661
|
import {
|
|
1575
|
-
asCallbackMethodCall as
|
|
1576
|
-
freeVarsInBody as
|
|
1577
|
-
materializeGetterCalls,
|
|
1578
|
-
serializeParsedExpr as
|
|
1662
|
+
asCallbackMethodCall as asCallbackMethodCall3,
|
|
1663
|
+
freeVarsInBody as freeVarsInBody3,
|
|
1664
|
+
materializeGetterCalls as materializeGetterCalls2,
|
|
1665
|
+
serializeParsedExpr as serializeParsedExpr3
|
|
1579
1666
|
} from "@barefootjs/jsx";
|
|
1580
1667
|
|
|
1581
1668
|
// src/adapter/memo/template-interp.ts
|
|
@@ -1750,7 +1837,7 @@ function propNameForPropsBinding(ctx, e) {
|
|
|
1750
1837
|
return null;
|
|
1751
1838
|
}
|
|
1752
1839
|
function matchFilterArmMemo(ctx, body, signals, propsParams) {
|
|
1753
|
-
const cb =
|
|
1840
|
+
const cb = asCallbackMethodCall3(body);
|
|
1754
1841
|
if (!cb || cb.method !== "filter")
|
|
1755
1842
|
return null;
|
|
1756
1843
|
const propName = propsMemberName(cb.object);
|
|
@@ -1758,12 +1845,12 @@ function matchFilterArmMemo(ctx, body, signals, propsParams) {
|
|
|
1758
1845
|
if (!propName || !param)
|
|
1759
1846
|
return null;
|
|
1760
1847
|
const knownGetterNames = new Set(ctx.state.ssrSeedPlan.steps.filter((s) => s.kind !== "env-reader").map((s) => s.name));
|
|
1761
|
-
const materialized =
|
|
1762
|
-
const predJSON =
|
|
1848
|
+
const materialized = materializeGetterCalls2(cb.arrow.body, knownGetterNames);
|
|
1849
|
+
const predJSON = serializeParsedExpr3(materialized);
|
|
1763
1850
|
if (predJSON === null)
|
|
1764
1851
|
return null;
|
|
1765
1852
|
const paramName = cb.arrow.params[0] ?? "_";
|
|
1766
|
-
const freeVars =
|
|
1853
|
+
const freeVars = freeVarsInBody3(materialized, new Set(cb.arrow.params));
|
|
1767
1854
|
return { propName, predJSON, paramName, freeVars };
|
|
1768
1855
|
}
|
|
1769
1856
|
function filterArmEarlierSiblingRefs(ctx, memo, signals, propsParams) {
|
|
@@ -2005,6 +2092,30 @@ function memoInitialFromParsedBody(ctx, body, signals, propsParams, propFallback
|
|
|
2005
2092
|
if (param)
|
|
2006
2093
|
return `in.${capitalizeFieldName(body.name)}`;
|
|
2007
2094
|
}
|
|
2095
|
+
if (body.kind === "binary" && body.op === "+") {
|
|
2096
|
+
const concatGo = resolveStringConcatChainGo(ctx, body, signals, propsParams, propFallbackVars, propRef);
|
|
2097
|
+
if (concatGo !== null)
|
|
2098
|
+
return concatGo;
|
|
2099
|
+
}
|
|
2100
|
+
return null;
|
|
2101
|
+
}
|
|
2102
|
+
function resolveStringConcatChainGo(ctx, expr, signals, propsParams, propFallbackVars, propRef) {
|
|
2103
|
+
if (expr.kind === "binary" && expr.op === "+") {
|
|
2104
|
+
const l = resolveStringConcatChainGo(ctx, expr.left, signals, propsParams, propFallbackVars, propRef);
|
|
2105
|
+
const r = resolveStringConcatChainGo(ctx, expr.right, signals, propsParams, propFallbackVars, propRef);
|
|
2106
|
+
return l !== null && r !== null ? `${l} + ${r}` : null;
|
|
2107
|
+
}
|
|
2108
|
+
if (expr.kind === "literal" && expr.literalType === "string") {
|
|
2109
|
+
return JSON.stringify(expr.value);
|
|
2110
|
+
}
|
|
2111
|
+
const propName = propsMemberName(expr) ?? (expr.kind === "identifier" ? expr.name : null);
|
|
2112
|
+
if (propName && propsParams.some((p) => p.name === propName)) {
|
|
2113
|
+
return propRef(propName);
|
|
2114
|
+
}
|
|
2115
|
+
const chain = matchMapJoinChain(expr);
|
|
2116
|
+
if (chain) {
|
|
2117
|
+
return mapJoinChainToGo(ctx, chain, signals, propsParams, propFallbackVars);
|
|
2118
|
+
}
|
|
2008
2119
|
return null;
|
|
2009
2120
|
}
|
|
2010
2121
|
function computeMemoInitialValueOrNull(ctx, memo, signals, propsParams, propFallbackVars = EMPTY_PROP_FALLBACK_VARS2, resolving = new Set) {
|
|
@@ -4831,7 +4942,7 @@ ${goFields.join(`
|
|
|
4831
4942
|
return `${obj}.${goFieldNameForKey(property)}`;
|
|
4832
4943
|
}
|
|
4833
4944
|
indexAccess(object, index, emit) {
|
|
4834
|
-
return `
|
|
4945
|
+
return `bf_get ${wrapIfMultiToken(emit(object))} ${wrapIfMultiToken(emit(index))}`;
|
|
4835
4946
|
}
|
|
4836
4947
|
binary(op, left, right, emit) {
|
|
4837
4948
|
const l = emit(left);
|
|
@@ -4963,7 +5074,7 @@ ${goFields.join(`
|
|
|
4963
5074
|
"some"
|
|
4964
5075
|
]);
|
|
4965
5076
|
higherOrderShapeOf(node) {
|
|
4966
|
-
const cb =
|
|
5077
|
+
const cb = asCallbackMethodCall4(node);
|
|
4967
5078
|
if (!cb)
|
|
4968
5079
|
return null;
|
|
4969
5080
|
if (!GoTemplateAdapter.PREDICATE_METHODS.has(cb.method))
|
|
@@ -5411,7 +5522,7 @@ ${goFields.join(`
|
|
|
5411
5522
|
if (expr.callee.kind === "identifier" && expr.args.length === 0) {
|
|
5412
5523
|
return `$.${capitalizeFieldName(expr.callee.name)}`;
|
|
5413
5524
|
}
|
|
5414
|
-
if (
|
|
5525
|
+
if (asCallbackMethodCall4(expr) !== null) {
|
|
5415
5526
|
return this.refuseFilterExprNode(expr);
|
|
5416
5527
|
}
|
|
5417
5528
|
const result = this.renderFilterExpr(expr.callee, param, localVarMap, datumField);
|
|
@@ -5830,7 +5941,7 @@ ${goFields.join(`
|
|
|
5830
5941
|
});
|
|
5831
5942
|
return plain("false");
|
|
5832
5943
|
}
|
|
5833
|
-
if (
|
|
5944
|
+
if (asCallbackMethodCall4(expr)) {
|
|
5834
5945
|
const rendered = this.renderParsedExpr(expr);
|
|
5835
5946
|
const split = this.splitPreamble(rendered);
|
|
5836
5947
|
if (split)
|
|
@@ -6332,7 +6443,7 @@ ${children}`;
|
|
|
6332
6443
|
const trimmed = value.expr.trim();
|
|
6333
6444
|
const currentLoopParam = this.loopParamStack[this.loopParamStack.length - 1];
|
|
6334
6445
|
if (currentLoopParam && trimmed === currentLoopParam) {
|
|
6335
|
-
return `{{bf_spread_attrs .}}`;
|
|
6446
|
+
return `{{bf_spread_attrs (bf_js_keys .)}}`;
|
|
6336
6447
|
}
|
|
6337
6448
|
const restInfo = this.lookupRestExclude(trimmed);
|
|
6338
6449
|
if (restInfo) {
|
|
@@ -6341,7 +6452,7 @@ ${children}`;
|
|
|
6341
6452
|
return `{{bf_spread_attrs (bf_omit ${omitArgs})}}`;
|
|
6342
6453
|
}
|
|
6343
6454
|
const goExpr = this.convertExpressionToGo(value.expr);
|
|
6344
|
-
return `{{bf_spread_attrs ${goExpr}}}`;
|
|
6455
|
+
return `{{bf_spread_attrs (bf_js_keys ${wrapIfMultiToken(goExpr)})}}`;
|
|
6345
6456
|
}
|
|
6346
6457
|
return `{{bf_spread_attrs .${value.slotId}}}`;
|
|
6347
6458
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memo-compute.d.ts","sourceRoot":"","sources":["../../../src/adapter/memo/memo-compute.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAQ5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"memo-compute.d.ts","sourceRoot":"","sources":["../../../src/adapter/memo/memo-compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,4 +51,54 @@ export declare function objectLiteralToGoMap(ctx: GoEmitContext, expr: ParsedExp
|
|
|
51
51
|
export declare function getSignalInitialValueAsGo(ctx: GoEmitContext, initialValue: string, propsParams: {
|
|
52
52
|
name: string;
|
|
53
53
|
}[], propFallbackVars?: ReadonlyMap<string, PropFallbackVar>, signalType?: TypeInfo): string;
|
|
54
|
+
/**
|
|
55
|
+
* A value-producing `.map(cb).join(sep)` chain — `<object>.map((param) =>
|
|
56
|
+
* <body>).join(<sepExpr>)` — the constructor-Go-source analogue of the
|
|
57
|
+
* template-position `bf_join (bf_map_eval …)` lowering (`emitMapEval`,
|
|
58
|
+
* `go-emit.ts`). `.join(...)` folds to the `array-method` IR node at parse
|
|
59
|
+
* time (`expression-parser.ts`); its `object` is recognised as a `.map(cb)`
|
|
60
|
+
* callback call via `asCallbackMethodCall` (the same recognition
|
|
61
|
+
* `matchFilterArmMemo`, `memo-compute.ts`, uses for `.filter`). Returns the
|
|
62
|
+
* receiver array, the mapper arrow, and the join separator argument (absent
|
|
63
|
+
* when `.join()` was called with no argument — JS defaults to `,`), or null
|
|
64
|
+
* when `expr` isn't this shape.
|
|
65
|
+
*/
|
|
66
|
+
export declare function matchMapJoinChain(expr: ParsedExpr): {
|
|
67
|
+
object: ParsedExpr;
|
|
68
|
+
arrow: Extract<ParsedExpr, {
|
|
69
|
+
kind: 'arrow';
|
|
70
|
+
}>;
|
|
71
|
+
sepArg?: ParsedExpr;
|
|
72
|
+
} | null;
|
|
73
|
+
/**
|
|
74
|
+
* Lower a `.map(cb).join(sep)` chain (matched by {@link matchMapJoinChain})
|
|
75
|
+
* to a `bf.Join(bf.MapEval(<items>, "<projJSON>", "<param>", <envMap>),
|
|
76
|
+
* <sep>)` Go expression — the constructor-source analogue of
|
|
77
|
+
* `matchFilterArmMemo`'s `bf.FilterEval` emit (`memo-compute.ts`), reusing
|
|
78
|
+
* the SAME two runtime evaluator functions (`MapEval`, `eval.go`; `Join`,
|
|
79
|
+
* `bf.go`) the template-position `bf_map_eval`/`bf_join` lowering already
|
|
80
|
+
* calls. Shared by a memo's derived value (`memoInitialFromParsedBody`'s
|
|
81
|
+
* concatenation-chain arm) and a SIGNAL's own initializer
|
|
82
|
+
* (`convertInitialValue`'s `string` branch, #2492).
|
|
83
|
+
*
|
|
84
|
+
* @returns the Go expression, or null when the receiver doesn't resolve
|
|
85
|
+
* ({@link resolveMapJoinBaseAsGo}), the projection body isn't
|
|
86
|
+
* representable to the runtime evaluator (`serializeParsedExpr` refusal),
|
|
87
|
+
* a captured free variable doesn't resolve, or the separator isn't a
|
|
88
|
+
* string literal (a dynamic separator — out of scope for this arm).
|
|
89
|
+
*/
|
|
90
|
+
export declare function mapJoinChainToGo(ctx: GoEmitContext, chain: {
|
|
91
|
+
object: ParsedExpr;
|
|
92
|
+
arrow: Extract<ParsedExpr, {
|
|
93
|
+
kind: 'arrow';
|
|
94
|
+
}>;
|
|
95
|
+
sepArg?: ParsedExpr;
|
|
96
|
+
}, signals: {
|
|
97
|
+
getter: string;
|
|
98
|
+
initialValue: string;
|
|
99
|
+
type?: TypeInfo;
|
|
100
|
+
parsed?: ParsedExpr;
|
|
101
|
+
}[], propsParams: {
|
|
102
|
+
name: string;
|
|
103
|
+
}[], propFallbackVars: ReadonlyMap<string, PropFallbackVar>): string | null;
|
|
54
104
|
//# sourceMappingURL=value-lowering.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-lowering.d.ts","sourceRoot":"","sources":["../../../src/adapter/value/value-lowering.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"value-lowering.d.ts","sourceRoot":"","sources":["../../../src/adapter/value/value-lowering.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAQ3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAgDtD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,EACnB,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAChC,SAAS,CAAC,EAAE,UAAU,GACrB,MAAM,CA6FR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,UAAU,GACrB,MAAM,GAAG,IAAI,CAMf;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAWxF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAC/B,gBAAgB,GAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAA4B,EACjF,UAAU,CAAC,EAAE,QAAQ,GACpB,MAAM,CAiCR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG;IACnD,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC7C,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB,GAAG,IAAI,CAKP;AAqED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,EACjG,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,EAAE,EACzF,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAC/B,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,GACrD,MAAM,GAAG,IAAI,CAoCf"}
|
package/dist/build.js
CHANGED
|
@@ -371,7 +371,7 @@ import {
|
|
|
371
371
|
isSupported,
|
|
372
372
|
exprToString,
|
|
373
373
|
identifierPath,
|
|
374
|
-
asCallbackMethodCall as
|
|
374
|
+
asCallbackMethodCall as asCallbackMethodCall4,
|
|
375
375
|
sortComparatorFromArrow,
|
|
376
376
|
emitParsedExpr,
|
|
377
377
|
emitIRNode,
|
|
@@ -1311,6 +1311,14 @@ function renderLoweringNode(ctx, node) {
|
|
|
1311
1311
|
return `${helper} ${parts.join(" ")}`;
|
|
1312
1312
|
}
|
|
1313
1313
|
|
|
1314
|
+
// src/adapter/value/value-lowering.ts
|
|
1315
|
+
import {
|
|
1316
|
+
asCallbackMethodCall,
|
|
1317
|
+
freeVarsInBody as freeVarsInBody2,
|
|
1318
|
+
materializeGetterCalls,
|
|
1319
|
+
serializeParsedExpr as serializeParsedExpr2
|
|
1320
|
+
} from "@barefootjs/jsx";
|
|
1321
|
+
|
|
1314
1322
|
// src/adapter/type/type-codegen.ts
|
|
1315
1323
|
function collapseLiteralUnion(typeInfo) {
|
|
1316
1324
|
if (typeInfo.kind !== "union" || !typeInfo.unionTypes || typeInfo.unionTypes.length === 0) {
|
|
@@ -1531,6 +1539,14 @@ function convertInitialValue(ctx, value, _typeInfo, propsParams, preParsed) {
|
|
|
1531
1539
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
1532
1540
|
return value;
|
|
1533
1541
|
}
|
|
1542
|
+
if (preParsed) {
|
|
1543
|
+
const chain = matchMapJoinChain(preParsed);
|
|
1544
|
+
if (chain) {
|
|
1545
|
+
const chainGo = mapJoinChainToGo(ctx, chain, [], propsParams ?? [], EMPTY_PROP_FALLBACK_VARS);
|
|
1546
|
+
if (chainGo !== null)
|
|
1547
|
+
return chainGo;
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1534
1550
|
return '""';
|
|
1535
1551
|
}
|
|
1536
1552
|
}
|
|
@@ -1607,13 +1623,84 @@ function getSignalInitialValueAsGo(ctx, initialValue, propsParams, propFallbackV
|
|
|
1607
1623
|
}
|
|
1608
1624
|
return "0";
|
|
1609
1625
|
}
|
|
1626
|
+
function matchMapJoinChain(expr) {
|
|
1627
|
+
if (expr.kind !== "array-method" || expr.method !== "join")
|
|
1628
|
+
return null;
|
|
1629
|
+
const mapCb = asCallbackMethodCall(expr.object);
|
|
1630
|
+
if (!mapCb || mapCb.method !== "map")
|
|
1631
|
+
return null;
|
|
1632
|
+
return { object: mapCb.object, arrow: mapCb.arrow, sepArg: expr.args[0] };
|
|
1633
|
+
}
|
|
1634
|
+
function resolveMapJoinBaseAsGo(ctx, object, signals, propsParams) {
|
|
1635
|
+
if (object.kind === "call" && object.callee.kind === "identifier" && object.args.length === 0) {
|
|
1636
|
+
const calleeName = object.callee.name;
|
|
1637
|
+
const sig = signals.find((s) => s.getter === calleeName);
|
|
1638
|
+
if (sig) {
|
|
1639
|
+
const bakeType = ctx.state.synthStructTypes.get(sig.getter) ?? sig.type ?? { kind: "array", raw: "unknown[]" };
|
|
1640
|
+
return convertInitialValue(ctx, sig.initialValue, bakeType, propsParams, sig.parsed);
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
const propName = object.kind === "member" && !object.computed && object.object.kind === "identifier" && object.object.name === "props" ? object.property : object.kind === "identifier" ? object.name : null;
|
|
1644
|
+
if (propName && propsParams.some((p) => p.name === propName)) {
|
|
1645
|
+
return `in.${capitalizeFieldName(propName)}`;
|
|
1646
|
+
}
|
|
1647
|
+
if (object.kind === "array-literal") {
|
|
1648
|
+
if (object.elements.length === 0)
|
|
1649
|
+
return "[]interface{}{}";
|
|
1650
|
+
const elems = [];
|
|
1651
|
+
for (const el of object.elements) {
|
|
1652
|
+
const go = el.kind === "object-literal" ? objectLiteralToGoMap(ctx, el) : parsedLiteralToGo(ctx, el);
|
|
1653
|
+
if (go === null)
|
|
1654
|
+
return null;
|
|
1655
|
+
elems.push(go);
|
|
1656
|
+
}
|
|
1657
|
+
return `[]interface{}{${elems.join(", ")}}`;
|
|
1658
|
+
}
|
|
1659
|
+
return null;
|
|
1660
|
+
}
|
|
1661
|
+
function mapJoinChainToGo(ctx, chain, signals, propsParams, propFallbackVars) {
|
|
1662
|
+
const itemsGo = resolveMapJoinBaseAsGo(ctx, chain.object, signals, propsParams);
|
|
1663
|
+
if (itemsGo === null)
|
|
1664
|
+
return null;
|
|
1665
|
+
const knownGetterNames = new Set(signals.map((s) => s.getter));
|
|
1666
|
+
const materialized = materializeGetterCalls(chain.arrow.body, knownGetterNames);
|
|
1667
|
+
const projJSON = serializeParsedExpr2(materialized);
|
|
1668
|
+
if (projJSON === null)
|
|
1669
|
+
return null;
|
|
1670
|
+
const paramName = chain.arrow.params[0] ?? "_";
|
|
1671
|
+
const freeVars = freeVarsInBody2(materialized, new Set(chain.arrow.params));
|
|
1672
|
+
const envEntries = [];
|
|
1673
|
+
for (const name of freeVars) {
|
|
1674
|
+
const sig = signals.find((s) => s.getter === name);
|
|
1675
|
+
let goExpr = null;
|
|
1676
|
+
if (sig) {
|
|
1677
|
+
goExpr = getSignalInitialValueAsGo(ctx, sig.initialValue, propsParams, propFallbackVars, sig.type);
|
|
1678
|
+
} else if (propsParams.some((p) => p.name === name)) {
|
|
1679
|
+
const hoisted = propFallbackVars.get(name);
|
|
1680
|
+
goExpr = hoisted ? hoisted.varName : `in.${capitalizeFieldName(name)}`;
|
|
1681
|
+
}
|
|
1682
|
+
if (goExpr === null)
|
|
1683
|
+
return null;
|
|
1684
|
+
envEntries.push(`${JSON.stringify(name)}: ${goExpr}`);
|
|
1685
|
+
}
|
|
1686
|
+
const envMap = `map[string]any{${envEntries.join(", ")}}`;
|
|
1687
|
+
let sepGo;
|
|
1688
|
+
if (!chain.sepArg) {
|
|
1689
|
+
sepGo = JSON.stringify(",");
|
|
1690
|
+
} else if (chain.sepArg.kind === "literal" && chain.sepArg.literalType === "string") {
|
|
1691
|
+
sepGo = JSON.stringify(chain.sepArg.value);
|
|
1692
|
+
} else {
|
|
1693
|
+
return null;
|
|
1694
|
+
}
|
|
1695
|
+
return `bf.Join(bf.MapEval(${itemsGo}, "${escapeGoString(projJSON)}", ${JSON.stringify(paramName)}, ${envMap}), ${sepGo})`;
|
|
1696
|
+
}
|
|
1610
1697
|
|
|
1611
1698
|
// src/adapter/memo/memo-type.ts
|
|
1612
|
-
import { asCallbackMethodCall } from "@barefootjs/jsx";
|
|
1699
|
+
import { asCallbackMethodCall as asCallbackMethodCall2 } from "@barefootjs/jsx";
|
|
1613
1700
|
function isListFilterMemo(memo) {
|
|
1614
1701
|
if (!memo.parsed)
|
|
1615
1702
|
return false;
|
|
1616
|
-
const cb =
|
|
1703
|
+
const cb = asCallbackMethodCall2(memo.parsed);
|
|
1617
1704
|
return cb !== null && cb.method === "filter";
|
|
1618
1705
|
}
|
|
1619
1706
|
function isBooleanMemo(ctx, memo, signals, propsParamMap) {
|
|
@@ -1912,10 +1999,10 @@ function computeObjectMemoInitialValue(ctx, memo) {
|
|
|
1912
1999
|
|
|
1913
2000
|
// src/adapter/memo/memo-compute.ts
|
|
1914
2001
|
import {
|
|
1915
|
-
asCallbackMethodCall as
|
|
1916
|
-
freeVarsInBody as
|
|
1917
|
-
materializeGetterCalls,
|
|
1918
|
-
serializeParsedExpr as
|
|
2002
|
+
asCallbackMethodCall as asCallbackMethodCall3,
|
|
2003
|
+
freeVarsInBody as freeVarsInBody3,
|
|
2004
|
+
materializeGetterCalls as materializeGetterCalls2,
|
|
2005
|
+
serializeParsedExpr as serializeParsedExpr3
|
|
1919
2006
|
} from "@barefootjs/jsx";
|
|
1920
2007
|
|
|
1921
2008
|
// src/adapter/memo/template-interp.ts
|
|
@@ -2090,7 +2177,7 @@ function propNameForPropsBinding(ctx, e) {
|
|
|
2090
2177
|
return null;
|
|
2091
2178
|
}
|
|
2092
2179
|
function matchFilterArmMemo(ctx, body, signals, propsParams) {
|
|
2093
|
-
const cb =
|
|
2180
|
+
const cb = asCallbackMethodCall3(body);
|
|
2094
2181
|
if (!cb || cb.method !== "filter")
|
|
2095
2182
|
return null;
|
|
2096
2183
|
const propName = propsMemberName(cb.object);
|
|
@@ -2098,12 +2185,12 @@ function matchFilterArmMemo(ctx, body, signals, propsParams) {
|
|
|
2098
2185
|
if (!propName || !param)
|
|
2099
2186
|
return null;
|
|
2100
2187
|
const knownGetterNames = new Set(ctx.state.ssrSeedPlan.steps.filter((s) => s.kind !== "env-reader").map((s) => s.name));
|
|
2101
|
-
const materialized =
|
|
2102
|
-
const predJSON =
|
|
2188
|
+
const materialized = materializeGetterCalls2(cb.arrow.body, knownGetterNames);
|
|
2189
|
+
const predJSON = serializeParsedExpr3(materialized);
|
|
2103
2190
|
if (predJSON === null)
|
|
2104
2191
|
return null;
|
|
2105
2192
|
const paramName = cb.arrow.params[0] ?? "_";
|
|
2106
|
-
const freeVars =
|
|
2193
|
+
const freeVars = freeVarsInBody3(materialized, new Set(cb.arrow.params));
|
|
2107
2194
|
return { propName, predJSON, paramName, freeVars };
|
|
2108
2195
|
}
|
|
2109
2196
|
function filterArmEarlierSiblingRefs(ctx, memo, signals, propsParams) {
|
|
@@ -2345,6 +2432,30 @@ function memoInitialFromParsedBody(ctx, body, signals, propsParams, propFallback
|
|
|
2345
2432
|
if (param)
|
|
2346
2433
|
return `in.${capitalizeFieldName(body.name)}`;
|
|
2347
2434
|
}
|
|
2435
|
+
if (body.kind === "binary" && body.op === "+") {
|
|
2436
|
+
const concatGo = resolveStringConcatChainGo(ctx, body, signals, propsParams, propFallbackVars, propRef);
|
|
2437
|
+
if (concatGo !== null)
|
|
2438
|
+
return concatGo;
|
|
2439
|
+
}
|
|
2440
|
+
return null;
|
|
2441
|
+
}
|
|
2442
|
+
function resolveStringConcatChainGo(ctx, expr, signals, propsParams, propFallbackVars, propRef) {
|
|
2443
|
+
if (expr.kind === "binary" && expr.op === "+") {
|
|
2444
|
+
const l = resolveStringConcatChainGo(ctx, expr.left, signals, propsParams, propFallbackVars, propRef);
|
|
2445
|
+
const r = resolveStringConcatChainGo(ctx, expr.right, signals, propsParams, propFallbackVars, propRef);
|
|
2446
|
+
return l !== null && r !== null ? `${l} + ${r}` : null;
|
|
2447
|
+
}
|
|
2448
|
+
if (expr.kind === "literal" && expr.literalType === "string") {
|
|
2449
|
+
return JSON.stringify(expr.value);
|
|
2450
|
+
}
|
|
2451
|
+
const propName = propsMemberName(expr) ?? (expr.kind === "identifier" ? expr.name : null);
|
|
2452
|
+
if (propName && propsParams.some((p) => p.name === propName)) {
|
|
2453
|
+
return propRef(propName);
|
|
2454
|
+
}
|
|
2455
|
+
const chain = matchMapJoinChain(expr);
|
|
2456
|
+
if (chain) {
|
|
2457
|
+
return mapJoinChainToGo(ctx, chain, signals, propsParams, propFallbackVars);
|
|
2458
|
+
}
|
|
2348
2459
|
return null;
|
|
2349
2460
|
}
|
|
2350
2461
|
function computeMemoInitialValueOrNull(ctx, memo, signals, propsParams, propFallbackVars = EMPTY_PROP_FALLBACK_VARS2, resolving = new Set) {
|
|
@@ -5171,7 +5282,7 @@ ${goFields.join(`
|
|
|
5171
5282
|
return `${obj}.${goFieldNameForKey(property)}`;
|
|
5172
5283
|
}
|
|
5173
5284
|
indexAccess(object, index, emit) {
|
|
5174
|
-
return `
|
|
5285
|
+
return `bf_get ${wrapIfMultiToken(emit(object))} ${wrapIfMultiToken(emit(index))}`;
|
|
5175
5286
|
}
|
|
5176
5287
|
binary(op, left, right, emit) {
|
|
5177
5288
|
const l = emit(left);
|
|
@@ -5303,7 +5414,7 @@ ${goFields.join(`
|
|
|
5303
5414
|
"some"
|
|
5304
5415
|
]);
|
|
5305
5416
|
higherOrderShapeOf(node) {
|
|
5306
|
-
const cb =
|
|
5417
|
+
const cb = asCallbackMethodCall4(node);
|
|
5307
5418
|
if (!cb)
|
|
5308
5419
|
return null;
|
|
5309
5420
|
if (!GoTemplateAdapter.PREDICATE_METHODS.has(cb.method))
|
|
@@ -5751,7 +5862,7 @@ ${goFields.join(`
|
|
|
5751
5862
|
if (expr.callee.kind === "identifier" && expr.args.length === 0) {
|
|
5752
5863
|
return `$.${capitalizeFieldName(expr.callee.name)}`;
|
|
5753
5864
|
}
|
|
5754
|
-
if (
|
|
5865
|
+
if (asCallbackMethodCall4(expr) !== null) {
|
|
5755
5866
|
return this.refuseFilterExprNode(expr);
|
|
5756
5867
|
}
|
|
5757
5868
|
const result = this.renderFilterExpr(expr.callee, param, localVarMap, datumField);
|
|
@@ -6170,7 +6281,7 @@ ${goFields.join(`
|
|
|
6170
6281
|
});
|
|
6171
6282
|
return plain("false");
|
|
6172
6283
|
}
|
|
6173
|
-
if (
|
|
6284
|
+
if (asCallbackMethodCall4(expr)) {
|
|
6174
6285
|
const rendered = this.renderParsedExpr(expr);
|
|
6175
6286
|
const split = this.splitPreamble(rendered);
|
|
6176
6287
|
if (split)
|
|
@@ -6672,7 +6783,7 @@ ${children}`;
|
|
|
6672
6783
|
const trimmed = value.expr.trim();
|
|
6673
6784
|
const currentLoopParam = this.loopParamStack[this.loopParamStack.length - 1];
|
|
6674
6785
|
if (currentLoopParam && trimmed === currentLoopParam) {
|
|
6675
|
-
return `{{bf_spread_attrs .}}`;
|
|
6786
|
+
return `{{bf_spread_attrs (bf_js_keys .)}}`;
|
|
6676
6787
|
}
|
|
6677
6788
|
const restInfo = this.lookupRestExclude(trimmed);
|
|
6678
6789
|
if (restInfo) {
|
|
@@ -6681,7 +6792,7 @@ ${children}`;
|
|
|
6681
6792
|
return `{{bf_spread_attrs (bf_omit ${omitArgs})}}`;
|
|
6682
6793
|
}
|
|
6683
6794
|
const goExpr = this.convertExpressionToGo(value.expr);
|
|
6684
|
-
return `{{bf_spread_attrs ${goExpr}}}`;
|
|
6795
|
+
return `{{bf_spread_attrs (bf_js_keys ${wrapIfMultiToken(goExpr)})}}`;
|
|
6685
6796
|
}
|
|
6686
6797
|
return `{{bf_spread_attrs .${value.slotId}}}`;
|
|
6687
6798
|
},
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
isSupported,
|
|
32
32
|
exprToString,
|
|
33
33
|
identifierPath,
|
|
34
|
-
asCallbackMethodCall as
|
|
34
|
+
asCallbackMethodCall as asCallbackMethodCall4,
|
|
35
35
|
sortComparatorFromArrow,
|
|
36
36
|
emitParsedExpr,
|
|
37
37
|
emitIRNode,
|
|
@@ -971,6 +971,14 @@ function renderLoweringNode(ctx, node) {
|
|
|
971
971
|
return `${helper} ${parts.join(" ")}`;
|
|
972
972
|
}
|
|
973
973
|
|
|
974
|
+
// src/adapter/value/value-lowering.ts
|
|
975
|
+
import {
|
|
976
|
+
asCallbackMethodCall,
|
|
977
|
+
freeVarsInBody as freeVarsInBody2,
|
|
978
|
+
materializeGetterCalls,
|
|
979
|
+
serializeParsedExpr as serializeParsedExpr2
|
|
980
|
+
} from "@barefootjs/jsx";
|
|
981
|
+
|
|
974
982
|
// src/adapter/type/type-codegen.ts
|
|
975
983
|
function collapseLiteralUnion(typeInfo) {
|
|
976
984
|
if (typeInfo.kind !== "union" || !typeInfo.unionTypes || typeInfo.unionTypes.length === 0) {
|
|
@@ -1191,6 +1199,14 @@ function convertInitialValue(ctx, value, _typeInfo, propsParams, preParsed) {
|
|
|
1191
1199
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
1192
1200
|
return value;
|
|
1193
1201
|
}
|
|
1202
|
+
if (preParsed) {
|
|
1203
|
+
const chain = matchMapJoinChain(preParsed);
|
|
1204
|
+
if (chain) {
|
|
1205
|
+
const chainGo = mapJoinChainToGo(ctx, chain, [], propsParams ?? [], EMPTY_PROP_FALLBACK_VARS);
|
|
1206
|
+
if (chainGo !== null)
|
|
1207
|
+
return chainGo;
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1194
1210
|
return '""';
|
|
1195
1211
|
}
|
|
1196
1212
|
}
|
|
@@ -1267,13 +1283,84 @@ function getSignalInitialValueAsGo(ctx, initialValue, propsParams, propFallbackV
|
|
|
1267
1283
|
}
|
|
1268
1284
|
return "0";
|
|
1269
1285
|
}
|
|
1286
|
+
function matchMapJoinChain(expr) {
|
|
1287
|
+
if (expr.kind !== "array-method" || expr.method !== "join")
|
|
1288
|
+
return null;
|
|
1289
|
+
const mapCb = asCallbackMethodCall(expr.object);
|
|
1290
|
+
if (!mapCb || mapCb.method !== "map")
|
|
1291
|
+
return null;
|
|
1292
|
+
return { object: mapCb.object, arrow: mapCb.arrow, sepArg: expr.args[0] };
|
|
1293
|
+
}
|
|
1294
|
+
function resolveMapJoinBaseAsGo(ctx, object, signals, propsParams) {
|
|
1295
|
+
if (object.kind === "call" && object.callee.kind === "identifier" && object.args.length === 0) {
|
|
1296
|
+
const calleeName = object.callee.name;
|
|
1297
|
+
const sig = signals.find((s) => s.getter === calleeName);
|
|
1298
|
+
if (sig) {
|
|
1299
|
+
const bakeType = ctx.state.synthStructTypes.get(sig.getter) ?? sig.type ?? { kind: "array", raw: "unknown[]" };
|
|
1300
|
+
return convertInitialValue(ctx, sig.initialValue, bakeType, propsParams, sig.parsed);
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
const propName = object.kind === "member" && !object.computed && object.object.kind === "identifier" && object.object.name === "props" ? object.property : object.kind === "identifier" ? object.name : null;
|
|
1304
|
+
if (propName && propsParams.some((p) => p.name === propName)) {
|
|
1305
|
+
return `in.${capitalizeFieldName(propName)}`;
|
|
1306
|
+
}
|
|
1307
|
+
if (object.kind === "array-literal") {
|
|
1308
|
+
if (object.elements.length === 0)
|
|
1309
|
+
return "[]interface{}{}";
|
|
1310
|
+
const elems = [];
|
|
1311
|
+
for (const el of object.elements) {
|
|
1312
|
+
const go = el.kind === "object-literal" ? objectLiteralToGoMap(ctx, el) : parsedLiteralToGo(ctx, el);
|
|
1313
|
+
if (go === null)
|
|
1314
|
+
return null;
|
|
1315
|
+
elems.push(go);
|
|
1316
|
+
}
|
|
1317
|
+
return `[]interface{}{${elems.join(", ")}}`;
|
|
1318
|
+
}
|
|
1319
|
+
return null;
|
|
1320
|
+
}
|
|
1321
|
+
function mapJoinChainToGo(ctx, chain, signals, propsParams, propFallbackVars) {
|
|
1322
|
+
const itemsGo = resolveMapJoinBaseAsGo(ctx, chain.object, signals, propsParams);
|
|
1323
|
+
if (itemsGo === null)
|
|
1324
|
+
return null;
|
|
1325
|
+
const knownGetterNames = new Set(signals.map((s) => s.getter));
|
|
1326
|
+
const materialized = materializeGetterCalls(chain.arrow.body, knownGetterNames);
|
|
1327
|
+
const projJSON = serializeParsedExpr2(materialized);
|
|
1328
|
+
if (projJSON === null)
|
|
1329
|
+
return null;
|
|
1330
|
+
const paramName = chain.arrow.params[0] ?? "_";
|
|
1331
|
+
const freeVars = freeVarsInBody2(materialized, new Set(chain.arrow.params));
|
|
1332
|
+
const envEntries = [];
|
|
1333
|
+
for (const name of freeVars) {
|
|
1334
|
+
const sig = signals.find((s) => s.getter === name);
|
|
1335
|
+
let goExpr = null;
|
|
1336
|
+
if (sig) {
|
|
1337
|
+
goExpr = getSignalInitialValueAsGo(ctx, sig.initialValue, propsParams, propFallbackVars, sig.type);
|
|
1338
|
+
} else if (propsParams.some((p) => p.name === name)) {
|
|
1339
|
+
const hoisted = propFallbackVars.get(name);
|
|
1340
|
+
goExpr = hoisted ? hoisted.varName : `in.${capitalizeFieldName(name)}`;
|
|
1341
|
+
}
|
|
1342
|
+
if (goExpr === null)
|
|
1343
|
+
return null;
|
|
1344
|
+
envEntries.push(`${JSON.stringify(name)}: ${goExpr}`);
|
|
1345
|
+
}
|
|
1346
|
+
const envMap = `map[string]any{${envEntries.join(", ")}}`;
|
|
1347
|
+
let sepGo;
|
|
1348
|
+
if (!chain.sepArg) {
|
|
1349
|
+
sepGo = JSON.stringify(",");
|
|
1350
|
+
} else if (chain.sepArg.kind === "literal" && chain.sepArg.literalType === "string") {
|
|
1351
|
+
sepGo = JSON.stringify(chain.sepArg.value);
|
|
1352
|
+
} else {
|
|
1353
|
+
return null;
|
|
1354
|
+
}
|
|
1355
|
+
return `bf.Join(bf.MapEval(${itemsGo}, "${escapeGoString(projJSON)}", ${JSON.stringify(paramName)}, ${envMap}), ${sepGo})`;
|
|
1356
|
+
}
|
|
1270
1357
|
|
|
1271
1358
|
// src/adapter/memo/memo-type.ts
|
|
1272
|
-
import { asCallbackMethodCall } from "@barefootjs/jsx";
|
|
1359
|
+
import { asCallbackMethodCall as asCallbackMethodCall2 } from "@barefootjs/jsx";
|
|
1273
1360
|
function isListFilterMemo(memo) {
|
|
1274
1361
|
if (!memo.parsed)
|
|
1275
1362
|
return false;
|
|
1276
|
-
const cb =
|
|
1363
|
+
const cb = asCallbackMethodCall2(memo.parsed);
|
|
1277
1364
|
return cb !== null && cb.method === "filter";
|
|
1278
1365
|
}
|
|
1279
1366
|
function isBooleanMemo(ctx, memo, signals, propsParamMap) {
|
|
@@ -1572,10 +1659,10 @@ function computeObjectMemoInitialValue(ctx, memo) {
|
|
|
1572
1659
|
|
|
1573
1660
|
// src/adapter/memo/memo-compute.ts
|
|
1574
1661
|
import {
|
|
1575
|
-
asCallbackMethodCall as
|
|
1576
|
-
freeVarsInBody as
|
|
1577
|
-
materializeGetterCalls,
|
|
1578
|
-
serializeParsedExpr as
|
|
1662
|
+
asCallbackMethodCall as asCallbackMethodCall3,
|
|
1663
|
+
freeVarsInBody as freeVarsInBody3,
|
|
1664
|
+
materializeGetterCalls as materializeGetterCalls2,
|
|
1665
|
+
serializeParsedExpr as serializeParsedExpr3
|
|
1579
1666
|
} from "@barefootjs/jsx";
|
|
1580
1667
|
|
|
1581
1668
|
// src/adapter/memo/template-interp.ts
|
|
@@ -1750,7 +1837,7 @@ function propNameForPropsBinding(ctx, e) {
|
|
|
1750
1837
|
return null;
|
|
1751
1838
|
}
|
|
1752
1839
|
function matchFilterArmMemo(ctx, body, signals, propsParams) {
|
|
1753
|
-
const cb =
|
|
1840
|
+
const cb = asCallbackMethodCall3(body);
|
|
1754
1841
|
if (!cb || cb.method !== "filter")
|
|
1755
1842
|
return null;
|
|
1756
1843
|
const propName = propsMemberName(cb.object);
|
|
@@ -1758,12 +1845,12 @@ function matchFilterArmMemo(ctx, body, signals, propsParams) {
|
|
|
1758
1845
|
if (!propName || !param)
|
|
1759
1846
|
return null;
|
|
1760
1847
|
const knownGetterNames = new Set(ctx.state.ssrSeedPlan.steps.filter((s) => s.kind !== "env-reader").map((s) => s.name));
|
|
1761
|
-
const materialized =
|
|
1762
|
-
const predJSON =
|
|
1848
|
+
const materialized = materializeGetterCalls2(cb.arrow.body, knownGetterNames);
|
|
1849
|
+
const predJSON = serializeParsedExpr3(materialized);
|
|
1763
1850
|
if (predJSON === null)
|
|
1764
1851
|
return null;
|
|
1765
1852
|
const paramName = cb.arrow.params[0] ?? "_";
|
|
1766
|
-
const freeVars =
|
|
1853
|
+
const freeVars = freeVarsInBody3(materialized, new Set(cb.arrow.params));
|
|
1767
1854
|
return { propName, predJSON, paramName, freeVars };
|
|
1768
1855
|
}
|
|
1769
1856
|
function filterArmEarlierSiblingRefs(ctx, memo, signals, propsParams) {
|
|
@@ -2005,6 +2092,30 @@ function memoInitialFromParsedBody(ctx, body, signals, propsParams, propFallback
|
|
|
2005
2092
|
if (param)
|
|
2006
2093
|
return `in.${capitalizeFieldName(body.name)}`;
|
|
2007
2094
|
}
|
|
2095
|
+
if (body.kind === "binary" && body.op === "+") {
|
|
2096
|
+
const concatGo = resolveStringConcatChainGo(ctx, body, signals, propsParams, propFallbackVars, propRef);
|
|
2097
|
+
if (concatGo !== null)
|
|
2098
|
+
return concatGo;
|
|
2099
|
+
}
|
|
2100
|
+
return null;
|
|
2101
|
+
}
|
|
2102
|
+
function resolveStringConcatChainGo(ctx, expr, signals, propsParams, propFallbackVars, propRef) {
|
|
2103
|
+
if (expr.kind === "binary" && expr.op === "+") {
|
|
2104
|
+
const l = resolveStringConcatChainGo(ctx, expr.left, signals, propsParams, propFallbackVars, propRef);
|
|
2105
|
+
const r = resolveStringConcatChainGo(ctx, expr.right, signals, propsParams, propFallbackVars, propRef);
|
|
2106
|
+
return l !== null && r !== null ? `${l} + ${r}` : null;
|
|
2107
|
+
}
|
|
2108
|
+
if (expr.kind === "literal" && expr.literalType === "string") {
|
|
2109
|
+
return JSON.stringify(expr.value);
|
|
2110
|
+
}
|
|
2111
|
+
const propName = propsMemberName(expr) ?? (expr.kind === "identifier" ? expr.name : null);
|
|
2112
|
+
if (propName && propsParams.some((p) => p.name === propName)) {
|
|
2113
|
+
return propRef(propName);
|
|
2114
|
+
}
|
|
2115
|
+
const chain = matchMapJoinChain(expr);
|
|
2116
|
+
if (chain) {
|
|
2117
|
+
return mapJoinChainToGo(ctx, chain, signals, propsParams, propFallbackVars);
|
|
2118
|
+
}
|
|
2008
2119
|
return null;
|
|
2009
2120
|
}
|
|
2010
2121
|
function computeMemoInitialValueOrNull(ctx, memo, signals, propsParams, propFallbackVars = EMPTY_PROP_FALLBACK_VARS2, resolving = new Set) {
|
|
@@ -4831,7 +4942,7 @@ ${goFields.join(`
|
|
|
4831
4942
|
return `${obj}.${goFieldNameForKey(property)}`;
|
|
4832
4943
|
}
|
|
4833
4944
|
indexAccess(object, index, emit) {
|
|
4834
|
-
return `
|
|
4945
|
+
return `bf_get ${wrapIfMultiToken(emit(object))} ${wrapIfMultiToken(emit(index))}`;
|
|
4835
4946
|
}
|
|
4836
4947
|
binary(op, left, right, emit) {
|
|
4837
4948
|
const l = emit(left);
|
|
@@ -4963,7 +5074,7 @@ ${goFields.join(`
|
|
|
4963
5074
|
"some"
|
|
4964
5075
|
]);
|
|
4965
5076
|
higherOrderShapeOf(node) {
|
|
4966
|
-
const cb =
|
|
5077
|
+
const cb = asCallbackMethodCall4(node);
|
|
4967
5078
|
if (!cb)
|
|
4968
5079
|
return null;
|
|
4969
5080
|
if (!GoTemplateAdapter.PREDICATE_METHODS.has(cb.method))
|
|
@@ -5411,7 +5522,7 @@ ${goFields.join(`
|
|
|
5411
5522
|
if (expr.callee.kind === "identifier" && expr.args.length === 0) {
|
|
5412
5523
|
return `$.${capitalizeFieldName(expr.callee.name)}`;
|
|
5413
5524
|
}
|
|
5414
|
-
if (
|
|
5525
|
+
if (asCallbackMethodCall4(expr) !== null) {
|
|
5415
5526
|
return this.refuseFilterExprNode(expr);
|
|
5416
5527
|
}
|
|
5417
5528
|
const result = this.renderFilterExpr(expr.callee, param, localVarMap, datumField);
|
|
@@ -5830,7 +5941,7 @@ ${goFields.join(`
|
|
|
5830
5941
|
});
|
|
5831
5942
|
return plain("false");
|
|
5832
5943
|
}
|
|
5833
|
-
if (
|
|
5944
|
+
if (asCallbackMethodCall4(expr)) {
|
|
5834
5945
|
const rendered = this.renderParsedExpr(expr);
|
|
5835
5946
|
const split = this.splitPreamble(rendered);
|
|
5836
5947
|
if (split)
|
|
@@ -6332,7 +6443,7 @@ ${children}`;
|
|
|
6332
6443
|
const trimmed = value.expr.trim();
|
|
6333
6444
|
const currentLoopParam = this.loopParamStack[this.loopParamStack.length - 1];
|
|
6334
6445
|
if (currentLoopParam && trimmed === currentLoopParam) {
|
|
6335
|
-
return `{{bf_spread_attrs .}}`;
|
|
6446
|
+
return `{{bf_spread_attrs (bf_js_keys .)}}`;
|
|
6336
6447
|
}
|
|
6337
6448
|
const restInfo = this.lookupRestExclude(trimmed);
|
|
6338
6449
|
if (restInfo) {
|
|
@@ -6341,7 +6452,7 @@ ${children}`;
|
|
|
6341
6452
|
return `{{bf_spread_attrs (bf_omit ${omitArgs})}}`;
|
|
6342
6453
|
}
|
|
6343
6454
|
const goExpr = this.convertExpressionToGo(value.expr);
|
|
6344
|
-
return `{{bf_spread_attrs ${goExpr}}}`;
|
|
6455
|
+
return `{{bf_spread_attrs (bf_js_keys ${wrapIfMultiToken(goExpr)})}}`;
|
|
6345
6456
|
}
|
|
6346
6457
|
return `{{bf_spread_attrs .${value.slotId}}}`;
|
|
6347
6458
|
},
|
|
@@ -6504,11 +6615,7 @@ var conformancePins = {
|
|
|
6504
6615
|
};
|
|
6505
6616
|
// src/render-divergences.ts
|
|
6506
6617
|
var renderDivergences = {
|
|
6507
|
-
"aliased-destructured-prop": 'aliased destructured prop `{ n: count }` loses its rename — the Input struct field is Count `json:"count"`, so the caller-side struct literal keyed by the real prop name fails `go run` outright (unknown field N, exit 1) (https://github.com/piconic-ai/barefootjs/issues/2460)'
|
|
6508
|
-
"nested-loop-tail-content": "the `inLoop` clobber is FIXED (#2487) — outer-row content after a nested loop now takes the loop arms and the spread resolves row-scoped. Residual: the spread's attribute NAMES are still mangled by the Go-cased-key kebab conversion (`data-kind` → `-data-kind`), which is #2490; this entry graduates with that fix (https://github.com/piconic-ai/barefootjs/issues/2490)",
|
|
6509
|
-
"loop-param-shadows-spread-const": "spreading a loop row object mangles attribute names (`id` → `-i-d`, `title` → `-title`); the spread VALUE is correctly row-scoped, distinguishing this from the template-adapter const-shadow hole #2489 (https://github.com/piconic-ai/barefootjs/issues/2490)",
|
|
6510
|
-
"loop-param-shadows-record-template-span": "a dynamic-key element access on a loop row (`tone[k]`) renders empty at execute time — the emitted template contains no baked const (correct post-fix), but the row lookup resolves to nothing (https://github.com/piconic-ai/barefootjs/issues/2491)",
|
|
6511
|
-
"callback-param-shadows-prop": "JS-computed signal/memo initializers (`[…].map(…).join(…)`, memo over signal + prop) don't seed Go SSR — renders `[]` / empty where every other adapter renders the computed value; hydration snaps to correct (https://github.com/piconic-ai/barefootjs/issues/2492)"
|
|
6618
|
+
"aliased-destructured-prop": 'aliased destructured prop `{ n: count }` loses its rename — the Input struct field is Count `json:"count"`, so the caller-side struct literal keyed by the real prop name fails `go run` outright (unknown field N, exit 1) (https://github.com/piconic-ai/barefootjs/issues/2460)'
|
|
6512
6619
|
};
|
|
6513
6620
|
export {
|
|
6514
6621
|
renderDivergences,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-divergences.d.ts","sourceRoot":"","sources":["../src/render-divergences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"render-divergences.d.ts","sourceRoot":"","sources":["../src/render-divergences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,eAAO,MAAM,iBAAiB,EAAE,iBAwB/B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/go-template",
|
|
3
|
-
"version": "0.30.
|
|
3
|
+
"version": "0.30.5",
|
|
4
4
|
"description": "Go html/template adapter for BarefootJS - generates Go template files from IR",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"directory": "packages/adapter-go-template"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@barefootjs/shared": "0.30.
|
|
52
|
+
"@barefootjs/shared": "0.30.5"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"@barefootjs/jsx": ">=0.2.0",
|
|
@@ -57,6 +57,6 @@
|
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@barefootjs/adapter-tests": "0.1.0",
|
|
60
|
-
"@barefootjs/jsx": "0.30.
|
|
60
|
+
"@barefootjs/jsx": "0.30.5"
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -4024,11 +4024,22 @@ export class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter,
|
|
|
4024
4024
|
}
|
|
4025
4025
|
|
|
4026
4026
|
indexAccess(object: ParsedExpr, index: ParsedExpr, emit: (e: ParsedExpr) => string): string {
|
|
4027
|
-
// Go's
|
|
4028
|
-
//
|
|
4029
|
-
//
|
|
4030
|
-
//
|
|
4031
|
-
|
|
4027
|
+
// Go's builtin `index` is exact-case only, and the shared analyzer
|
|
4028
|
+
// types a dynamic index (e.g. a destructured .map() param used as a
|
|
4029
|
+
// key, `tone[k]`) as `{kind:'unknown'}` — there is no compile-time
|
|
4030
|
+
// witness available to guess whether the runtime value will be a
|
|
4031
|
+
// string key or a numeric index (#2491). Route through the runtime's
|
|
4032
|
+
// case-tolerant, kind-polymorphic `bf_get` (`getFieldValue`, bf.go)
|
|
4033
|
+
// instead of guessing: it dispatches on the receiver's REFLECTED
|
|
4034
|
+
// kind (map/struct vs slice/array/string) and accepts either a
|
|
4035
|
+
// string or numeric `field` argument, so it's a strict superset of
|
|
4036
|
+
// `index` — genuine numeric-index uses (`selected()[i]`) keep
|
|
4037
|
+
// working, and string-keyed row lookups now resolve too. Both
|
|
4038
|
+
// operands render through the same emitter so a loop-variable /
|
|
4039
|
+
// arithmetic index lowers correctly. A multi-token operand
|
|
4040
|
+
// (`bf_add $i 1`) must be parenthesised or Go parses it as extra
|
|
4041
|
+
// `bf_get` arguments.
|
|
4042
|
+
return `bf_get ${wrapIfMultiToken(emit(object))} ${wrapIfMultiToken(emit(index))}`
|
|
4032
4043
|
}
|
|
4033
4044
|
|
|
4034
4045
|
binary(op: string, left: ParsedExpr, right: ParsedExpr, emit: (e: ParsedExpr) => string): string {
|
|
@@ -6828,7 +6839,15 @@ export class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter,
|
|
|
6828
6839
|
const trimmed = value.expr.trim()
|
|
6829
6840
|
const currentLoopParam = this.loopParamStack[this.loopParamStack.length - 1]
|
|
6830
6841
|
if (currentLoopParam && trimmed === currentLoopParam) {
|
|
6831
|
-
|
|
6842
|
+
// The row's keys are Go-cased by the field-access contract: the
|
|
6843
|
+
// same lowering that makes `attrs.id` emit `{{.ID}}`
|
|
6844
|
+
// (`goFieldNameForKey` → `capitalizeFieldName`) requires the
|
|
6845
|
+
// seeded row map/struct to be keyed `ID`/`Title`/`DataKind`.
|
|
6846
|
+
// `bf_js_keys` (bf.go) undoes just that capitalization — struct
|
|
6847
|
+
// via json tag, map via the `capitalizeFieldName` inverse —
|
|
6848
|
+
// before `toAttrName`'s UNCHANGED camelCase→kebab conversion
|
|
6849
|
+
// sees the real JS names (#2490).
|
|
6850
|
+
return `{{bf_spread_attrs (bf_js_keys .)}}`
|
|
6832
6851
|
}
|
|
6833
6852
|
// Destructure object-rest spread onto an element (`{...rest}`, #2087
|
|
6834
6853
|
// Phase B): `rest` alone would spread the WHOLE item (every field,
|
|
@@ -6837,17 +6856,32 @@ export class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter,
|
|
|
6837
6856
|
// exactly those sibling keys. Only a spread whose expr is the BARE
|
|
6838
6857
|
// rest name matches (`isLowerableLoopDestructure`'s admitted shape);
|
|
6839
6858
|
// anything else (`{...fn(rest)}`) already refused at the IR gate.
|
|
6859
|
+
// `Omit` already recovers original names via json tag (struct) /
|
|
6860
|
+
// passthrough (map), so this arm does NOT need `bf_js_keys`.
|
|
6840
6861
|
const restInfo = this.lookupRestExclude(trimmed)
|
|
6841
6862
|
if (restInfo) {
|
|
6842
6863
|
const excludeArgs = restInfo.excludeKeys.map(k => JSON.stringify(k)).join(' ')
|
|
6843
6864
|
const omitArgs = excludeArgs ? `${restInfo.parent} ${excludeArgs}` : restInfo.parent
|
|
6844
6865
|
return `{{bf_spread_attrs (bf_omit ${omitArgs})}}`
|
|
6845
6866
|
}
|
|
6867
|
+
// A field/member read off the loop row (`{...g.extra}`) — same
|
|
6868
|
+
// Go-casing exposure as the bare-item case above, PLUS an
|
|
6869
|
+
// ambiguity the compiler can't resolve at compile time: a
|
|
6870
|
+
// `Record<string, string>` field's runtime map could have been
|
|
6871
|
+
// seeded with JS-native data keys (`data-kind`) OR Go-cased
|
|
6872
|
+
// field-name keys, and nothing in the TYPE says which. `bf_js_keys`
|
|
6873
|
+
// is a no-op on an already-lowercase-first-rune key (lowercasing
|
|
6874
|
+
// `data-kind`'s first rune changes nothing) and corrective on a
|
|
6875
|
+
// Go-cased one, so wrapping here is safe for both conventions
|
|
6876
|
+
// rather than betting on one (#2490).
|
|
6846
6877
|
const goExpr = this.convertExpressionToGo(value.expr)
|
|
6847
6878
|
// `convertExpressionToGo` already pushes BF101 for unsupported
|
|
6848
6879
|
// expressions and returns `""`; pass through so the template still
|
|
6849
6880
|
// compiles.
|
|
6850
|
-
|
|
6881
|
+
// `goExpr` is not necessarily a single token — a member spread can
|
|
6882
|
+
// lower to a pipeline (`bf_get . $.K`), which the template parser
|
|
6883
|
+
// would otherwise read as extra ARGUMENTS to `bf_js_keys`.
|
|
6884
|
+
return `{{bf_spread_attrs (bf_js_keys ${wrapIfMultiToken(goExpr)})}}`
|
|
6851
6885
|
}
|
|
6852
6886
|
return `{{bf_spread_attrs .${value.slotId}}}`
|
|
6853
6887
|
},
|
|
@@ -20,7 +20,12 @@ import type { GoEmitContext } from '../emit-context.ts'
|
|
|
20
20
|
import type { PropFallbackVar } from '../lib/types.ts'
|
|
21
21
|
import { capitalizeFieldName } from '../lib/go-naming.ts'
|
|
22
22
|
import { escapeGoString } from '../lib/go-emit.ts'
|
|
23
|
-
import {
|
|
23
|
+
import {
|
|
24
|
+
convertInitialValue,
|
|
25
|
+
getSignalInitialValueAsGo,
|
|
26
|
+
mapJoinChainToGo,
|
|
27
|
+
matchMapJoinChain,
|
|
28
|
+
} from '../value/value-lowering.ts'
|
|
24
29
|
import { typeInfoToGo } from '../type/type-codegen.ts'
|
|
25
30
|
import { computeTemplateLiteralMemoInitialValue } from './template-interp.ts'
|
|
26
31
|
import { resolveBlockBodyMemoModuleConst, computeObjectMemoInitialValue } from './memo-value.ts'
|
|
@@ -572,6 +577,60 @@ export function memoInitialFromParsedBody(
|
|
|
572
577
|
if (param) return `in.${capitalizeFieldName(body.name)}`
|
|
573
578
|
}
|
|
574
579
|
|
|
580
|
+
// () => <a> + <b> + … — a string-concatenation chain whose every leaf is a
|
|
581
|
+
// string literal, a prop reference, or a `.map(cb).join(sep)` chain
|
|
582
|
+
// (#2492's `joined` memo: `title + ':' + items().map((title) =>
|
|
583
|
+
// title.a).join(',')`). Doesn't grow into a general `binary` catalogue
|
|
584
|
+
// entry — only fires for a pure `+` tree resolvable end-to-end via
|
|
585
|
+
// `resolveStringConcatChainGo`; any other leaf shape falls through to the
|
|
586
|
+
// caller's zero-value default, same as any other unsupported shape.
|
|
587
|
+
if (body.kind === 'binary' && body.op === '+') {
|
|
588
|
+
const concatGo = resolveStringConcatChainGo(ctx, body, signals, propsParams, propFallbackVars, propRef)
|
|
589
|
+
if (concatGo !== null) return concatGo
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
return null
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* `<expr> + <expr> + …` chain whose every leaf resolves to a Go string
|
|
597
|
+
* expression: a string literal, a prop reference (`propRef`, hoisted-aware),
|
|
598
|
+
* or a `.map(cb).join(sep)` chain ({@link matchMapJoinChain} /
|
|
599
|
+
* {@link mapJoinChainToGo} — `value-lowering.ts`, #2492). Recurses on nested
|
|
600
|
+
* `+` so a left-associative chain (`a + b + c` parses as `(a + b) + c`)
|
|
601
|
+
* resolves leaf-by-leaf.
|
|
602
|
+
*
|
|
603
|
+
* @returns the concatenated Go expression, or null when any leaf isn't one
|
|
604
|
+
* of the three shapes above
|
|
605
|
+
*/
|
|
606
|
+
function resolveStringConcatChainGo(
|
|
607
|
+
ctx: GoEmitContext,
|
|
608
|
+
expr: ParsedExpr,
|
|
609
|
+
signals: { getter: string; initialValue: string; type?: TypeInfo }[],
|
|
610
|
+
propsParams: { name: string; type?: TypeInfo; defaultValue?: string }[],
|
|
611
|
+
propFallbackVars: ReadonlyMap<string, PropFallbackVar>,
|
|
612
|
+
propRef: (propName: string) => string,
|
|
613
|
+
): string | null {
|
|
614
|
+
if (expr.kind === 'binary' && expr.op === '+') {
|
|
615
|
+
const l = resolveStringConcatChainGo(ctx, expr.left, signals, propsParams, propFallbackVars, propRef)
|
|
616
|
+
const r = resolveStringConcatChainGo(ctx, expr.right, signals, propsParams, propFallbackVars, propRef)
|
|
617
|
+
return l !== null && r !== null ? `${l} + ${r}` : null
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
if (expr.kind === 'literal' && expr.literalType === 'string') {
|
|
621
|
+
return JSON.stringify(expr.value)
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
const propName = propsMemberName(expr) ?? (expr.kind === 'identifier' ? expr.name : null)
|
|
625
|
+
if (propName && propsParams.some(p => p.name === propName)) {
|
|
626
|
+
return propRef(propName)
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
const chain = matchMapJoinChain(expr)
|
|
630
|
+
if (chain) {
|
|
631
|
+
return mapJoinChainToGo(ctx, chain, signals, propsParams, propFallbackVars)
|
|
632
|
+
}
|
|
633
|
+
|
|
575
634
|
return null
|
|
576
635
|
}
|
|
577
636
|
|
|
@@ -6,10 +6,17 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import type { ParsedExpr, TypeInfo } from '@barefootjs/jsx'
|
|
9
|
+
import {
|
|
10
|
+
asCallbackMethodCall,
|
|
11
|
+
freeVarsInBody,
|
|
12
|
+
materializeGetterCalls,
|
|
13
|
+
serializeParsedExpr,
|
|
14
|
+
} from '@barefootjs/jsx'
|
|
9
15
|
|
|
10
16
|
import type { GoEmitContext } from '../emit-context.ts'
|
|
11
17
|
import type { PropFallbackVar } from '../lib/types.ts'
|
|
12
18
|
import { capitalizeFieldName } from '../lib/go-naming.ts'
|
|
19
|
+
import { escapeGoString } from '../lib/go-emit.ts'
|
|
13
20
|
import { parsedLiteralToGo } from './parsed-literal-to-go.ts'
|
|
14
21
|
import { collapseLiteralUnion } from '../type/type-codegen.ts'
|
|
15
22
|
|
|
@@ -103,6 +110,20 @@ export function convertInitialValue(
|
|
|
103
110
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
104
111
|
return value
|
|
105
112
|
}
|
|
113
|
+
// A `.map(cb).join(sep)` chain (#2492): the analyzer's `.join()`
|
|
114
|
+
// trailing-suffix rule (`inferTypeFromValue`) types a signal carrying
|
|
115
|
+
// this shape `string`, so it lands HERE rather than the `array`
|
|
116
|
+
// branch below — bake it the same way a memo's derived `.map().join()`
|
|
117
|
+
// value bakes (`memoInitialFromParsedBody`'s sibling arm in
|
|
118
|
+
// `memo-compute.ts`), through the runtime evaluator's `MapEval` +
|
|
119
|
+
// `Join` composition, instead of falling to the `""` zero value.
|
|
120
|
+
if (preParsed) {
|
|
121
|
+
const chain = matchMapJoinChain(preParsed)
|
|
122
|
+
if (chain) {
|
|
123
|
+
const chainGo = mapJoinChainToGo(ctx, chain, [], propsParams ?? [], EMPTY_PROP_FALLBACK_VARS)
|
|
124
|
+
if (chainGo !== null) return chainGo
|
|
125
|
+
}
|
|
126
|
+
}
|
|
106
127
|
return '""'
|
|
107
128
|
}
|
|
108
129
|
}
|
|
@@ -243,3 +264,154 @@ export function getSignalInitialValueAsGo(
|
|
|
243
264
|
|
|
244
265
|
return '0'
|
|
245
266
|
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* A value-producing `.map(cb).join(sep)` chain — `<object>.map((param) =>
|
|
270
|
+
* <body>).join(<sepExpr>)` — the constructor-Go-source analogue of the
|
|
271
|
+
* template-position `bf_join (bf_map_eval …)` lowering (`emitMapEval`,
|
|
272
|
+
* `go-emit.ts`). `.join(...)` folds to the `array-method` IR node at parse
|
|
273
|
+
* time (`expression-parser.ts`); its `object` is recognised as a `.map(cb)`
|
|
274
|
+
* callback call via `asCallbackMethodCall` (the same recognition
|
|
275
|
+
* `matchFilterArmMemo`, `memo-compute.ts`, uses for `.filter`). Returns the
|
|
276
|
+
* receiver array, the mapper arrow, and the join separator argument (absent
|
|
277
|
+
* when `.join()` was called with no argument — JS defaults to `,`), or null
|
|
278
|
+
* when `expr` isn't this shape.
|
|
279
|
+
*/
|
|
280
|
+
export function matchMapJoinChain(expr: ParsedExpr): {
|
|
281
|
+
object: ParsedExpr
|
|
282
|
+
arrow: Extract<ParsedExpr, { kind: 'arrow' }>
|
|
283
|
+
sepArg?: ParsedExpr
|
|
284
|
+
} | null {
|
|
285
|
+
if (expr.kind !== 'array-method' || expr.method !== 'join') return null
|
|
286
|
+
const mapCb = asCallbackMethodCall(expr.object)
|
|
287
|
+
if (!mapCb || mapCb.method !== 'map') return null
|
|
288
|
+
return { object: mapCb.object, arrow: mapCb.arrow, sepArg: expr.args[0] }
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Resolve a `.map().join()` chain's receiver array to a Go expression — a
|
|
293
|
+
* signal-backed field, a prop field, or an inline array literal.
|
|
294
|
+
*
|
|
295
|
+
* A SIGNAL receiver (`items()`) re-derives the signal's own initial value
|
|
296
|
+
* from ITS OWN initializer (`convertInitialValue`, baked against the
|
|
297
|
+
* synthesised element struct in `state.synthStructTypes` when one was
|
|
298
|
+
* inferred for it) rather than referencing a struct field — this expression
|
|
299
|
+
* is itself one field value inside the SAME `<Props>{ ... }` composite
|
|
300
|
+
* literal the signal's own field is being built into, so it can't reference
|
|
301
|
+
* a sibling field by name. Mirrors `resolveGetterValueAsGo` /
|
|
302
|
+
* `getSignalInitialValueAsGo`'s existing convention of re-deriving a
|
|
303
|
+
* referenced signal rather than pointing at a not-yet-assigned field.
|
|
304
|
+
*
|
|
305
|
+
* A PROP receiver (`props.X` / bare destructured `X`) resolves to a bare
|
|
306
|
+
* `in.<Field>` reference, mirroring `matchFilterArmMemo`'s `itemsField` (no
|
|
307
|
+
* nillable-scalar type assertion — the receiver is an array, never one of
|
|
308
|
+
* the scalar kinds that assertion guards).
|
|
309
|
+
*
|
|
310
|
+
* An array-LITERAL receiver bakes element-by-element: an object element goes
|
|
311
|
+
* through `objectLiteralToGoMap` (a plain `map[string]interface{}`, source-
|
|
312
|
+
* cased keys) rather than `jsLiteralToGo`'s struct-backed baking, since this
|
|
313
|
+
* nested literal is a `.map()` RECEIVER, not a signal's own typed value, and
|
|
314
|
+
* so has no named struct synthesised for it.
|
|
315
|
+
*
|
|
316
|
+
* @returns the Go expression, or null when the receiver isn't one of the
|
|
317
|
+
* three shapes above, or an object-array-literal element doesn't bake.
|
|
318
|
+
*/
|
|
319
|
+
function resolveMapJoinBaseAsGo(
|
|
320
|
+
ctx: GoEmitContext,
|
|
321
|
+
object: ParsedExpr,
|
|
322
|
+
signals: { getter: string; initialValue: string; type?: TypeInfo; parsed?: ParsedExpr }[],
|
|
323
|
+
propsParams: { name: string }[],
|
|
324
|
+
): string | null {
|
|
325
|
+
if (object.kind === 'call' && object.callee.kind === 'identifier' && object.args.length === 0) {
|
|
326
|
+
const calleeName = object.callee.name
|
|
327
|
+
const sig = signals.find(s => s.getter === calleeName)
|
|
328
|
+
if (sig) {
|
|
329
|
+
const bakeType = ctx.state.synthStructTypes.get(sig.getter) ?? sig.type ?? { kind: 'array', raw: 'unknown[]' }
|
|
330
|
+
return convertInitialValue(ctx, sig.initialValue, bakeType, propsParams, sig.parsed)
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
const propName =
|
|
335
|
+
object.kind === 'member' && !object.computed && object.object.kind === 'identifier' && object.object.name === 'props'
|
|
336
|
+
? object.property
|
|
337
|
+
: object.kind === 'identifier'
|
|
338
|
+
? object.name
|
|
339
|
+
: null
|
|
340
|
+
if (propName && propsParams.some(p => p.name === propName)) {
|
|
341
|
+
return `in.${capitalizeFieldName(propName)}`
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (object.kind === 'array-literal') {
|
|
345
|
+
if (object.elements.length === 0) return '[]interface{}{}'
|
|
346
|
+
const elems: string[] = []
|
|
347
|
+
for (const el of object.elements) {
|
|
348
|
+
const go = el.kind === 'object-literal' ? objectLiteralToGoMap(ctx, el) : parsedLiteralToGo(ctx, el)
|
|
349
|
+
if (go === null) return null
|
|
350
|
+
elems.push(go)
|
|
351
|
+
}
|
|
352
|
+
return `[]interface{}{${elems.join(', ')}}`
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
return null
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Lower a `.map(cb).join(sep)` chain (matched by {@link matchMapJoinChain})
|
|
360
|
+
* to a `bf.Join(bf.MapEval(<items>, "<projJSON>", "<param>", <envMap>),
|
|
361
|
+
* <sep>)` Go expression — the constructor-source analogue of
|
|
362
|
+
* `matchFilterArmMemo`'s `bf.FilterEval` emit (`memo-compute.ts`), reusing
|
|
363
|
+
* the SAME two runtime evaluator functions (`MapEval`, `eval.go`; `Join`,
|
|
364
|
+
* `bf.go`) the template-position `bf_map_eval`/`bf_join` lowering already
|
|
365
|
+
* calls. Shared by a memo's derived value (`memoInitialFromParsedBody`'s
|
|
366
|
+
* concatenation-chain arm) and a SIGNAL's own initializer
|
|
367
|
+
* (`convertInitialValue`'s `string` branch, #2492).
|
|
368
|
+
*
|
|
369
|
+
* @returns the Go expression, or null when the receiver doesn't resolve
|
|
370
|
+
* ({@link resolveMapJoinBaseAsGo}), the projection body isn't
|
|
371
|
+
* representable to the runtime evaluator (`serializeParsedExpr` refusal),
|
|
372
|
+
* a captured free variable doesn't resolve, or the separator isn't a
|
|
373
|
+
* string literal (a dynamic separator — out of scope for this arm).
|
|
374
|
+
*/
|
|
375
|
+
export function mapJoinChainToGo(
|
|
376
|
+
ctx: GoEmitContext,
|
|
377
|
+
chain: { object: ParsedExpr; arrow: Extract<ParsedExpr, { kind: 'arrow' }>; sepArg?: ParsedExpr },
|
|
378
|
+
signals: { getter: string; initialValue: string; type?: TypeInfo; parsed?: ParsedExpr }[],
|
|
379
|
+
propsParams: { name: string }[],
|
|
380
|
+
propFallbackVars: ReadonlyMap<string, PropFallbackVar>,
|
|
381
|
+
): string | null {
|
|
382
|
+
const itemsGo = resolveMapJoinBaseAsGo(ctx, chain.object, signals, propsParams)
|
|
383
|
+
if (itemsGo === null) return null
|
|
384
|
+
|
|
385
|
+
const knownGetterNames = new Set(signals.map(s => s.getter))
|
|
386
|
+
const materialized = materializeGetterCalls(chain.arrow.body, knownGetterNames)
|
|
387
|
+
const projJSON = serializeParsedExpr(materialized)
|
|
388
|
+
if (projJSON === null) return null
|
|
389
|
+
|
|
390
|
+
const paramName = chain.arrow.params[0] ?? '_'
|
|
391
|
+
const freeVars = freeVarsInBody(materialized, new Set(chain.arrow.params))
|
|
392
|
+
const envEntries: string[] = []
|
|
393
|
+
for (const name of freeVars) {
|
|
394
|
+
const sig = signals.find(s => s.getter === name)
|
|
395
|
+
let goExpr: string | null = null
|
|
396
|
+
if (sig) {
|
|
397
|
+
goExpr = getSignalInitialValueAsGo(ctx, sig.initialValue, propsParams, propFallbackVars, sig.type)
|
|
398
|
+
} else if (propsParams.some(p => p.name === name)) {
|
|
399
|
+
const hoisted = propFallbackVars.get(name)
|
|
400
|
+
goExpr = hoisted ? hoisted.varName : `in.${capitalizeFieldName(name)}`
|
|
401
|
+
}
|
|
402
|
+
if (goExpr === null) return null
|
|
403
|
+
envEntries.push(`${JSON.stringify(name)}: ${goExpr}`)
|
|
404
|
+
}
|
|
405
|
+
const envMap = `map[string]any{${envEntries.join(', ')}}`
|
|
406
|
+
|
|
407
|
+
let sepGo: string
|
|
408
|
+
if (!chain.sepArg) {
|
|
409
|
+
sepGo = JSON.stringify(',')
|
|
410
|
+
} else if (chain.sepArg.kind === 'literal' && chain.sepArg.literalType === 'string') {
|
|
411
|
+
sepGo = JSON.stringify(chain.sepArg.value)
|
|
412
|
+
} else {
|
|
413
|
+
return null
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
return `bf.Join(bf.MapEval(${itemsGo}, "${escapeGoString(projJSON)}", ${JSON.stringify(paramName)}, ${envMap}), ${sepGo})`
|
|
417
|
+
}
|
|
@@ -40,16 +40,4 @@ export const renderDivergences: RenderDivergences = {
|
|
|
40
40
|
// `skipJsx` entries).
|
|
41
41
|
'aliased-destructured-prop':
|
|
42
42
|
'aliased destructured prop `{ n: count }` loses its rename — the Input struct field is Count `json:"count"`, so the caller-side struct literal keyed by the real prop name fails `go run` outright (unknown field N, exit 1) (https://github.com/piconic-ai/barefootjs/issues/2460)',
|
|
43
|
-
|
|
44
|
-
// #2482 audit follow-ups: loop-scope holes specific to this adapter's
|
|
45
|
-
// four-stack scope tracking and its SSR seeding. Graduate by applying
|
|
46
|
-
// the fix described in each issue and deleting the line.
|
|
47
|
-
'nested-loop-tail-content':
|
|
48
|
-
'the `inLoop` clobber is FIXED (#2487) — outer-row content after a nested loop now takes the loop arms and the spread resolves row-scoped. Residual: the spread\'s attribute NAMES are still mangled by the Go-cased-key kebab conversion (`data-kind` → `-data-kind`), which is #2490; this entry graduates with that fix (https://github.com/piconic-ai/barefootjs/issues/2490)',
|
|
49
|
-
'loop-param-shadows-spread-const':
|
|
50
|
-
'spreading a loop row object mangles attribute names (`id` → `-i-d`, `title` → `-title`); the spread VALUE is correctly row-scoped, distinguishing this from the template-adapter const-shadow hole #2489 (https://github.com/piconic-ai/barefootjs/issues/2490)',
|
|
51
|
-
'loop-param-shadows-record-template-span':
|
|
52
|
-
'a dynamic-key element access on a loop row (`tone[k]`) renders empty at execute time — the emitted template contains no baked const (correct post-fix), but the row lookup resolves to nothing (https://github.com/piconic-ai/barefootjs/issues/2491)',
|
|
53
|
-
'callback-param-shadows-prop':
|
|
54
|
-
'JS-computed signal/memo initializers (`[…].map(…).join(…)`, memo over signal + prop) don\'t seed Go SSR — renders `[]` / empty where every other adapter renders the computed value; hydration snaps to correct (https://github.com/piconic-ai/barefootjs/issues/2492)',
|
|
55
43
|
}
|