@barefootjs/go-template 0.21.0 → 0.21.3
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 +11 -0
- package/dist/adapter/go-template-adapter.d.ts.map +1 -1
- package/dist/adapter/index.js +14 -0
- package/dist/adapter/lib/compile-state.d.ts +9 -0
- package/dist/adapter/lib/compile-state.d.ts.map +1 -1
- package/dist/build.js +14 -0
- package/dist/index.js +14 -0
- package/package.json +3 -3
- package/src/adapter/go-template-adapter.ts +37 -0
- package/src/adapter/lib/compile-state.ts +10 -0
|
@@ -182,6 +182,17 @@ export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExpr
|
|
|
182
182
|
* stays map-rooted for `bf_get` too.
|
|
183
183
|
*/
|
|
184
184
|
private isMapRootedContextChain;
|
|
185
|
+
/**
|
|
186
|
+
* True when `node` is a non-computed member chain rooted in an
|
|
187
|
+
* inline-object-typed prop (`props.cfg` where `cfg: { id: number }`, an
|
|
188
|
+
* `objectTypedPropNames` entry — #2299). Such a prop is a
|
|
189
|
+
* `map[string]interface{}` Input field, so a nested `.id` must go through
|
|
190
|
+
* the case-tolerant `bf_get` (like `isMapRootedContextChain`), not an
|
|
191
|
+
* exact-case dot path that would `MapIndex("ID")` a JS-cased-`"id"` map and
|
|
192
|
+
* render empty. Recurses: once map-rooted, every further hop reads off an
|
|
193
|
+
* `interface{}` value with no static struct, so it stays map-rooted.
|
|
194
|
+
*/
|
|
195
|
+
private isMapRootedPropChain;
|
|
185
196
|
/** Go type for a context-consumer field, from its `createContext` default's type. */
|
|
186
197
|
private contextConsumerGoType;
|
|
187
198
|
/** Go literal for a context-consumer's default value (the `createContext` arg). */
|
|
@@ -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
|
@@ -360,6 +360,7 @@ class CompileState {
|
|
|
360
360
|
currentMemos = [];
|
|
361
361
|
currentTypeDefinitions = [];
|
|
362
362
|
contextConsumers = [];
|
|
363
|
+
objectTypedPropNames = new Set;
|
|
363
364
|
searchParamsLocals = new Set;
|
|
364
365
|
envSignalReadersByLocal = new Map;
|
|
365
366
|
ssrSeedPlan = { baseScope: [], steps: [] };
|
|
@@ -2636,6 +2637,7 @@ class GoTemplateAdapter extends BaseAdapter {
|
|
|
2636
2637
|
primeCompileState(ir) {
|
|
2637
2638
|
this.state.propsObjectName = ir.metadata.propsObjectName;
|
|
2638
2639
|
this.state.restPropsName = ir.metadata.restPropsName ?? null;
|
|
2640
|
+
this.state.objectTypedPropNames = new Set((ir.metadata.propsParams ?? []).filter((p) => p.type.kind === "object").map((p) => p.name));
|
|
2639
2641
|
this.state.moduleStringConsts = this.collectModuleStringConsts(ir.metadata.localConstants);
|
|
2640
2642
|
this.state.localConstants = ir.metadata.localConstants ?? [];
|
|
2641
2643
|
this.state.staticLoopSourceBoundNames = collectLoopBoundNames2(ir);
|
|
@@ -2832,6 +2834,15 @@ ${scriptRegistrations}${templateBody}
|
|
|
2832
2834
|
}
|
|
2833
2835
|
return false;
|
|
2834
2836
|
}
|
|
2837
|
+
isMapRootedPropChain(node) {
|
|
2838
|
+
if (node.kind !== "member" || node.computed)
|
|
2839
|
+
return false;
|
|
2840
|
+
const obj = node.object;
|
|
2841
|
+
if (obj.kind === "identifier" && obj.name === this.state.propsObjectName) {
|
|
2842
|
+
return this.state.objectTypedPropNames.has(node.property);
|
|
2843
|
+
}
|
|
2844
|
+
return this.isMapRootedPropChain(obj);
|
|
2845
|
+
}
|
|
2835
2846
|
contextConsumerGoType(c) {
|
|
2836
2847
|
if (typeof c.defaultValue === "number")
|
|
2837
2848
|
return "int";
|
|
@@ -4580,6 +4591,9 @@ ${goFields.join(`
|
|
|
4580
4591
|
if (optional) {
|
|
4581
4592
|
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(goFieldNameForKey(property))}`;
|
|
4582
4593
|
}
|
|
4594
|
+
if (this.isMapRootedPropChain(object)) {
|
|
4595
|
+
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(property)}`;
|
|
4596
|
+
}
|
|
4583
4597
|
return `${obj}.${goFieldNameForKey(property)}`;
|
|
4584
4598
|
}
|
|
4585
4599
|
indexAccess(object, index, emit) {
|
|
@@ -70,6 +70,15 @@ export declare class CompileState {
|
|
|
70
70
|
* a struct field defaulted to the `createContext` default.
|
|
71
71
|
*/
|
|
72
72
|
contextConsumers: ContextConsumer[];
|
|
73
|
+
/**
|
|
74
|
+
* Names of props whose type is an inline object literal (`cfg: { id:
|
|
75
|
+
* number }`) — they lower to a `map[string]interface{}` Input field
|
|
76
|
+
* (`typeInfoToGo`'s 'object' case), not a named struct, so a nested member
|
|
77
|
+
* access (`props.cfg.id`) must route through the case-tolerant `bf_get`
|
|
78
|
+
* runtime getter instead of an exact-case Go-template dot path (#2299). See
|
|
79
|
+
* `member()`'s `isMapRootedPropChain` branch.
|
|
80
|
+
*/
|
|
81
|
+
objectTypedPropNames: Set<string>;
|
|
73
82
|
/**
|
|
74
83
|
* Local binding names the request-scoped `searchParams()` env signal is
|
|
75
84
|
* imported under (handles `import { searchParams as sp }`).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-state.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/compile-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile-state.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/compile-state.ts"],"names":[],"mappings":"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"}
|
package/dist/build.js
CHANGED
|
@@ -700,6 +700,7 @@ class CompileState {
|
|
|
700
700
|
currentMemos = [];
|
|
701
701
|
currentTypeDefinitions = [];
|
|
702
702
|
contextConsumers = [];
|
|
703
|
+
objectTypedPropNames = new Set;
|
|
703
704
|
searchParamsLocals = new Set;
|
|
704
705
|
envSignalReadersByLocal = new Map;
|
|
705
706
|
ssrSeedPlan = { baseScope: [], steps: [] };
|
|
@@ -2976,6 +2977,7 @@ class GoTemplateAdapter extends BaseAdapter {
|
|
|
2976
2977
|
primeCompileState(ir) {
|
|
2977
2978
|
this.state.propsObjectName = ir.metadata.propsObjectName;
|
|
2978
2979
|
this.state.restPropsName = ir.metadata.restPropsName ?? null;
|
|
2980
|
+
this.state.objectTypedPropNames = new Set((ir.metadata.propsParams ?? []).filter((p) => p.type.kind === "object").map((p) => p.name));
|
|
2979
2981
|
this.state.moduleStringConsts = this.collectModuleStringConsts(ir.metadata.localConstants);
|
|
2980
2982
|
this.state.localConstants = ir.metadata.localConstants ?? [];
|
|
2981
2983
|
this.state.staticLoopSourceBoundNames = collectLoopBoundNames2(ir);
|
|
@@ -3172,6 +3174,15 @@ ${scriptRegistrations}${templateBody}
|
|
|
3172
3174
|
}
|
|
3173
3175
|
return false;
|
|
3174
3176
|
}
|
|
3177
|
+
isMapRootedPropChain(node) {
|
|
3178
|
+
if (node.kind !== "member" || node.computed)
|
|
3179
|
+
return false;
|
|
3180
|
+
const obj = node.object;
|
|
3181
|
+
if (obj.kind === "identifier" && obj.name === this.state.propsObjectName) {
|
|
3182
|
+
return this.state.objectTypedPropNames.has(node.property);
|
|
3183
|
+
}
|
|
3184
|
+
return this.isMapRootedPropChain(obj);
|
|
3185
|
+
}
|
|
3175
3186
|
contextConsumerGoType(c) {
|
|
3176
3187
|
if (typeof c.defaultValue === "number")
|
|
3177
3188
|
return "int";
|
|
@@ -4920,6 +4931,9 @@ ${goFields.join(`
|
|
|
4920
4931
|
if (optional) {
|
|
4921
4932
|
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(goFieldNameForKey(property))}`;
|
|
4922
4933
|
}
|
|
4934
|
+
if (this.isMapRootedPropChain(object)) {
|
|
4935
|
+
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(property)}`;
|
|
4936
|
+
}
|
|
4923
4937
|
return `${obj}.${goFieldNameForKey(property)}`;
|
|
4924
4938
|
}
|
|
4925
4939
|
indexAccess(object, index, emit) {
|
package/dist/index.js
CHANGED
|
@@ -360,6 +360,7 @@ class CompileState {
|
|
|
360
360
|
currentMemos = [];
|
|
361
361
|
currentTypeDefinitions = [];
|
|
362
362
|
contextConsumers = [];
|
|
363
|
+
objectTypedPropNames = new Set;
|
|
363
364
|
searchParamsLocals = new Set;
|
|
364
365
|
envSignalReadersByLocal = new Map;
|
|
365
366
|
ssrSeedPlan = { baseScope: [], steps: [] };
|
|
@@ -2636,6 +2637,7 @@ class GoTemplateAdapter extends BaseAdapter {
|
|
|
2636
2637
|
primeCompileState(ir) {
|
|
2637
2638
|
this.state.propsObjectName = ir.metadata.propsObjectName;
|
|
2638
2639
|
this.state.restPropsName = ir.metadata.restPropsName ?? null;
|
|
2640
|
+
this.state.objectTypedPropNames = new Set((ir.metadata.propsParams ?? []).filter((p) => p.type.kind === "object").map((p) => p.name));
|
|
2639
2641
|
this.state.moduleStringConsts = this.collectModuleStringConsts(ir.metadata.localConstants);
|
|
2640
2642
|
this.state.localConstants = ir.metadata.localConstants ?? [];
|
|
2641
2643
|
this.state.staticLoopSourceBoundNames = collectLoopBoundNames2(ir);
|
|
@@ -2832,6 +2834,15 @@ ${scriptRegistrations}${templateBody}
|
|
|
2832
2834
|
}
|
|
2833
2835
|
return false;
|
|
2834
2836
|
}
|
|
2837
|
+
isMapRootedPropChain(node) {
|
|
2838
|
+
if (node.kind !== "member" || node.computed)
|
|
2839
|
+
return false;
|
|
2840
|
+
const obj = node.object;
|
|
2841
|
+
if (obj.kind === "identifier" && obj.name === this.state.propsObjectName) {
|
|
2842
|
+
return this.state.objectTypedPropNames.has(node.property);
|
|
2843
|
+
}
|
|
2844
|
+
return this.isMapRootedPropChain(obj);
|
|
2845
|
+
}
|
|
2835
2846
|
contextConsumerGoType(c) {
|
|
2836
2847
|
if (typeof c.defaultValue === "number")
|
|
2837
2848
|
return "int";
|
|
@@ -4580,6 +4591,9 @@ ${goFields.join(`
|
|
|
4580
4591
|
if (optional) {
|
|
4581
4592
|
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(goFieldNameForKey(property))}`;
|
|
4582
4593
|
}
|
|
4594
|
+
if (this.isMapRootedPropChain(object)) {
|
|
4595
|
+
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(property)}`;
|
|
4596
|
+
}
|
|
4583
4597
|
return `${obj}.${goFieldNameForKey(property)}`;
|
|
4584
4598
|
}
|
|
4585
4599
|
indexAccess(object, index, emit) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/go-template",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.3",
|
|
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.21.
|
|
52
|
+
"@barefootjs/shared": "0.21.3"
|
|
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.21.
|
|
60
|
+
"@barefootjs/jsx": "0.21.3"
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -355,6 +355,14 @@ export class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter,
|
|
|
355
355
|
private primeCompileState(ir: ComponentIR): void {
|
|
356
356
|
this.state.propsObjectName = ir.metadata.propsObjectName
|
|
357
357
|
this.state.restPropsName = ir.metadata.restPropsName ?? null
|
|
358
|
+
// Inline-object-typed props (`cfg: { id: number }`) bake as
|
|
359
|
+
// `map[string]interface{}`; `member()` routes a nested access on them
|
|
360
|
+
// through `bf_get` rather than an exact-case dot path (#2299).
|
|
361
|
+
this.state.objectTypedPropNames = new Set(
|
|
362
|
+
(ir.metadata.propsParams ?? [])
|
|
363
|
+
.filter(p => p.type.kind === 'object')
|
|
364
|
+
.map(p => p.name),
|
|
365
|
+
)
|
|
358
366
|
this.state.moduleStringConsts = this.collectModuleStringConsts(ir.metadata.localConstants)
|
|
359
367
|
this.state.localConstants = ir.metadata.localConstants ?? []
|
|
360
368
|
// #2208 fable review: every name a `.map()`/`.filter()` loop callback
|
|
@@ -660,6 +668,25 @@ export class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter,
|
|
|
660
668
|
return false
|
|
661
669
|
}
|
|
662
670
|
|
|
671
|
+
/**
|
|
672
|
+
* True when `node` is a non-computed member chain rooted in an
|
|
673
|
+
* inline-object-typed prop (`props.cfg` where `cfg: { id: number }`, an
|
|
674
|
+
* `objectTypedPropNames` entry — #2299). Such a prop is a
|
|
675
|
+
* `map[string]interface{}` Input field, so a nested `.id` must go through
|
|
676
|
+
* the case-tolerant `bf_get` (like `isMapRootedContextChain`), not an
|
|
677
|
+
* exact-case dot path that would `MapIndex("ID")` a JS-cased-`"id"` map and
|
|
678
|
+
* render empty. Recurses: once map-rooted, every further hop reads off an
|
|
679
|
+
* `interface{}` value with no static struct, so it stays map-rooted.
|
|
680
|
+
*/
|
|
681
|
+
private isMapRootedPropChain(node: ParsedExpr): boolean {
|
|
682
|
+
if (node.kind !== 'member' || node.computed) return false
|
|
683
|
+
const obj = node.object
|
|
684
|
+
if (obj.kind === 'identifier' && obj.name === this.state.propsObjectName) {
|
|
685
|
+
return this.state.objectTypedPropNames.has(node.property)
|
|
686
|
+
}
|
|
687
|
+
return this.isMapRootedPropChain(obj)
|
|
688
|
+
}
|
|
689
|
+
|
|
663
690
|
/** Go type for a context-consumer field, from its `createContext` default's type. */
|
|
664
691
|
private contextConsumerGoType(c: ContextConsumer): string {
|
|
665
692
|
if (typeof c.defaultValue === 'number') return 'int'
|
|
@@ -3575,6 +3602,16 @@ export class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter,
|
|
|
3575
3602
|
if (optional) {
|
|
3576
3603
|
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(goFieldNameForKey(property))}`
|
|
3577
3604
|
}
|
|
3605
|
+
// A plain member access rooted in an inline-object-typed prop
|
|
3606
|
+
// (`props.cfg.id`, #2299) reads off a `map[string]interface{}` field:
|
|
3607
|
+
// route through the case-tolerant `bf_get` with the JS-cased key (the map
|
|
3608
|
+
// is baked with source-cased keys), not the exact-case `.Cfg.ID` dot path
|
|
3609
|
+
// below that would `MapIndex("ID")` a `"id"` map and render empty. Placed
|
|
3610
|
+
// after the `length`/`optional` special cases so it only intercepts the
|
|
3611
|
+
// otherwise-untyped dot access.
|
|
3612
|
+
if (this.isMapRootedPropChain(object)) {
|
|
3613
|
+
return `bf_get ${wrapIfMultiToken(obj)} ${JSON.stringify(property)}`
|
|
3614
|
+
}
|
|
3578
3615
|
return `${obj}.${goFieldNameForKey(property)}`
|
|
3579
3616
|
}
|
|
3580
3617
|
|
|
@@ -95,6 +95,16 @@ export class CompileState {
|
|
|
95
95
|
*/
|
|
96
96
|
contextConsumers: ContextConsumer[] = []
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Names of props whose type is an inline object literal (`cfg: { id:
|
|
100
|
+
* number }`) — they lower to a `map[string]interface{}` Input field
|
|
101
|
+
* (`typeInfoToGo`'s 'object' case), not a named struct, so a nested member
|
|
102
|
+
* access (`props.cfg.id`) must route through the case-tolerant `bf_get`
|
|
103
|
+
* runtime getter instead of an exact-case Go-template dot path (#2299). See
|
|
104
|
+
* `member()`'s `isMapRootedPropChain` branch.
|
|
105
|
+
*/
|
|
106
|
+
objectTypedPropNames: Set<string> = new Set()
|
|
107
|
+
|
|
98
108
|
/**
|
|
99
109
|
* Local binding names the request-scoped `searchParams()` env signal is
|
|
100
110
|
* imported under (handles `import { searchParams as sp }`).
|