@barefootjs/jinja 0.35.1 → 0.35.2
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/expr/emitters.d.ts.map +1 -1
- package/dist/adapter/index.js +11 -3
- package/dist/index.js +11 -3
- package/dist/vite.js +11 -3
- package/package.json +5 -5
- package/src/adapter/expr/emitters.ts +19 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitters.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/emitters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAGpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,YAAY,EAMlB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AA+B1D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErE;
|
|
1
|
+
{"version":3,"file":"emitters.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/emitters.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/index.js
CHANGED
|
@@ -187705,6 +187705,11 @@ var PREDICATE_METHODS = new Set([
|
|
|
187705
187705
|
function truthyTest(node, rendered) {
|
|
187706
187706
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`;
|
|
187707
187707
|
}
|
|
187708
|
+
function flattenPropsMember(object, property) {
|
|
187709
|
+
if (object.kind === "identifier" && object.name === "props")
|
|
187710
|
+
return jinjaIdent(property);
|
|
187711
|
+
return null;
|
|
187712
|
+
}
|
|
187708
187713
|
|
|
187709
187714
|
class JinjaFilterEmitter {
|
|
187710
187715
|
param;
|
|
@@ -187735,6 +187740,9 @@ class JinjaFilterEmitter {
|
|
|
187735
187740
|
return String(value);
|
|
187736
187741
|
}
|
|
187737
187742
|
member(object, property, _computed, _optional, emit) {
|
|
187743
|
+
const flat = flattenPropsMember(object, property);
|
|
187744
|
+
if (flat !== null)
|
|
187745
|
+
return flat;
|
|
187738
187746
|
if (property === "length") {
|
|
187739
187747
|
return `bf.length(${emit(object)})`;
|
|
187740
187748
|
}
|
|
@@ -187856,9 +187864,9 @@ class JinjaTopLevelEmitter {
|
|
|
187856
187864
|
return String(value);
|
|
187857
187865
|
}
|
|
187858
187866
|
member(object, property, _computed, _optional, emit) {
|
|
187859
|
-
|
|
187860
|
-
|
|
187861
|
-
|
|
187867
|
+
const flat = flattenPropsMember(object, property);
|
|
187868
|
+
if (flat !== null)
|
|
187869
|
+
return flat;
|
|
187862
187870
|
if (object.kind === "identifier") {
|
|
187863
187871
|
const staticValue = this.ctx._resolveStaticRecordLiteral(object.name, property);
|
|
187864
187872
|
if (staticValue !== null)
|
package/dist/index.js
CHANGED
|
@@ -187705,6 +187705,11 @@ var PREDICATE_METHODS = new Set([
|
|
|
187705
187705
|
function truthyTest(node, rendered) {
|
|
187706
187706
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`;
|
|
187707
187707
|
}
|
|
187708
|
+
function flattenPropsMember(object, property) {
|
|
187709
|
+
if (object.kind === "identifier" && object.name === "props")
|
|
187710
|
+
return jinjaIdent(property);
|
|
187711
|
+
return null;
|
|
187712
|
+
}
|
|
187708
187713
|
|
|
187709
187714
|
class JinjaFilterEmitter {
|
|
187710
187715
|
param;
|
|
@@ -187735,6 +187740,9 @@ class JinjaFilterEmitter {
|
|
|
187735
187740
|
return String(value);
|
|
187736
187741
|
}
|
|
187737
187742
|
member(object, property, _computed, _optional, emit) {
|
|
187743
|
+
const flat = flattenPropsMember(object, property);
|
|
187744
|
+
if (flat !== null)
|
|
187745
|
+
return flat;
|
|
187738
187746
|
if (property === "length") {
|
|
187739
187747
|
return `bf.length(${emit(object)})`;
|
|
187740
187748
|
}
|
|
@@ -187856,9 +187864,9 @@ class JinjaTopLevelEmitter {
|
|
|
187856
187864
|
return String(value);
|
|
187857
187865
|
}
|
|
187858
187866
|
member(object, property, _computed, _optional, emit) {
|
|
187859
|
-
|
|
187860
|
-
|
|
187861
|
-
|
|
187867
|
+
const flat = flattenPropsMember(object, property);
|
|
187868
|
+
if (flat !== null)
|
|
187869
|
+
return flat;
|
|
187862
187870
|
if (object.kind === "identifier") {
|
|
187863
187871
|
const staticValue = this.ctx._resolveStaticRecordLiteral(object.name, property);
|
|
187864
187872
|
if (staticValue !== null)
|
package/dist/vite.js
CHANGED
|
@@ -5649,6 +5649,11 @@ var PREDICATE_METHODS = new Set([
|
|
|
5649
5649
|
function truthyTest(node, rendered) {
|
|
5650
5650
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`;
|
|
5651
5651
|
}
|
|
5652
|
+
function flattenPropsMember(object, property) {
|
|
5653
|
+
if (object.kind === "identifier" && object.name === "props")
|
|
5654
|
+
return jinjaIdent(property);
|
|
5655
|
+
return null;
|
|
5656
|
+
}
|
|
5652
5657
|
|
|
5653
5658
|
class JinjaFilterEmitter {
|
|
5654
5659
|
param;
|
|
@@ -5679,6 +5684,9 @@ class JinjaFilterEmitter {
|
|
|
5679
5684
|
return String(value);
|
|
5680
5685
|
}
|
|
5681
5686
|
member(object, property, _computed, _optional, emit) {
|
|
5687
|
+
const flat = flattenPropsMember(object, property);
|
|
5688
|
+
if (flat !== null)
|
|
5689
|
+
return flat;
|
|
5682
5690
|
if (property === "length") {
|
|
5683
5691
|
return `bf.length(${emit(object)})`;
|
|
5684
5692
|
}
|
|
@@ -5800,9 +5808,9 @@ class JinjaTopLevelEmitter {
|
|
|
5800
5808
|
return String(value);
|
|
5801
5809
|
}
|
|
5802
5810
|
member(object, property, _computed, _optional, emit) {
|
|
5803
|
-
|
|
5804
|
-
|
|
5805
|
-
|
|
5811
|
+
const flat = flattenPropsMember(object, property);
|
|
5812
|
+
if (flat !== null)
|
|
5813
|
+
return flat;
|
|
5806
5814
|
if (object.kind === "identifier") {
|
|
5807
5815
|
const staticValue = this.ctx._resolveStaticRecordLiteral(object.name, property);
|
|
5808
5816
|
if (staticValue !== null)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/jinja",
|
|
3
|
-
"version": "0.35.
|
|
3
|
+
"version": "0.35.2",
|
|
4
4
|
"description": "Jinja2 adapter for BarefootJS — compiles IR to .jinja templates and ships the Python BarefootJS rendering runtime; runs under any Python web framework (Flask, etc.)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"directory": "packages/adapter-jinja"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@barefootjs/shared": "0.35.
|
|
56
|
+
"@barefootjs/shared": "0.35.2"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"@barefootjs/jsx": ">=0.2.0",
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@barefootjs/adapter-tests": "0.1.0",
|
|
73
|
-
"@barefootjs/jsx": "0.35.
|
|
74
|
-
"@barefootjs/vite": "0.35.
|
|
75
|
-
"@barefootjs/client": "0.35.
|
|
73
|
+
"@barefootjs/jsx": "0.35.2",
|
|
74
|
+
"@barefootjs/vite": "0.35.2",
|
|
75
|
+
"@barefootjs/client": "0.35.2",
|
|
76
76
|
"typescript": "^5.0.0",
|
|
77
77
|
"vite": "^6.0.0"
|
|
78
78
|
}
|
|
@@ -108,6 +108,21 @@ export function truthyTest(node: ParsedExpr, rendered: string): string {
|
|
|
108
108
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
+
/**
|
|
112
|
+
* `props.x` on a bare-props-form component flattens to the bare context var
|
|
113
|
+
* the SSR caller binds each prop to (props arrive as individual top-level
|
|
114
|
+
* context entries, not a nested `props` dict). Single door for BOTH
|
|
115
|
+
* `member()` emitters below (#2886) — `JinjaFilterEmitter` lacked this
|
|
116
|
+
* decision entirely (#2879's cross-adapter follow-up), silently reaching
|
|
117
|
+
* `props['x']`, and `props` is undefined in the predicate's context.
|
|
118
|
+
* Returns null for any other receiver so callers fall through to their
|
|
119
|
+
* generic member lowering — `props.a.b` flattens only the inner hop.
|
|
120
|
+
*/
|
|
121
|
+
function flattenPropsMember(object: ParsedExpr, property: string): string | null {
|
|
122
|
+
if (object.kind === 'identifier' && object.name === 'props') return jinjaIdent(property)
|
|
123
|
+
return null
|
|
124
|
+
}
|
|
125
|
+
|
|
111
126
|
/**
|
|
112
127
|
* Lowering for the predicate body of a filter / every / some / find, plus the
|
|
113
128
|
* same shape used by the loop-hoist `.filter().map()` inline condition.
|
|
@@ -165,6 +180,8 @@ export class JinjaFilterEmitter implements ParsedExprEmitter {
|
|
|
165
180
|
}
|
|
166
181
|
|
|
167
182
|
member(object: ParsedExpr, property: string, _computed: boolean, _optional: boolean, emit: (e: ParsedExpr) => string): string {
|
|
183
|
+
const flat = flattenPropsMember(object, property)
|
|
184
|
+
if (flat !== null) return flat
|
|
168
185
|
// `.length` — route through `bf.length` (handles both array element
|
|
169
186
|
// count and string char count, JS-compatibly). Jinja's builtin
|
|
170
187
|
// `|length` filter also faults trying to match JS semantics for every
|
|
@@ -390,12 +407,8 @@ export class JinjaTopLevelEmitter implements ParsedExprEmitter {
|
|
|
390
407
|
}
|
|
391
408
|
|
|
392
409
|
member(object: ParsedExpr, property: string, _computed: boolean, _optional: boolean, emit: (e: ParsedExpr) => string): string {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
// nested `props` dict).
|
|
396
|
-
if (object.kind === 'identifier' && object.name === 'props') {
|
|
397
|
-
return jinjaIdent(property)
|
|
398
|
-
}
|
|
410
|
+
const flat = flattenPropsMember(object, property)
|
|
411
|
+
if (flat !== null) return flat
|
|
399
412
|
// Static property access on a module object-literal const
|
|
400
413
|
// (`variantClasses.ghost`, #1897) resolves at compile time — the
|
|
401
414
|
// generic dot lowering below would reference a context var that
|