@barefootjs/go-template 0.19.0 → 0.20.0
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 +8 -2
- package/dist/adapter/go-template-adapter.d.ts.map +1 -1
- package/dist/adapter/index.js +156 -22
- package/dist/adapter/lib/compile-state.d.ts +16 -0
- package/dist/adapter/lib/compile-state.d.ts.map +1 -1
- package/dist/adapter/memo/memo-compute.d.ts +8 -0
- package/dist/adapter/memo/memo-compute.d.ts.map +1 -1
- package/dist/adapter/props/prop-types.d.ts +52 -0
- package/dist/adapter/props/prop-types.d.ts.map +1 -1
- package/dist/adapter/value/value-lowering.d.ts +9 -1
- package/dist/adapter/value/value-lowering.d.ts.map +1 -1
- package/dist/build.js +156 -22
- package/dist/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +158 -23
- package/package.json +3 -3
- package/src/__tests__/derived-state-memo.test.ts +10 -3
- package/src/__tests__/go-template-adapter.test.ts +144 -36
- package/src/adapter/go-template-adapter.ts +114 -38
- package/src/adapter/lib/compile-state.ts +18 -0
- package/src/adapter/memo/memo-compute.ts +123 -9
- package/src/adapter/props/prop-types.ts +141 -9
- package/src/adapter/value/value-lowering.ts +57 -4
- package/src/conformance-pins.ts +6 -0
|
@@ -428,6 +428,14 @@ export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExpr
|
|
|
428
428
|
*/
|
|
429
429
|
private renderDangerousInnerHtml;
|
|
430
430
|
renderExpression(expr: IRExpression): string;
|
|
431
|
+
/**
|
|
432
|
+
* The nillable-prop name a bare TEXT-position expression refers to, or
|
|
433
|
+
* null. Mirrors `nillablePropNameOf` (the `??`-lowering gate) but keys on
|
|
434
|
+
* `textConsumedPropNames` instead of `nullishConsumedPropNames` — a
|
|
435
|
+
* text-only optional scalar prop (`{size}`, never consumed by `??` or a
|
|
436
|
+
* bare omittable attribute) is in neither of those other two sets.
|
|
437
|
+
*/
|
|
438
|
+
private textNillablePropNameOf;
|
|
431
439
|
/**
|
|
432
440
|
* Whether a lowered Go string already carries its own `{{...}}` actions and so
|
|
433
441
|
* must NOT be re-wrapped (`{{ {{...}} }}` is a parse error). Single source of
|
|
@@ -679,8 +687,6 @@ export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExpr
|
|
|
679
687
|
* a non-wrapper (plain-element-body) loop, where `.` already IS the datum.
|
|
680
688
|
*/
|
|
681
689
|
private renderPredicateCondition;
|
|
682
|
-
/** Whether an expression needs parentheses when used in and/or. */
|
|
683
|
-
private needsParens;
|
|
684
690
|
/**
|
|
685
691
|
* Split a rendered template block into preamble + final expression.
|
|
686
692
|
* The last `{{...}}` must be a variable reference (`$bf_rN` or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-template-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/go-template-adapter.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAIpE,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,aAAa,EACb,MAAM,EAEN,WAAW,EACX,UAAU,EACV,MAAM,EAKN,aAAa,EAEb,UAAU,EACV,qBAAqB,EAGrB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,OAAO,EAEP,yBAAyB,EAE1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAE3B,KAAK,iBAAiB,EAEtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EA+BhB,MAAM,iBAAiB,CAAA;AA8BxB,OAAO,KAAK,EACV,WAAW,EAOX,wBAAwB,EACzB,MAAM,gBAAgB,CAAA;AAyBvB,YAAY,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AA2B9D,qBAAa,iBAAkB,SAAQ,WAAY,YAAW,iBAAiB,EAAE,aAAa,CAAC,WAAW,CAAC;IACzG,IAAI,SAAgB;IACpB,SAAS,SAAU;IAInB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA0B;IAChE,kBAAkB,EAAG,cAAc,CAAS;IAM5C,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,qBAAqB,CAAQ;IAErC;;;;;;;;;OASG;IACH,kBAAkB,EAAE,yBAAyB,CAG1C;IAEH;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAGtC;IAEH,OAAO,CAAC,OAAO,CAAoC;IAEnD,kIAAkI;IAClI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAUvB;IAED,wHAAwH;IACxH,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED,OAAO,CAAC,MAAM,CAAiB;IAC/B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,yBAAyB,CAAiD;IAClF,OAAO,CAAC,cAAc,CAAe;IACrC;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB,CAAe;IACxC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAAgB;IAC3C;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAiC;IACxD;;;;;oEAKgE;IAChE,OAAO,CAAC,gBAAgB,CAAiC;IACzD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB,CAAoE;IAChG;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,mBAAmB,CAA8C;IACzE;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB,CAAQ;IAEpC;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB,CAA8C;IAE1E,8FAA8F;IAC9F,OAAO,CAAC,qBAAqB,CAA4C;IAGzE,YAAY,OAAO,GAAE,wBAA6B,EAOjD;IAED;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;
|
|
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
|
@@ -368,6 +368,8 @@ class CompileState {
|
|
|
368
368
|
nillablePropNames = new Set;
|
|
369
369
|
nullishConsumedPropNames = new Set;
|
|
370
370
|
omittableAttrConsumedPropNames = new Set;
|
|
371
|
+
textConsumedPropNames = new Set;
|
|
372
|
+
presenceCheckedPropNames = new Set;
|
|
371
373
|
stringValueNames = new Set;
|
|
372
374
|
rootScopeNodes = new Set;
|
|
373
375
|
memoBackedLoopSlice = new Map;
|
|
@@ -1111,15 +1113,28 @@ function parsedLiteralToGo(ctx, expr, typeInfo) {
|
|
|
1111
1113
|
|
|
1112
1114
|
// src/adapter/value/value-lowering.ts
|
|
1113
1115
|
var EMPTY_PROP_FALLBACK_VARS = new Map;
|
|
1116
|
+
function nillableAwarePropRef(ctx, propName, expectedType) {
|
|
1117
|
+
const fieldRef = `in.${capitalizeFieldName(propName)}`;
|
|
1118
|
+
const scalar = expectedType.kind === "primitive" ? expectedType : expectedType.kind === "union" && expectedType.unionTypes?.length === 2 ? expectedType.unionTypes.find((t) => t.primitive !== "undefined" && t.primitive !== "null") : undefined;
|
|
1119
|
+
if (ctx.state.nillablePropNames.has(propName) && scalar?.kind === "primitive") {
|
|
1120
|
+
const goType = scalar.primitive === "boolean" ? "bool" : scalar.primitive === "number" ? "float64" : scalar.primitive === "string" ? "string" : null;
|
|
1121
|
+
if (goType) {
|
|
1122
|
+
const zero = goType === "bool" ? "false" : goType === "string" ? '""' : "0";
|
|
1123
|
+
return `func() ${goType} { if v, ok := ${fieldRef}.(${goType}); ok { return v }; return ${zero} }()`;
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
return fieldRef;
|
|
1127
|
+
}
|
|
1114
1128
|
function convertInitialValue(ctx, value, typeInfo, propsParams, preParsed) {
|
|
1129
|
+
const propRef = (propName2) => nillableAwarePropRef(ctx, propName2, typeInfo);
|
|
1115
1130
|
if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(value)) {
|
|
1116
1131
|
if (propsParams?.some((p) => p.name === value)) {
|
|
1117
|
-
return
|
|
1132
|
+
return propRef(value);
|
|
1118
1133
|
}
|
|
1119
1134
|
}
|
|
1120
1135
|
const propName = ctx.extractPropNameFromInitialValue(value, preParsed);
|
|
1121
1136
|
if (propName && propsParams?.some((p) => p.name === propName)) {
|
|
1122
|
-
return
|
|
1137
|
+
return propRef(propName);
|
|
1123
1138
|
}
|
|
1124
1139
|
if (typeInfo.kind === "primitive") {
|
|
1125
1140
|
if (typeInfo.primitive === "boolean") {
|
|
@@ -1186,19 +1201,20 @@ function objectLiteralToGoMap(ctx, expr) {
|
|
|
1186
1201
|
return null;
|
|
1187
1202
|
return `map[string]interface{}{${entries.join(", ")}}`;
|
|
1188
1203
|
}
|
|
1189
|
-
function getSignalInitialValueAsGo(ctx, initialValue, propsParams, propFallbackVars = EMPTY_PROP_FALLBACK_VARS) {
|
|
1204
|
+
function getSignalInitialValueAsGo(ctx, initialValue, propsParams, propFallbackVars = EMPTY_PROP_FALLBACK_VARS, signalType) {
|
|
1205
|
+
const propRef = (propName2) => signalType ? nillableAwarePropRef(ctx, propName2, signalType) : `in.${capitalizeFieldName(propName2)}`;
|
|
1190
1206
|
if (propsParams.some((p) => p.name === initialValue)) {
|
|
1191
1207
|
const hoisted = propFallbackVars.get(initialValue);
|
|
1192
1208
|
if (hoisted)
|
|
1193
1209
|
return hoisted.varName;
|
|
1194
|
-
return
|
|
1210
|
+
return propRef(initialValue);
|
|
1195
1211
|
}
|
|
1196
1212
|
const propName = ctx.extractPropNameFromInitialValue(initialValue);
|
|
1197
1213
|
if (propName && propsParams.some((p) => p.name === propName)) {
|
|
1198
1214
|
const hoisted = propFallbackVars.get(propName);
|
|
1199
1215
|
if (hoisted)
|
|
1200
1216
|
return hoisted.varName;
|
|
1201
|
-
return
|
|
1217
|
+
return propRef(propName);
|
|
1202
1218
|
}
|
|
1203
1219
|
if (/^-?\d+$/.test(initialValue)) {
|
|
1204
1220
|
return initialValue;
|
|
@@ -1668,9 +1684,34 @@ var EMPTY_PROP_FALLBACK_VARS2 = new Map;
|
|
|
1668
1684
|
function getterCallName(e) {
|
|
1669
1685
|
return e.kind === "call" && e.callee.kind === "identifier" && e.args.length === 0 ? e.callee.name : null;
|
|
1670
1686
|
}
|
|
1687
|
+
function isBooleanTypeInfo(t) {
|
|
1688
|
+
if (t.kind === "primitive")
|
|
1689
|
+
return t.primitive === "boolean";
|
|
1690
|
+
if (t.kind === "union" && t.unionTypes?.length === 2) {
|
|
1691
|
+
const scalar = t.unionTypes.find((u) => u.primitive !== "undefined" && u.primitive !== "null");
|
|
1692
|
+
return scalar?.kind === "primitive" && scalar.primitive === "boolean";
|
|
1693
|
+
}
|
|
1694
|
+
return false;
|
|
1695
|
+
}
|
|
1696
|
+
function isBooleanTypedGetter(ctx, name, signals) {
|
|
1697
|
+
const signal = signals.find((s) => s.getter === name);
|
|
1698
|
+
if (signal)
|
|
1699
|
+
return signal.type !== undefined && isBooleanTypeInfo(signal.type);
|
|
1700
|
+
const memo = (ctx.state.currentMemos ?? []).find((m) => m.name === name);
|
|
1701
|
+
return memo?.type !== undefined && isBooleanTypeInfo(memo.type);
|
|
1702
|
+
}
|
|
1671
1703
|
function propsMemberName(e) {
|
|
1672
1704
|
return e.kind === "member" && !e.computed && e.object.kind === "identifier" && e.object.name === "props" ? e.property : null;
|
|
1673
1705
|
}
|
|
1706
|
+
function propNameForPropsBinding(ctx, e) {
|
|
1707
|
+
const propsObject = ctx.state.propsObjectName;
|
|
1708
|
+
if (e.kind === "member" && !e.computed && e.object.kind === "identifier" && e.object.name === propsObject) {
|
|
1709
|
+
return e.property;
|
|
1710
|
+
}
|
|
1711
|
+
if (!propsObject && e.kind === "identifier")
|
|
1712
|
+
return e.name;
|
|
1713
|
+
return null;
|
|
1714
|
+
}
|
|
1674
1715
|
function matchFilterArmMemo(ctx, body, signals, propsParams) {
|
|
1675
1716
|
const cb = asCallbackMethodCall2(body);
|
|
1676
1717
|
if (!cb || cb.method !== "filter")
|
|
@@ -1809,6 +1850,17 @@ function memoInitialFromParsedBody(ctx, body, signals, propsParams, propFallback
|
|
|
1809
1850
|
if (propName)
|
|
1810
1851
|
return propRef(propName);
|
|
1811
1852
|
}
|
|
1853
|
+
if (body.kind === "binary" && (body.op === "!==" || body.op === "!=" || body.op === "===" || body.op === "==")) {
|
|
1854
|
+
const other = body.right.kind === "identifier" && body.right.name === "undefined" ? body.left : body.left.kind === "identifier" && body.left.name === "undefined" ? body.right : null;
|
|
1855
|
+
const propName = other ? propNameForPropsBinding(ctx, other) : null;
|
|
1856
|
+
if (propName) {
|
|
1857
|
+
const param = propsParams.find((p) => p.name === propName);
|
|
1858
|
+
if (param && ctx.state.nillablePropNames.has(propName)) {
|
|
1859
|
+
const isNe = body.op === "!==" || body.op === "!=";
|
|
1860
|
+
return `in.${capitalizeFieldName(propName)} ${isNe ? "!=" : "=="} nil`;
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
}
|
|
1812
1864
|
if (body.kind === "conditional") {
|
|
1813
1865
|
const condName = getterCallName(body.test);
|
|
1814
1866
|
if (condName) {
|
|
@@ -1843,6 +1895,18 @@ function memoInitialFromParsedBody(ctx, body, signals, propsParams, propFallback
|
|
|
1843
1895
|
}
|
|
1844
1896
|
}
|
|
1845
1897
|
}
|
|
1898
|
+
if (condName) {
|
|
1899
|
+
const tName = getterCallName(body.consequent);
|
|
1900
|
+
const fName = getterCallName(body.alternate);
|
|
1901
|
+
if (tName && fName && isBooleanTypedGetter(ctx, tName, signals) && isBooleanTypedGetter(ctx, fName, signals)) {
|
|
1902
|
+
const condGo = resolveGetterValueAsGo(ctx, condName, signals, propsParams, propFallbackVars, resolving);
|
|
1903
|
+
const tGo = resolveGetterValueAsGo(ctx, tName, signals, propsParams, propFallbackVars, resolving);
|
|
1904
|
+
const fGo = resolveGetterValueAsGo(ctx, fName, signals, propsParams, propFallbackVars, resolving);
|
|
1905
|
+
if (condGo !== null && tGo !== null && fGo !== null) {
|
|
1906
|
+
return `func() bool { if ${condGo} { return ${tGo} }; return ${fGo} }()`;
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1846
1910
|
}
|
|
1847
1911
|
if (body.kind === "binary" && ["*", "+", "-", "/"].includes(body.op) && body.right.kind === "literal" && body.right.literalType === "number" && typeof body.right.value === "number" && Number.isInteger(body.right.value) && body.right.value >= 0) {
|
|
1848
1912
|
const operator = body.op;
|
|
@@ -1931,7 +1995,7 @@ function computeMemoInitialValueOrNull(ctx, memo, signals, propsParams, propFall
|
|
|
1931
1995
|
function resolveGetterValueAsGo(ctx, name, signals, propsParams, propFallbackVars, resolving = new Set) {
|
|
1932
1996
|
const signal = signals.find((s) => s.getter === name);
|
|
1933
1997
|
if (signal) {
|
|
1934
|
-
return getSignalInitialValueAsGo(ctx, signal.initialValue, propsParams, propFallbackVars);
|
|
1998
|
+
return getSignalInitialValueAsGo(ctx, signal.initialValue, propsParams, propFallbackVars, signal.type);
|
|
1935
1999
|
}
|
|
1936
2000
|
const memo = (ctx.state.currentMemos ?? []).find((m) => m.name === name);
|
|
1937
2001
|
if (memo) {
|
|
@@ -2333,8 +2397,10 @@ function collectNullishConsumedPropNames(ctx, ir) {
|
|
|
2333
2397
|
const propNameOfLeft = (left) => {
|
|
2334
2398
|
if (left.kind === "identifier")
|
|
2335
2399
|
return left.name;
|
|
2336
|
-
if (left.kind === "member" && !left.computed && left.object.kind === "identifier"
|
|
2337
|
-
|
|
2400
|
+
if (left.kind === "member" && !left.computed && left.object.kind === "identifier") {
|
|
2401
|
+
if (left.object.name === propsObject)
|
|
2402
|
+
return left.property;
|
|
2403
|
+
return left.object.name;
|
|
2338
2404
|
}
|
|
2339
2405
|
return null;
|
|
2340
2406
|
};
|
|
@@ -2405,12 +2471,60 @@ function collectOmittableAttrConsumedPropNames(ctx, ir) {
|
|
|
2405
2471
|
walk(ir.root);
|
|
2406
2472
|
return names;
|
|
2407
2473
|
}
|
|
2474
|
+
function collectTextConsumedPropNames(ctx, ir) {
|
|
2475
|
+
const names = new Set;
|
|
2476
|
+
const optionalParams = new Set(ir.metadata.propsParams.filter((p) => p.optional && p.defaultValue == null && p.type.kind === "primitive").map((p) => p.name));
|
|
2477
|
+
if (optionalParams.size === 0)
|
|
2478
|
+
return names;
|
|
2479
|
+
const propsObject = ctx.state.propsObjectName;
|
|
2480
|
+
const walk = (node) => {
|
|
2481
|
+
if (!node || typeof node !== "object")
|
|
2482
|
+
return;
|
|
2483
|
+
if (Array.isArray(node)) {
|
|
2484
|
+
for (const item of node)
|
|
2485
|
+
walk(item);
|
|
2486
|
+
return;
|
|
2487
|
+
}
|
|
2488
|
+
const rec = node;
|
|
2489
|
+
if (rec.type === "expression") {
|
|
2490
|
+
const bareId = String(rec.expr ?? "").trim();
|
|
2491
|
+
const propName = propsObject && bareId.startsWith(`${propsObject}.`) ? bareId.slice(propsObject.length + 1) : bareId;
|
|
2492
|
+
if (/^[A-Za-z_$][\w$]*$/.test(propName) && optionalParams.has(propName)) {
|
|
2493
|
+
names.add(propName);
|
|
2494
|
+
}
|
|
2495
|
+
}
|
|
2496
|
+
for (const value of Object.values(rec))
|
|
2497
|
+
walk(value);
|
|
2498
|
+
};
|
|
2499
|
+
walk(ir.root);
|
|
2500
|
+
return names;
|
|
2501
|
+
}
|
|
2502
|
+
function collectPresenceCheckedPropNames(ctx, ir) {
|
|
2503
|
+
const names = new Set;
|
|
2504
|
+
const optionalParams = new Set(ir.metadata.propsParams.filter((p) => p.optional && p.defaultValue == null && p.type.kind === "primitive").map((p) => p.name));
|
|
2505
|
+
if (optionalParams.size === 0)
|
|
2506
|
+
return names;
|
|
2507
|
+
const propsObject = ctx.state.propsObjectName;
|
|
2508
|
+
const isUndefinedCheck = (op) => op === "!==" || op === "!=" || op === "===" || op === "==";
|
|
2509
|
+
for (const memo of ir.metadata.memos) {
|
|
2510
|
+
const body = memo.parsed;
|
|
2511
|
+
if (!body || body.kind !== "binary" || !isUndefinedCheck(body.op))
|
|
2512
|
+
continue;
|
|
2513
|
+
const other = body.right.kind === "identifier" && body.right.name === "undefined" ? body.left : body.left.kind === "identifier" && body.left.name === "undefined" ? body.right : null;
|
|
2514
|
+
if (!other)
|
|
2515
|
+
continue;
|
|
2516
|
+
const propName = other.kind === "member" && !other.computed && other.object.kind === "identifier" && other.object.name === propsObject ? other.property : !propsObject && other.kind === "identifier" ? other.name : null;
|
|
2517
|
+
if (propName && optionalParams.has(propName))
|
|
2518
|
+
names.add(propName);
|
|
2519
|
+
}
|
|
2520
|
+
return names;
|
|
2521
|
+
}
|
|
2408
2522
|
function resolvePropGoType(ctx, param, propTypeOverrides) {
|
|
2409
2523
|
const base = propTypeOverrides.get(param.name) ?? typeInfoToGo(ctx, param.type, param.defaultValue);
|
|
2410
2524
|
if (param.optional && ctx.state.localStructFields.has(base)) {
|
|
2411
2525
|
return "map[string]interface{}";
|
|
2412
2526
|
}
|
|
2413
|
-
if (param.optional && param.type.kind === "primitive" && (ctx.state.nullishConsumedPropNames.has(param.name) || ctx.state.omittableAttrConsumedPropNames.has(param.name)) && NULLISH_SCALAR_GO_TYPES.has(base)) {
|
|
2527
|
+
if (param.optional && param.type.kind === "primitive" && (ctx.state.nullishConsumedPropNames.has(param.name) || ctx.state.omittableAttrConsumedPropNames.has(param.name) || ctx.state.textConsumedPropNames.has(param.name) || ctx.state.presenceCheckedPropNames.has(param.name)) && NULLISH_SCALAR_GO_TYPES.has(base)) {
|
|
2414
2528
|
return "interface{}";
|
|
2415
2529
|
}
|
|
2416
2530
|
return base;
|
|
@@ -2547,6 +2661,8 @@ class GoTemplateAdapter extends BaseAdapter {
|
|
|
2547
2661
|
this.buildLocalTypeTables(ir, ir.metadata.componentName);
|
|
2548
2662
|
this.state.nullishConsumedPropNames = collectNullishConsumedPropNames(this.emitCtx, ir);
|
|
2549
2663
|
this.state.omittableAttrConsumedPropNames = collectOmittableAttrConsumedPropNames(this.emitCtx, ir);
|
|
2664
|
+
this.state.textConsumedPropNames = collectTextConsumedPropNames(this.emitCtx, ir);
|
|
2665
|
+
this.state.presenceCheckedPropNames = collectPresenceCheckedPropNames(this.emitCtx, ir);
|
|
2550
2666
|
this.state.nillablePropNames = collectNillablePropNames(this.emitCtx, ir);
|
|
2551
2667
|
}
|
|
2552
2668
|
generate(ir, options) {
|
|
@@ -4229,10 +4345,22 @@ ${goFields.join(`
|
|
|
4229
4345
|
}
|
|
4230
4346
|
return goExpr;
|
|
4231
4347
|
}
|
|
4348
|
+
const finalExpr = this.textNillablePropNameOf(classify.parsed) !== null ? `bf_string ${wrapIfMultiToken(goExpr)}` : goExpr;
|
|
4232
4349
|
if (expr.slotId) {
|
|
4233
|
-
return `{{bfTextStart "${expr.slotId}"}}{{${
|
|
4350
|
+
return `{{bfTextStart "${expr.slotId}"}}{{${finalExpr}}}{{bfTextEnd}}`;
|
|
4234
4351
|
}
|
|
4235
|
-
return `{{${
|
|
4352
|
+
return `{{${finalExpr}}}`;
|
|
4353
|
+
}
|
|
4354
|
+
textNillablePropNameOf(expr) {
|
|
4355
|
+
if (!expr)
|
|
4356
|
+
return null;
|
|
4357
|
+
let name = null;
|
|
4358
|
+
if (expr.kind === "identifier") {
|
|
4359
|
+
name = expr.name;
|
|
4360
|
+
} else if (expr.kind === "member" && !expr.computed && expr.object.kind === "identifier" && expr.object.name === this.state.propsObjectName) {
|
|
4361
|
+
name = expr.property;
|
|
4362
|
+
}
|
|
4363
|
+
return name !== null && this.state.textConsumedPropNames.has(name) && this.state.nillablePropNames.has(name) ? name : null;
|
|
4236
4364
|
}
|
|
4237
4365
|
isTemplateFragment(go, kind) {
|
|
4238
4366
|
return go.startsWith("{{") || kind === "template-literal";
|
|
@@ -4448,7 +4576,7 @@ ${goFields.join(`
|
|
|
4448
4576
|
}
|
|
4449
4577
|
const obj = emit(object);
|
|
4450
4578
|
if (property === "length")
|
|
4451
|
-
return `
|
|
4579
|
+
return `bf_length ${wrapIfMultiToken(obj)}`;
|
|
4452
4580
|
if (optional) {
|
|
4453
4581
|
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(goFieldNameForKey(property))}`;
|
|
4454
4582
|
}
|
|
@@ -4526,8 +4654,12 @@ ${goFields.join(`
|
|
|
4526
4654
|
let name = null;
|
|
4527
4655
|
if (expr.kind === "identifier") {
|
|
4528
4656
|
name = expr.name;
|
|
4529
|
-
} else if (expr.kind === "member" && !expr.computed && expr.object.kind === "identifier"
|
|
4530
|
-
name
|
|
4657
|
+
} else if (expr.kind === "member" && !expr.computed && expr.object.kind === "identifier") {
|
|
4658
|
+
if (expr.object.name === this.state.propsObjectName) {
|
|
4659
|
+
name = expr.property;
|
|
4660
|
+
} else {
|
|
4661
|
+
name = expr.object.name;
|
|
4662
|
+
}
|
|
4531
4663
|
}
|
|
4532
4664
|
return name !== null && this.state.nullishConsumedPropNames.has(name) && this.state.nillablePropNames.has(name) ? name : null;
|
|
4533
4665
|
}
|
|
@@ -4962,9 +5094,6 @@ ${goFields.join(`
|
|
|
4962
5094
|
renderPredicateCondition(pred, param, datumField) {
|
|
4963
5095
|
return this.renderFilterExpr(pred, param, new Map, datumField ?? undefined);
|
|
4964
5096
|
}
|
|
4965
|
-
needsParens(expr) {
|
|
4966
|
-
return expr.kind === "logical" || expr.kind === "unary" || expr.kind === "conditional";
|
|
4967
|
-
}
|
|
4968
5097
|
splitPreamble(rendered) {
|
|
4969
5098
|
if (!rendered.includes("{{"))
|
|
4970
5099
|
return null;
|
|
@@ -5377,7 +5506,8 @@ ${goFields.join(`
|
|
|
5377
5506
|
return plain(this.rootFieldRef(expr.callee.name));
|
|
5378
5507
|
}
|
|
5379
5508
|
if (expr.callee.kind === "identifier" && (identifierPath(expr.callee) ?? expr.callee.name) === "isValidElement" && expr.args.length === 1) {
|
|
5380
|
-
|
|
5509
|
+
const inner = this.renderConditionExpr(expr.args[0]);
|
|
5510
|
+
return { preamble: inner.preamble, expr: `(bf_is_element ${wrapIfMultiToken(inner.expr)})` };
|
|
5381
5511
|
}
|
|
5382
5512
|
if (expr.callee.kind === "identifier" && !this.templatePrimitives[identifierPath(expr.callee) ?? ""]) {
|
|
5383
5513
|
const path = identifierPath(expr.callee) ?? expr.callee.name;
|
|
@@ -5494,9 +5624,9 @@ ${goFields.join(`
|
|
|
5494
5624
|
const leftResult = this.renderConditionExpr(expr.left);
|
|
5495
5625
|
const rightResult = this.renderConditionExpr(expr.right);
|
|
5496
5626
|
const preamble = leftResult.preamble + rightResult.preamble;
|
|
5497
|
-
const wrapLeft =
|
|
5498
|
-
const wrapRight =
|
|
5499
|
-
const result = expr.op === "&&" ? `and ${wrapLeft} ${wrapRight}` : `or ${wrapLeft} ${wrapRight}`;
|
|
5627
|
+
const wrapLeft = wrapIfMultiToken(leftResult.expr);
|
|
5628
|
+
const wrapRight = wrapIfMultiToken(rightResult.expr);
|
|
5629
|
+
const result = expr.op === "&&" ? `and ${wrapLeft} ${wrapRight}` : expr.op === "??" && this.nillablePropNameOf(expr.left) !== null ? `bf_nullish ${wrapLeft} ${wrapRight}` : `or ${wrapLeft} ${wrapRight}`;
|
|
5500
5630
|
return { preamble, expr: result };
|
|
5501
5631
|
}
|
|
5502
5632
|
case "conditional": {
|
|
@@ -5909,7 +6039,11 @@ ${children}`;
|
|
|
5909
6039
|
if (e.kind === "expr" && !isSupported(parseExpression4(e.expr)).supported)
|
|
5910
6040
|
return null;
|
|
5911
6041
|
}
|
|
5912
|
-
|
|
6042
|
+
const args = entries.flatMap((e) => [
|
|
6043
|
+
JSON.stringify(e.cssKey),
|
|
6044
|
+
e.kind === "literal" ? JSON.stringify(e.value) : wrapIfMultiToken(this.convertExpressionToGo(e.expr))
|
|
6045
|
+
]);
|
|
6046
|
+
return `{{bf_style_object ${args.join(" ")}}}`;
|
|
5913
6047
|
}
|
|
5914
6048
|
renderAttributes(element) {
|
|
5915
6049
|
const parts = [];
|
|
@@ -131,6 +131,22 @@ export declare class CompileState {
|
|
|
131
131
|
* the attribute-omission guard (`{{if ne .X nil}}`) needs a nillable field.
|
|
132
132
|
*/
|
|
133
133
|
omittableAttrConsumedPropNames: Set<string>;
|
|
134
|
+
/**
|
|
135
|
+
* OPTIONAL no-default prop names consumed as a BARE TEXT-position
|
|
136
|
+
* expression value (`{size}`) — #2267. Same `resolvePropGoType` flip and
|
|
137
|
+
* same populate-before-first-resolve ordering as
|
|
138
|
+
* `nullishConsumedPropNames`: the text emitter's nil-safe `bf_string`
|
|
139
|
+
* wrap needs a nillable field to have something to guard.
|
|
140
|
+
*/
|
|
141
|
+
textConsumedPropNames: Set<string>;
|
|
142
|
+
/**
|
|
143
|
+
* OPTIONAL no-default prop names whose PRESENCE is tested — `props.X !==
|
|
144
|
+
* undefined` (the "controlled component" idiom's `isControlled` memo) —
|
|
145
|
+
* #2260. Same `resolvePropGoType` flip and same populate-before-first-
|
|
146
|
+
* resolve ordering as `nullishConsumedPropNames`: distinguishing "caller
|
|
147
|
+
* passed a value" from "caller omitted the prop" needs a nillable field.
|
|
148
|
+
*/
|
|
149
|
+
presenceCheckedPropNames: Set<string>;
|
|
134
150
|
/**
|
|
135
151
|
* String-typed signal getter / prop names (#2168 string-concat-plus).
|
|
136
152
|
* Feeds `isStringName` for `isStringConcatBinary`, which decides whether a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-state.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/compile-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,MAAM,EACN,eAAe,EACf,QAAQ,EACR,WAAW,EACX,cAAc,EACd,QAAQ,EACT,MAAM,iBAAiB,CAAA;AAExB,qBAAa,YAAY;IAGvB,aAAa,EAAE,MAAM,CAAK;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAK;IAE5B;;+CAE2C;IAC3C,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEhD,kBAAkB,EAAE,MAAM,CAAI;IAE9B;;;OAGG;IACH,sBAAsB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAK;IAErE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAO;IAErC;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAO;IAEnC;;;;;OAKG;IACH,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAY;IAEnD;;;;OAIG;IACH,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAK;IAEjD;;;;;;OAMG;IACH,0BAA0B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEnD;;;OAGG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEzC;;qFAEiF;IACjF,YAAY,EAAE,QAAQ,EAAE,CAAK;IAE7B,0FAA0F;IAC1F,sBAAsB,EAAE,cAAc,EAAE,CAAK;IAE7C;;;OAGG;IACH,gBAAgB,EAAE,eAAe,EAAE,CAAK;IAExC;;;OAGG;IACH,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAE3C;;;;;;OAMG;IACH,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAY;IAEjE;;;;;;;;OAQG;IACH,WAAW,EAAE,WAAW,CAA+B;IAEvD;;;;;;OAMG;IACH,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAY;IAElD;;;;;;OAMG;IACH,gBAAgB,EAAE,eAAe,EAAE,CAAK;IAExC;;;;OAIG;IACH,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAE1C;;;;;;;OAOG;IACH,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEjD;;;;;OAKG;IACH,8BAA8B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEvD;;;;;OAKG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEzC;gBACY;IACZ,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEvC;;4DAEwD;IACxD,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAY;IAIpD;sEACkE;IAClE,gBAAgB,EAAE,OAAO,CAAQ;IAEjC;sCACkC;IAClC,OAAO,EAAE,OAAO,CAAQ;IAExB,uFAAuF;IACvF,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAY;IAEvC,mFAAmF;IACnF,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAY;IAEjD;;;;OAIG;IACH,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAY;IAE/D;;;OAGG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAY;IAEnD;yEACqE;IACrE,kBAAkB,UAAQ;CAC3B"}
|
|
1
|
+
{"version":3,"file":"compile-state.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/compile-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ import type { PropFallbackVar } from '../lib/types.ts';
|
|
|
21
21
|
export declare function matchFilterArmMemo(ctx: GoEmitContext, body: ParsedExpr, signals: {
|
|
22
22
|
getter: string;
|
|
23
23
|
initialValue: string;
|
|
24
|
+
type?: TypeInfo;
|
|
24
25
|
}[], propsParams: {
|
|
25
26
|
name: string;
|
|
26
27
|
type?: TypeInfo;
|
|
@@ -45,6 +46,7 @@ export declare function filterArmEarlierSiblingRefs(ctx: GoEmitContext, memo: {
|
|
|
45
46
|
}, signals: {
|
|
46
47
|
getter: string;
|
|
47
48
|
initialValue: string;
|
|
49
|
+
type?: TypeInfo;
|
|
48
50
|
}[], propsParams: {
|
|
49
51
|
name: string;
|
|
50
52
|
type?: TypeInfo;
|
|
@@ -68,6 +70,7 @@ export declare function computeMemoInitialValue(ctx: GoEmitContext, memo: {
|
|
|
68
70
|
}, signals: {
|
|
69
71
|
getter: string;
|
|
70
72
|
initialValue: string;
|
|
73
|
+
type?: TypeInfo;
|
|
71
74
|
}[], propsParams: {
|
|
72
75
|
name: string;
|
|
73
76
|
type?: TypeInfo;
|
|
@@ -85,6 +88,7 @@ export declare function computeMemoInitialValue(ctx: GoEmitContext, memo: {
|
|
|
85
88
|
export declare function memoInitialFromParsedBody(ctx: GoEmitContext, body: ParsedExpr, signals: {
|
|
86
89
|
getter: string;
|
|
87
90
|
initialValue: string;
|
|
91
|
+
type?: TypeInfo;
|
|
88
92
|
}[], propsParams: {
|
|
89
93
|
name: string;
|
|
90
94
|
type?: TypeInfo;
|
|
@@ -109,6 +113,7 @@ export declare function computeMemoInitialValueOrNull(ctx: GoEmitContext, memo:
|
|
|
109
113
|
}, signals: {
|
|
110
114
|
getter: string;
|
|
111
115
|
initialValue: string;
|
|
116
|
+
type?: TypeInfo;
|
|
112
117
|
}[], propsParams: {
|
|
113
118
|
name: string;
|
|
114
119
|
type?: TypeInfo;
|
|
@@ -134,6 +139,7 @@ resolving?: ReadonlySet<string>): string | null;
|
|
|
134
139
|
export declare function resolveGetterValueAsGo(ctx: GoEmitContext, name: string, signals: {
|
|
135
140
|
getter: string;
|
|
136
141
|
initialValue: string;
|
|
142
|
+
type?: TypeInfo;
|
|
137
143
|
}[], propsParams: {
|
|
138
144
|
name: string;
|
|
139
145
|
type?: TypeInfo;
|
|
@@ -150,6 +156,7 @@ export declare function resolveGetterValueAsGo(ctx: GoEmitContext, name: string,
|
|
|
150
156
|
export declare function computeComparisonTernaryGo(ctx: GoEmitContext, parsed: ParsedExpr | undefined, signals: {
|
|
151
157
|
getter: string;
|
|
152
158
|
initialValue: string;
|
|
159
|
+
type?: TypeInfo;
|
|
153
160
|
}[], propsParams: {
|
|
154
161
|
name: string;
|
|
155
162
|
type?: TypeInfo;
|
|
@@ -165,6 +172,7 @@ export declare function computeComparisonTernaryGo(ctx: GoEmitContext, parsed: P
|
|
|
165
172
|
export declare function resolveComparisonOperandGo(ctx: GoEmitContext, node: ParsedExpr, signals: {
|
|
166
173
|
getter: string;
|
|
167
174
|
initialValue: string;
|
|
175
|
+
type?: TypeInfo;
|
|
168
176
|
}[], propsParams: {
|
|
169
177
|
name: string;
|
|
170
178
|
type?: TypeInfo;
|
|
@@ -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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"}
|
|
@@ -58,6 +58,58 @@ export declare function collectNullishConsumedPropNames(ctx: GoEmitContext, ir:
|
|
|
58
58
|
* misattribute, making the flip merely unnecessary, not incorrect.
|
|
59
59
|
*/
|
|
60
60
|
export declare function collectOmittableAttrConsumedPropNames(ctx: GoEmitContext, ir: ComponentIR): Set<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Names of OPTIONAL no-default props consumed as the BARE value of a
|
|
63
|
+
* TEXT-position expression (`{size}` / `{props.size}`) anywhere in the
|
|
64
|
+
* component's element tree.
|
|
65
|
+
*
|
|
66
|
+
* Why this matters (#2267): with no flip, an absent `size?: number` prop
|
|
67
|
+
* resolves to a concrete `int` field and `{{.Size}}` prints its zero value
|
|
68
|
+
* (`0`) instead of empty — the JS reference renders `undefined` as "".
|
|
69
|
+
* These props take the same `interface{}` flip as `??`/omittable-attribute
|
|
70
|
+
* consumption (`resolvePropGoType`); `renderExpression`'s emitter then
|
|
71
|
+
* routes the flipped field through `bf_string` (nil-safe stringify)
|
|
72
|
+
* instead of a bare `{{.X}}`, since `text/template` prints a nil
|
|
73
|
+
* `interface{}` as the literal `<no value>`, not "".
|
|
74
|
+
*
|
|
75
|
+
* Generic recursive walk (matching `type: 'expression'` ANYWHERE, like
|
|
76
|
+
* `collectNullishConsumedPropNames`) rather than only `element.children` —
|
|
77
|
+
* a fragment return (`<>{size}</>`) or a conditional branch's children
|
|
78
|
+
* would otherwise be missed. Same shadowing caveat as the sibling
|
|
79
|
+
* collectors: a same-named loop/callback param can misattribute, making
|
|
80
|
+
* the flip merely unnecessary, not incorrect.
|
|
81
|
+
*
|
|
82
|
+
* Filtered to `kind: 'primitive'` — unlike the `??`/omittable-attribute
|
|
83
|
+
* collectors (whose consumers, `bf_nullish` and the `{{if ne .X nil}}`
|
|
84
|
+
* guard, are nil-test-only and pass the underlying value through
|
|
85
|
+
* untouched), this collector's consumer (`renderExpression`'s `bf_string`
|
|
86
|
+
* wrap) RESTRINGIFIES the value via `fmt.Sprintf`. An optional prop
|
|
87
|
+
* carrying already-rendered markup (a JSX-element/children prop) also
|
|
88
|
+
* independently resolves to `interface{}` via `resolvePropGoType`'s
|
|
89
|
+
* struct-map branch — routing THAT through `bf_string` would strip its
|
|
90
|
+
* `template.HTML` safe-markup typing, so `text/template` re-escapes
|
|
91
|
+
* already-escaped HTML on print (observed as literal `<div>...`).
|
|
92
|
+
* Restricting to primitives keeps this collector disjoint from that flip.
|
|
93
|
+
*/
|
|
94
|
+
export declare function collectTextConsumedPropNames(ctx: GoEmitContext, ir: ComponentIR): Set<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Names of OPTIONAL no-default props whose PRESENCE is tested — `props.X
|
|
97
|
+
* !== undefined` / `!= undefined` (or the `===`/`==` negation) — anywhere in
|
|
98
|
+
* a memo's computation (#2260). This is the "controlled component" idiom's
|
|
99
|
+
* `isControlled` check (`createMemo(() => props.pressed !== undefined)`):
|
|
100
|
+
* distinguishing "caller passed a value" from "caller omitted the prop" is
|
|
101
|
+
* only expressible on the nillable `interface{}` representation (a
|
|
102
|
+
* concrete `bool` field can't tell `pressed={false}` from omitted `pressed`
|
|
103
|
+
* apart — both are the Go zero value `false`), so these props take the
|
|
104
|
+
* same `interface{}` flip as `??`/attribute/text consumption
|
|
105
|
+
* (`resolvePropGoType`). `memoInitialFromParsedBody`'s presence-check
|
|
106
|
+
* branch then lowers the comparison to `in.X != nil`.
|
|
107
|
+
*
|
|
108
|
+
* Scoped to `ir.metadata.memos[].parsed` (not the generic tree walk the
|
|
109
|
+
* sibling collectors use) — a presence check is a memo-computation shape,
|
|
110
|
+
* never a JSX child/attribute expression.
|
|
111
|
+
*/
|
|
112
|
+
export declare function collectPresenceCheckedPropNames(ctx: GoEmitContext, ir: ComponentIR): Set<string>;
|
|
61
113
|
/**
|
|
62
114
|
* Resolve a prop param's Go struct-field type using the SAME logic
|
|
63
115
|
* `generatePropsStruct` / `generateInputStruct` use: a `propTypeOverrides` entry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prop-types.d.ts","sourceRoot":"","sources":["../../../src/adapter/props/prop-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAsB,MAAM,iBAAiB,CAAA;AAGlF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGvD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAwC/F;AAkDD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAiD,CAAA;AAEzG;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"prop-types.d.ts","sourceRoot":"","sources":["../../../src/adapter/props/prop-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAsB,MAAM,iBAAiB,CAAA;AAGlF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGvD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAwC/F;AAkDD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAiD,CAAA;AAEzG;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAqEhG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAkCtG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CA+B7F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAmChG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,EACxC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,CAoDR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CASzF"}
|
|
@@ -39,8 +39,16 @@ export declare function objectLiteralToGoMap(ctx: GoEmitContext, expr: ParsedExp
|
|
|
39
39
|
* Get a signal's initial value as Go code — a literal, or a props reference
|
|
40
40
|
* (`in.<Field>`, or the hoisted fallback var when `props.X ?? N` has one).
|
|
41
41
|
* Unrecognized values default to `0`.
|
|
42
|
+
*
|
|
43
|
+
* `signalType`, when passed, drives the same nillable-prop type-assertion
|
|
44
|
+
* `convertInitialValue` applies (#2260) — a caller resolving a getter as the
|
|
45
|
+
* operand of a boolean condition/ternary branch (`resolveGetterValueAsGo`)
|
|
46
|
+
* needs a concrete-typed result, not a bare `interface{}` field reference,
|
|
47
|
+
* when the referenced prop was flipped to nillable. Omitted by call sites
|
|
48
|
+
* that splice the result into an `interface{}`-typed context (e.g. a
|
|
49
|
+
* `map[string]any{...}` env entry), where the bare reference is fine.
|
|
42
50
|
*/
|
|
43
51
|
export declare function getSignalInitialValueAsGo(ctx: GoEmitContext, initialValue: string, propsParams: {
|
|
44
52
|
name: string;
|
|
45
|
-
}[], propFallbackVars?: ReadonlyMap<string, PropFallbackVar
|
|
53
|
+
}[], propFallbackVars?: ReadonlyMap<string, PropFallbackVar>, signalType?: TypeInfo): string;
|
|
46
54
|
//# 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;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,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;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA8CtD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAChC,SAAS,CAAC,EAAE,UAAU,GACrB,MAAM,CA2ER;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"}
|