@barefootjs/go-template 0.18.4 → 0.18.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 +35 -1
- package/dist/adapter/go-template-adapter.d.ts.map +1 -1
- package/dist/adapter/index.js +162 -21
- package/dist/adapter/lib/compile-state.d.ts +7 -0
- package/dist/adapter/lib/compile-state.d.ts.map +1 -1
- package/dist/adapter/lib/constants.d.ts.map +1 -1
- package/dist/adapter/memo/memo-compute.d.ts.map +1 -1
- package/dist/adapter/props/prop-classes.d.ts +21 -0
- package/dist/adapter/props/prop-classes.d.ts.map +1 -0
- package/dist/adapter/props/prop-types.d.ts.map +1 -1
- package/dist/adapter/type/type-codegen.d.ts +5 -1
- package/dist/adapter/type/type-codegen.d.ts.map +1 -1
- package/dist/adapter/value/value-lowering.d.ts.map +1 -1
- package/dist/build.js +162 -21
- package/dist/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +164 -40
- package/dist/render-divergences.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/go-template-adapter.test.ts +1 -1
- package/src/adapter/go-template-adapter.ts +226 -9
- package/src/adapter/lib/compile-state.ts +8 -0
- package/src/adapter/lib/constants.ts +1 -0
- package/src/adapter/memo/memo-compute.ts +37 -9
- package/src/adapter/props/prop-classes.ts +45 -0
- package/src/adapter/props/prop-types.ts +69 -1
- package/src/adapter/type/type-codegen.ts +19 -2
- package/src/adapter/value/value-lowering.ts +27 -2
- package/src/conformance-pins.ts +0 -5
- package/src/render-divergences.ts +0 -30
- package/src/test-render.ts +23 -8
|
@@ -42,6 +42,15 @@ export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExpr
|
|
|
42
42
|
get errors(): CompilerError[];
|
|
43
43
|
private inLoop;
|
|
44
44
|
private loopParamStack;
|
|
45
|
+
/**
|
|
46
|
+
* Stack of `IRLoop.depth` values (innermost last), pushed/popped around
|
|
47
|
+
* `renderChildren(loop.children)` in `renderLoop`. `renderAttributes`
|
|
48
|
+
* reads the top of this stack to derive the `key` → `data-key`/
|
|
49
|
+
* `data-key-N` suffix — the depth is IR-computed (jsx-to-ir.ts), not
|
|
50
|
+
* re-derived here; this stack only threads that value down to the
|
|
51
|
+
* loop body's root element (#2168 nested-loop-outer-binding).
|
|
52
|
+
*/
|
|
53
|
+
private loopKeyDepthStack;
|
|
45
54
|
/**
|
|
46
55
|
* Per-loop: true when the body renders the bare range value (scalar-item
|
|
47
56
|
* inline-literal loop), so the `bf_tmpl` companion is fed `.BfLoopItem` (the
|
|
@@ -455,9 +464,34 @@ export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExpr
|
|
|
455
464
|
private resolveModuleNumericConst;
|
|
456
465
|
literal(value: string | number | boolean | null, literalType: LiteralType): string;
|
|
457
466
|
call(callee: ParsedExpr, args: ParsedExpr[], emit: (e: ParsedExpr) => string): string;
|
|
458
|
-
member(object: ParsedExpr, property: string, _computed: boolean, emit: (e: ParsedExpr) => string): string;
|
|
467
|
+
member(object: ParsedExpr, property: string, _computed: boolean, optional: boolean, emit: (e: ParsedExpr) => string): string;
|
|
459
468
|
indexAccess(object: ParsedExpr, index: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
460
469
|
binary(op: string, left: ParsedExpr, right: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
470
|
+
/**
|
|
471
|
+
* JS `+` with a string-typed operand is CONCATENATION, not addition — Go's
|
|
472
|
+
* `bf_add` coerces both sides through `toFloat64` (#2168
|
|
473
|
+
* string-concat-plus: `'Hello, ' + name` rendered "0", since a string
|
|
474
|
+
* operand's `toFloat64` is 0). `html/template` has no infix `+` at all, so
|
|
475
|
+
* both directions are a runtime call; route through `bf_concat_str` when
|
|
476
|
+
* either operand is string-typed.
|
|
477
|
+
*
|
|
478
|
+
* Shared by all THREE `case '+':` sites in this file (`binary()` here, the
|
|
479
|
+
* filter-predicate emitter's own `binary` case, and the condition-
|
|
480
|
+
* expression emitter's own `binary` case) — each recurses over its own
|
|
481
|
+
* `ParsedExpr` tree with its own rendered-operand strings, but the
|
|
482
|
+
* string-vs-numeric decision itself must stay identical everywhere so the
|
|
483
|
+
* three never drift out of sync (a Copilot review comment on #2197 flagged
|
|
484
|
+
* exactly this risk when they were three independent inline checks).
|
|
485
|
+
* Callers pass their own `leftExpr`/`rightExpr` (the raw `ParsedExpr` nodes
|
|
486
|
+
* `isStringConcatBinary` inspects) and `leftRendered`/`rightRendered` (the
|
|
487
|
+
* already-emitted, already-wrapped/parenthesised operand text for THIS
|
|
488
|
+
* call site's Go form).
|
|
489
|
+
*/
|
|
490
|
+
private _emitPlus;
|
|
491
|
+
/** Whether `name` (a signal getter or prop) holds a string value — drives
|
|
492
|
+
* `isStringConcatBinary`'s string-vs-numeric `+` decision (#2168
|
|
493
|
+
* string-concat-plus). */
|
|
494
|
+
private _isStringValueName;
|
|
461
495
|
unary(op: string, argument: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
462
496
|
logical(op: '&&' | '||' | '??', left: ParsedExpr, right: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
463
497
|
conditional(test: ParsedExpr, consequent: ParsedExpr, alternate: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
@@ -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,
|
|
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
|
@@ -42,10 +42,11 @@ import {
|
|
|
42
42
|
collectModuleStringConsts as collectModuleStringConstsShared,
|
|
43
43
|
prepareLoweringMatchers,
|
|
44
44
|
envSignalReaderFor,
|
|
45
|
-
computeSsrSeedPlan
|
|
45
|
+
computeSsrSeedPlan,
|
|
46
|
+
isStringConcatBinary
|
|
46
47
|
} from "@barefootjs/jsx";
|
|
47
48
|
import { findInterpolationEnd } from "@barefootjs/jsx/scanner";
|
|
48
|
-
import { BF_REGION } from "@barefootjs/shared";
|
|
49
|
+
import { BF_REGION, escapeHtml } from "@barefootjs/shared";
|
|
49
50
|
|
|
50
51
|
// src/adapter/lib/go-naming.ts
|
|
51
52
|
var GO_IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
@@ -332,6 +333,7 @@ var GO_TEMPLATE_PRIMITIVES = {
|
|
|
332
333
|
"Math.floor": { arity: 1, emit: (args) => `bf_floor ${wrapGoArg(args[0])}` },
|
|
333
334
|
"Math.ceil": { arity: 1, emit: (args) => `bf_ceil ${wrapGoArg(args[0])}` },
|
|
334
335
|
"Math.round": { arity: 1, emit: (args) => `bf_round ${wrapGoArg(args[0])}` },
|
|
336
|
+
"Math.abs": { arity: 1, emit: (args) => `bf_abs ${wrapGoArg(args[0])}` },
|
|
335
337
|
"Math.min": { arity: 2, emit: (args) => `bf_min ${wrapGoArg(args[0])} ${wrapGoArg(args[1])}` },
|
|
336
338
|
"Math.max": { arity: 2, emit: (args) => `bf_max ${wrapGoArg(args[0])} ${wrapGoArg(args[1])}` }
|
|
337
339
|
};
|
|
@@ -357,6 +359,7 @@ class CompileState {
|
|
|
357
359
|
hoistedMemoLocals = new Map;
|
|
358
360
|
loweringMatchers = [];
|
|
359
361
|
nillablePropNames = new Set;
|
|
362
|
+
stringValueNames = new Set;
|
|
360
363
|
rootScopeNodes = new Set;
|
|
361
364
|
memoBackedLoopSlice = new Map;
|
|
362
365
|
usesHtmlTemplate = false;
|
|
@@ -776,7 +779,7 @@ function typeInfoToGo(ctx, typeInfo, defaultValue) {
|
|
|
776
779
|
case "string":
|
|
777
780
|
return "string";
|
|
778
781
|
case "number":
|
|
779
|
-
return "int";
|
|
782
|
+
return defaultValue !== undefined ? numberPrimitiveGoType(defaultValue) : "int";
|
|
780
783
|
case "boolean":
|
|
781
784
|
return "bool";
|
|
782
785
|
default:
|
|
@@ -827,6 +830,9 @@ function tsTypeStringToGo(ctx, tsType) {
|
|
|
827
830
|
return t;
|
|
828
831
|
return "interface{}";
|
|
829
832
|
}
|
|
833
|
+
function numberPrimitiveGoType(value) {
|
|
834
|
+
return /^-?\d+\.\d+$/.test(value) ? "float64" : "int";
|
|
835
|
+
}
|
|
830
836
|
function inferTypeFromValue(value) {
|
|
831
837
|
if (value === "true" || value === "false")
|
|
832
838
|
return "bool";
|
|
@@ -939,9 +945,9 @@ function convertInitialValue(ctx, value, typeInfo, propsParams, preParsed) {
|
|
|
939
945
|
return value === "true" ? "true" : "false";
|
|
940
946
|
}
|
|
941
947
|
if (typeInfo.primitive === "number") {
|
|
942
|
-
if (
|
|
948
|
+
if (/^-?\d+$/.test(value))
|
|
943
949
|
return value;
|
|
944
|
-
if (
|
|
950
|
+
if (/^-?\d+\.\d+$/.test(value))
|
|
945
951
|
return value;
|
|
946
952
|
return "0";
|
|
947
953
|
}
|
|
@@ -966,6 +972,12 @@ function convertInitialValue(ctx, value, typeInfo, propsParams, preParsed) {
|
|
|
966
972
|
}
|
|
967
973
|
return '""';
|
|
968
974
|
}
|
|
975
|
+
if (ctx.state.localStructFields.has(typeInfo.raw)) {
|
|
976
|
+
const baked = jsLiteralToGo(ctx, typeInfo, preParsed);
|
|
977
|
+
if (baked !== null)
|
|
978
|
+
return baked;
|
|
979
|
+
return `${typeInfo.raw}{}`;
|
|
980
|
+
}
|
|
969
981
|
}
|
|
970
982
|
return "nil";
|
|
971
983
|
}
|
|
@@ -1656,10 +1668,11 @@ function memoInitialFromParsedBody(ctx, body, signals, propsParams, propFallback
|
|
|
1656
1668
|
const operand = String(body.right.value);
|
|
1657
1669
|
const depName = getterCallName(body.left);
|
|
1658
1670
|
if (depName) {
|
|
1659
|
-
const
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1671
|
+
const depInitial = resolveGetterValueAsGo(ctx, depName, signals, propsParams, propFallbackVars, resolving);
|
|
1672
|
+
const isArithmeticSafe = depInitial !== null && !depInitial.startsWith("func(");
|
|
1673
|
+
if (isArithmeticSafe) {
|
|
1674
|
+
const wrapped = /\s/.test(depInitial) ? `(${depInitial})` : depInitial;
|
|
1675
|
+
return `${wrapped} ${operator} ${operand}`;
|
|
1663
1676
|
}
|
|
1664
1677
|
}
|
|
1665
1678
|
const propName = propsMemberName(body.left);
|
|
@@ -1694,9 +1707,9 @@ function memoInitialFromParsedBody(ctx, body, signals, propsParams, propFallback
|
|
|
1694
1707
|
}
|
|
1695
1708
|
const simpleDep = getterCallName(body);
|
|
1696
1709
|
if (simpleDep) {
|
|
1697
|
-
const
|
|
1698
|
-
if (
|
|
1699
|
-
return
|
|
1710
|
+
const depInitial = resolveGetterValueAsGo(ctx, simpleDep, signals, propsParams, propFallbackVars, resolving);
|
|
1711
|
+
if (depInitial !== null) {
|
|
1712
|
+
return depInitial;
|
|
1700
1713
|
}
|
|
1701
1714
|
}
|
|
1702
1715
|
const simpleProp = propsMemberName(body);
|
|
@@ -2087,8 +2100,47 @@ function buildPropTypeOverrides(ctx, ir) {
|
|
|
2087
2100
|
}
|
|
2088
2101
|
}
|
|
2089
2102
|
}
|
|
2103
|
+
for (const propName of collectToFixedPropNames(ir.root)) {
|
|
2104
|
+
const param = ir.metadata.propsParams.find((p) => p.name === propName);
|
|
2105
|
+
if (!param)
|
|
2106
|
+
continue;
|
|
2107
|
+
const resolved = overrides.get(propName) ?? typeInfoToGo(ctx, param.type, param.defaultValue);
|
|
2108
|
+
if (resolved === "int") {
|
|
2109
|
+
overrides.set(propName, "float64");
|
|
2110
|
+
}
|
|
2111
|
+
}
|
|
2090
2112
|
return overrides;
|
|
2091
2113
|
}
|
|
2114
|
+
function collectToFixedPropNames(root) {
|
|
2115
|
+
const names = new Set;
|
|
2116
|
+
const checkExpr = (expr) => {
|
|
2117
|
+
if (expr?.kind === "array-method" && expr.method === "toFixed" && expr.object.kind === "identifier") {
|
|
2118
|
+
names.add(expr.object.name);
|
|
2119
|
+
}
|
|
2120
|
+
};
|
|
2121
|
+
const walk = (node) => {
|
|
2122
|
+
if (!node)
|
|
2123
|
+
return;
|
|
2124
|
+
if (node.type === "expression")
|
|
2125
|
+
checkExpr(node.parsed);
|
|
2126
|
+
if (node.type === "conditional") {
|
|
2127
|
+
checkExpr(node.parsedCondition);
|
|
2128
|
+
walk(node.whenTrue);
|
|
2129
|
+
walk(node.whenFalse);
|
|
2130
|
+
}
|
|
2131
|
+
if (node.type === "element") {
|
|
2132
|
+
for (const attr of node.attrs) {
|
|
2133
|
+
if (attr.value.kind === "expression")
|
|
2134
|
+
checkExpr(attr.value.parsed);
|
|
2135
|
+
}
|
|
2136
|
+
}
|
|
2137
|
+
if ("children" in node && Array.isArray(node.children)) {
|
|
2138
|
+
node.children.forEach(walk);
|
|
2139
|
+
}
|
|
2140
|
+
};
|
|
2141
|
+
walk(root);
|
|
2142
|
+
return names;
|
|
2143
|
+
}
|
|
2092
2144
|
function resolvePropGoType(ctx, param, propTypeOverrides) {
|
|
2093
2145
|
const base = propTypeOverrides.get(param.name) ?? typeInfoToGo(ctx, param.type, param.defaultValue);
|
|
2094
2146
|
if (param.optional && ctx.state.localStructFields.has(base)) {
|
|
@@ -2107,6 +2159,30 @@ function collectNillablePropNames(ctx, ir) {
|
|
|
2107
2159
|
return nillable;
|
|
2108
2160
|
}
|
|
2109
2161
|
|
|
2162
|
+
// src/adapter/props/prop-classes.ts
|
|
2163
|
+
function isStringTypeInfo(type) {
|
|
2164
|
+
return type.kind === "primitive" && type.primitive === "string";
|
|
2165
|
+
}
|
|
2166
|
+
function isBareStringLiteral(initialValue) {
|
|
2167
|
+
if (!initialValue)
|
|
2168
|
+
return false;
|
|
2169
|
+
const v = initialValue.trim();
|
|
2170
|
+
return v.startsWith("'") && v.endsWith("'") || v.startsWith('"') && v.endsWith('"');
|
|
2171
|
+
}
|
|
2172
|
+
function collectStringValueNames(ir) {
|
|
2173
|
+
const names = new Set;
|
|
2174
|
+
for (const s of ir.metadata.signals) {
|
|
2175
|
+
if (isStringTypeInfo(s.type) || isBareStringLiteral(s.initialValue)) {
|
|
2176
|
+
names.add(s.getter);
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
2179
|
+
for (const p of ir.metadata.propsParams) {
|
|
2180
|
+
if (isStringTypeInfo(p.type))
|
|
2181
|
+
names.add(p.name);
|
|
2182
|
+
}
|
|
2183
|
+
return names;
|
|
2184
|
+
}
|
|
2185
|
+
|
|
2110
2186
|
// src/adapter/go-template-adapter.ts
|
|
2111
2187
|
var STRING_METHODS = new Set([
|
|
2112
2188
|
"replace",
|
|
@@ -2149,6 +2225,7 @@ class GoTemplateAdapter extends BaseAdapter {
|
|
|
2149
2225
|
}
|
|
2150
2226
|
inLoop = false;
|
|
2151
2227
|
loopParamStack = [];
|
|
2228
|
+
loopKeyDepthStack = [];
|
|
2152
2229
|
loopScalarItemStack = [];
|
|
2153
2230
|
loopWrapperStack = [];
|
|
2154
2231
|
loopVarRefCount = new Map;
|
|
@@ -2196,6 +2273,7 @@ class GoTemplateAdapter extends BaseAdapter {
|
|
|
2196
2273
|
this.state.pendingChildrenDefines = [];
|
|
2197
2274
|
this.primeCompileState(ir);
|
|
2198
2275
|
this.state.nillablePropNames = collectNillablePropNames(this.emitCtx, ir);
|
|
2276
|
+
this.state.stringValueNames = collectStringValueNames(ir);
|
|
2199
2277
|
if (!options?.siblingTemplatesRegistered) {
|
|
2200
2278
|
this.checkImportedLoopChildComponents(ir);
|
|
2201
2279
|
}
|
|
@@ -2893,6 +2971,13 @@ ${goFields.join(`
|
|
|
2893
2971
|
break;
|
|
2894
2972
|
}
|
|
2895
2973
|
}
|
|
2974
|
+
if (parsedValue) {
|
|
2975
|
+
const goVal = parsedLiteralToGo(this.emitCtx, parsedValue);
|
|
2976
|
+
if (goVal !== null) {
|
|
2977
|
+
emitChildField(prop.name, goVal);
|
|
2978
|
+
break;
|
|
2979
|
+
}
|
|
2980
|
+
}
|
|
2896
2981
|
const resolvedValue = this.resolveDynamicPropValue(exprText, ir.metadata.signals, ir.metadata.memos, ir.metadata.propsParams);
|
|
2897
2982
|
if (resolvedValue !== null) {
|
|
2898
2983
|
emitChildField(prop.name, resolvedValue);
|
|
@@ -2900,6 +2985,24 @@ ${goFields.join(`
|
|
|
2900
2985
|
break;
|
|
2901
2986
|
}
|
|
2902
2987
|
case "jsx-children":
|
|
2988
|
+
if (prop.name !== "children") {
|
|
2989
|
+
const text = this.extractTextChildren(prop.value.children);
|
|
2990
|
+
if (text !== null) {
|
|
2991
|
+
emitChildField(prop.name, JSON.stringify(text));
|
|
2992
|
+
} else {
|
|
2993
|
+
const html = this.extractHtmlChildren(prop.value.children);
|
|
2994
|
+
if (html !== null) {
|
|
2995
|
+
this.state.usesHtmlTemplate = true;
|
|
2996
|
+
emitChildField(prop.name, `template.HTML(${JSON.stringify(html)})`);
|
|
2997
|
+
} else {
|
|
2998
|
+
const scopedHtml = this.extractScopedHtmlChildren(prop.value.children);
|
|
2999
|
+
if (scopedHtml !== null) {
|
|
3000
|
+
this.state.usesHtmlTemplate = true;
|
|
3001
|
+
emitChildField(prop.name, `template.HTML(${scopedHtml})`);
|
|
3002
|
+
}
|
|
3003
|
+
}
|
|
3004
|
+
}
|
|
3005
|
+
}
|
|
2903
3006
|
break;
|
|
2904
3007
|
}
|
|
2905
3008
|
}
|
|
@@ -3541,6 +3644,17 @@ ${goFields.join(`
|
|
|
3541
3644
|
return computeMemoInitialValueOrNull(this.emitCtx, memo, signals, propsParams, undefined, new Set([memo.name]));
|
|
3542
3645
|
}
|
|
3543
3646
|
}
|
|
3647
|
+
const propsObjectName = this.state.propsObjectName;
|
|
3648
|
+
const identifierPattern = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
|
|
3649
|
+
const bareIdentifier = identifierPattern.test(expr) ? expr : null;
|
|
3650
|
+
const barePropAccess = propsObjectName && expr.startsWith(`${propsObjectName}.`) && identifierPattern.test(expr.slice(propsObjectName.length + 1)) ? expr.slice(propsObjectName.length + 1) : null;
|
|
3651
|
+
const passthroughName = bareIdentifier ?? barePropAccess;
|
|
3652
|
+
const localConst = this.state.localConstants.find((c) => c.name === passthroughName);
|
|
3653
|
+
const isPropsDestructureAlias = localConst !== undefined && propsObjectName !== null && localConst.value === `${propsObjectName}.${passthroughName}`;
|
|
3654
|
+
const shadowedByLocal = passthroughName !== null && (localConst !== undefined && !isPropsDestructureAlias || this.state.localHelperNames.has(passthroughName));
|
|
3655
|
+
if (passthroughName && !shadowedByLocal && propsParams.some((p) => p.name === passthroughName)) {
|
|
3656
|
+
return `in.${capitalizeFieldName(passthroughName)}`;
|
|
3657
|
+
}
|
|
3544
3658
|
return null;
|
|
3545
3659
|
}
|
|
3546
3660
|
inferMemoType(memo, signals, propsParamMap) {
|
|
@@ -3665,7 +3779,7 @@ ${goFields.join(`
|
|
|
3665
3779
|
return this.renderElement(node);
|
|
3666
3780
|
}
|
|
3667
3781
|
emitText(node) {
|
|
3668
|
-
return node.value;
|
|
3782
|
+
return escapeHtml(node.value);
|
|
3669
3783
|
}
|
|
3670
3784
|
emitExpression(node) {
|
|
3671
3785
|
return this.renderExpression(node);
|
|
@@ -3925,7 +4039,7 @@ ${goFields.join(`
|
|
|
3925
4039
|
const argsStr = args.map(emit).join(" ");
|
|
3926
4040
|
return `${calleeStr} ${argsStr}`;
|
|
3927
4041
|
}
|
|
3928
|
-
member(object, property, _computed, emit) {
|
|
4042
|
+
member(object, property, _computed, optional, emit) {
|
|
3929
4043
|
const objHO = this.higherOrderShapeOf(object);
|
|
3930
4044
|
if (property === "length" && objHO) {
|
|
3931
4045
|
const result = this.renderFilterLengthExpr(objHO, emit);
|
|
@@ -3967,6 +4081,9 @@ ${goFields.join(`
|
|
|
3967
4081
|
const obj = emit(object);
|
|
3968
4082
|
if (property === "length")
|
|
3969
4083
|
return `len ${obj}`;
|
|
4084
|
+
if (optional) {
|
|
4085
|
+
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(goFieldNameForKey(property))}`;
|
|
4086
|
+
}
|
|
3970
4087
|
return `${obj}.${goFieldNameForKey(property)}`;
|
|
3971
4088
|
}
|
|
3972
4089
|
indexAccess(object, index, emit) {
|
|
@@ -3997,7 +4114,7 @@ ${goFields.join(`
|
|
|
3997
4114
|
case "<=":
|
|
3998
4115
|
return `le ${wl} ${wr}`;
|
|
3999
4116
|
case "+":
|
|
4000
|
-
return
|
|
4117
|
+
return this._emitPlus(left, right, wl, wr);
|
|
4001
4118
|
case "-":
|
|
4002
4119
|
return `bf_sub ${wl} ${wr}`;
|
|
4003
4120
|
case "*":
|
|
@@ -4010,6 +4127,15 @@ ${goFields.join(`
|
|
|
4010
4127
|
return `${l} ${op} ${r}`;
|
|
4011
4128
|
}
|
|
4012
4129
|
}
|
|
4130
|
+
_emitPlus(leftExpr, rightExpr, leftRendered, rightRendered) {
|
|
4131
|
+
if (isStringConcatBinary("+", leftExpr, rightExpr, (n) => this._isStringValueName(n))) {
|
|
4132
|
+
return `bf_concat_str ${leftRendered} ${rightRendered}`;
|
|
4133
|
+
}
|
|
4134
|
+
return `bf_add ${leftRendered} ${rightRendered}`;
|
|
4135
|
+
}
|
|
4136
|
+
_isStringValueName(name) {
|
|
4137
|
+
return this.state.stringValueNames.has(name);
|
|
4138
|
+
}
|
|
4013
4139
|
unary(op, argument, emit) {
|
|
4014
4140
|
const arg = emit(argument);
|
|
4015
4141
|
if (op === "!")
|
|
@@ -4221,6 +4347,12 @@ ${goFields.join(`
|
|
|
4221
4347
|
const recv = emit(object);
|
|
4222
4348
|
return `bf_trim ${wrapIfMultiToken(recv)}`;
|
|
4223
4349
|
}
|
|
4350
|
+
case "trimStart":
|
|
4351
|
+
case "trimEnd": {
|
|
4352
|
+
const fn = method === "trimStart" ? "bf_trim_start" : "bf_trim_end";
|
|
4353
|
+
const recv = emit(object);
|
|
4354
|
+
return `${fn} ${wrapIfMultiToken(recv)}`;
|
|
4355
|
+
}
|
|
4224
4356
|
case "toFixed": {
|
|
4225
4357
|
const recv = emit(object);
|
|
4226
4358
|
const digits = args.length >= 1 ? emit(args[0]) : "0";
|
|
@@ -4255,6 +4387,12 @@ ${goFields.join(`
|
|
|
4255
4387
|
const newS = emit(args[1]);
|
|
4256
4388
|
return `bf_replace ${wrapIfMultiToken(recv)} ${wrapIfMultiToken(oldS)} ${wrapIfMultiToken(newS)}`;
|
|
4257
4389
|
}
|
|
4390
|
+
case "replaceAll": {
|
|
4391
|
+
const recv = emit(object);
|
|
4392
|
+
const oldS = emit(args[0]);
|
|
4393
|
+
const newS = emit(args[1]);
|
|
4394
|
+
return `bf_replace_all ${wrapIfMultiToken(recv)} ${wrapIfMultiToken(oldS)} ${wrapIfMultiToken(newS)}`;
|
|
4395
|
+
}
|
|
4258
4396
|
case "repeat": {
|
|
4259
4397
|
const recv = emit(object);
|
|
4260
4398
|
const count = args.length === 0 ? "0" : emit(args[0]);
|
|
@@ -4561,7 +4699,7 @@ ${goFields.join(`
|
|
|
4561
4699
|
case "<=":
|
|
4562
4700
|
return `le ${left} ${right}`;
|
|
4563
4701
|
case "+":
|
|
4564
|
-
return
|
|
4702
|
+
return this._emitPlus(expr.left, expr.right, left, right);
|
|
4565
4703
|
case "-":
|
|
4566
4704
|
return `bf_sub ${left} ${right}`;
|
|
4567
4705
|
case "*":
|
|
@@ -4930,7 +5068,7 @@ ${goFields.join(`
|
|
|
4930
5068
|
result = `le ${left} ${right}`;
|
|
4931
5069
|
break;
|
|
4932
5070
|
case "+":
|
|
4933
|
-
result =
|
|
5071
|
+
result = this._emitPlus(expr.left, expr.right, left, right);
|
|
4934
5072
|
break;
|
|
4935
5073
|
case "-":
|
|
4936
5074
|
result = `bf_sub ${left} ${right}`;
|
|
@@ -5087,7 +5225,9 @@ ${goFields.join(`
|
|
|
5087
5225
|
}
|
|
5088
5226
|
this.loopScalarItemStack.push(this.scalarLiteralLoopGoType(loop.arrayParsed, loop.itemType) !== null);
|
|
5089
5227
|
this.loopWrapperStack.push(!!loop.childComponent);
|
|
5228
|
+
this.loopKeyDepthStack.push(loop.depth);
|
|
5090
5229
|
const children = this.renderChildren(loop.children);
|
|
5230
|
+
this.loopKeyDepthStack.pop();
|
|
5091
5231
|
this.loopWrapperStack.pop();
|
|
5092
5232
|
this.loopScalarItemStack.pop();
|
|
5093
5233
|
const itemMarker = this.loopItemMarker(loop);
|
|
@@ -5230,7 +5370,7 @@ ${goFields.join(`
|
|
|
5230
5370
|
${children}`;
|
|
5231
5371
|
}
|
|
5232
5372
|
elementAttrEmitter = {
|
|
5233
|
-
emitLiteral: (value, name) => `${name}="${value.value}"`,
|
|
5373
|
+
emitLiteral: (value, name) => `${name}="${escapeHtml(value.value)}"`,
|
|
5234
5374
|
emitExpression: (value, name) => {
|
|
5235
5375
|
if (name === "style") {
|
|
5236
5376
|
const css = this.tryLowerStyleObject(value.expr);
|
|
@@ -5320,9 +5460,10 @@ ${children}`;
|
|
|
5320
5460
|
let attrName;
|
|
5321
5461
|
if (attr.name === "className")
|
|
5322
5462
|
attrName = "class";
|
|
5323
|
-
else if (attr.name === "key")
|
|
5324
|
-
|
|
5325
|
-
|
|
5463
|
+
else if (attr.name === "key") {
|
|
5464
|
+
const depth = this.loopKeyDepthStack.at(-1) ?? 0;
|
|
5465
|
+
attrName = depth > 0 ? `data-key-${depth}` : "data-key";
|
|
5466
|
+
} else
|
|
5326
5467
|
attrName = attr.name;
|
|
5327
5468
|
const lowered = emitAttrValue(attr.value, this.elementAttrEmitter, attrName);
|
|
5328
5469
|
if (lowered)
|
|
@@ -107,6 +107,13 @@ export declare class CompileState {
|
|
|
107
107
|
* whose value is a bare reference to such a prop when it's nil.
|
|
108
108
|
*/
|
|
109
109
|
nillablePropNames: Set<string>;
|
|
110
|
+
/**
|
|
111
|
+
* String-typed signal getter / prop names (#2168 string-concat-plus).
|
|
112
|
+
* Feeds `isStringName` for `isStringConcatBinary`, which decides whether a
|
|
113
|
+
* JS `+` operand chain is string concatenation rather than numeric
|
|
114
|
+
* addition — see `collectStringValueNames` (`props/prop-classes.ts`).
|
|
115
|
+
*/
|
|
116
|
+
stringValueNames: Set<string>;
|
|
110
117
|
/** Component root scope element(s) — each carries `data-key` for a keyed loop
|
|
111
118
|
* item. */
|
|
112
119
|
rootScopeNodes: Set<IRNode>;
|
|
@@ -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;;;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;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":"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;;;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;;;;;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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAYhE,CAAA"}
|
|
@@ -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;AA4BtD;;;;;;;mBAOmB;AACnB,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACtE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAsBtF;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,EAC3C,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACtE,MAAM,EAAE,CAgBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,EAChF,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACvE,gBAAgB,GAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAA4B,EACjF,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAwBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACvE,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,EACtD,eAAe,EAAE,MAAM,EACvB,SAAS,GAAE,WAAW,CAAC,MAAM,CAAa,GACzC,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"memo-compute.d.ts","sourceRoot":"","sources":["../../../src/adapter/memo/memo-compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prop classification for the Go template adapter.
|
|
3
|
+
*
|
|
4
|
+
* Ported from `packages/adapter-blade/src/adapter/props/prop-classes.ts` (itself
|
|
5
|
+
* ported from Jinja) — ONE function: string-typed signal/prop names, needed to
|
|
6
|
+
* decide `+` string-concat vs numeric addition (#2168 string-concat-plus). Pure
|
|
7
|
+
* function over `ir.metadata`; no adapter instance state.
|
|
8
|
+
*/
|
|
9
|
+
import type { ComponentIR } from '@barefootjs/jsx';
|
|
10
|
+
/**
|
|
11
|
+
* String-typed signals and props. A signal is string-typed when its inferred
|
|
12
|
+
* type is `string` (or, defensively, when its initial value is a bare string
|
|
13
|
+
* literal); a prop when its annotated type is `string`. Drives `isStringName`
|
|
14
|
+
* for `isStringConcatBinary` — the shared helper (`@barefootjs/jsx`) that
|
|
15
|
+
* decides whether a JS `+` is string concatenation rather than numeric
|
|
16
|
+
* addition (Go's `html/template` has no native `+` at all; `binary()` always
|
|
17
|
+
* emits a runtime call, `bf_add` for addition or `bf_concat_str` for
|
|
18
|
+
* concatenation — see `go-template-adapter.ts`'s `binary()`).
|
|
19
|
+
*/
|
|
20
|
+
export declare function collectStringValueNames(ir: ComponentIR): Set<string>;
|
|
21
|
+
//# sourceMappingURL=prop-classes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prop-classes.d.ts","sourceRoot":"","sources":["../../../src/adapter/props/prop-classes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,iBAAiB,CAAA;AAc5D;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAWpE"}
|
|
@@ -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,
|
|
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;AAElF,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;;;;;;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,CAeR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CASzF"}
|
|
@@ -15,7 +15,11 @@ import type { GoEmitContext } from '../emit-context.ts';
|
|
|
15
15
|
/**
|
|
16
16
|
* Convert a `TypeInfo` to a Go type string.
|
|
17
17
|
*
|
|
18
|
-
* @param defaultValue used to infer the type when `typeInfo.kind` is
|
|
18
|
+
* @param defaultValue used to infer the type when `typeInfo.kind` is
|
|
19
|
+
* `unknown`, and to distinguish `int` vs `float64` when `kind` is
|
|
20
|
+
* `primitive`/`number` (#2168 math-methods/number-tofixed — a bare TS
|
|
21
|
+
* `number` blindly mapped to Go `int`, so a fractional signal initial
|
|
22
|
+
* value like `-7.6` silently truncated to the Go zero value)
|
|
19
23
|
* @returns the Go type, falling back to `interface{}` when unresolvable
|
|
20
24
|
*/
|
|
21
25
|
export declare function typeInfoToGo(ctx: GoEmitContext, typeInfo: TypeInfo, defaultValue?: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-codegen.d.ts","sourceRoot":"","sources":["../../../src/adapter/type/type-codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD
|
|
1
|
+
{"version":3,"file":"type-codegen.d.ts","sourceRoot":"","sources":["../../../src/adapter/type/type-codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAkDR;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgB3E;AAeD,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWxD"}
|
|
@@ -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;AAOtD;;;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,
|
|
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;AAOtD;;;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,CAyER;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;;;;GAIG;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,GAChF,MAAM,CA8BR"}
|