@barefootjs/jinja 0.35.0 → 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/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +14 -6
- package/dist/vite.js +39 -31
- package/package.json +5 -5
- package/src/adapter/expr/emitters.ts +19 -6
- package/src/conformance-pins.ts +13 -7
|
@@ -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)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,eAuE7B,CAAA"}
|
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)
|
|
@@ -189239,9 +189247,9 @@ var conformancePins = {
|
|
|
189239
189247
|
"filter-nested-find-predicate": [{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2320" }],
|
|
189240
189248
|
"date-method-uncatalogued": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2356" }],
|
|
189241
189249
|
"rich-prop-client-read": [{ code: "BF049", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2648" }],
|
|
189242
|
-
"jsx-element-prop-ternary": [{ code: "BF021", severity: "error"
|
|
189243
|
-
"jsx-element-prop-array": [{ code: "BF021", severity: "error"
|
|
189244
|
-
"namespace-import-primitive": [{ code: "BF013", severity: "error"
|
|
189250
|
+
"jsx-element-prop-ternary": [{ code: "BF021", severity: "error" }],
|
|
189251
|
+
"jsx-element-prop-array": [{ code: "BF021", severity: "error" }],
|
|
189252
|
+
"namespace-import-primitive": [{ code: "BF013", severity: "error" }]
|
|
189245
189253
|
};
|
|
189246
189254
|
// src/render-divergences.ts
|
|
189247
189255
|
var renderDivergences = {};
|
package/dist/vite.js
CHANGED
|
@@ -8,7 +8,7 @@ import { devModuleUrl, loadManifest, resolveDevOrigin, resolveScriptAssets, toPo
|
|
|
8
8
|
import ts25 from "typescript";
|
|
9
9
|
|
|
10
10
|
// ../jsx/src/analyzer.ts
|
|
11
|
-
import
|
|
11
|
+
import ts11 from "typescript";
|
|
12
12
|
|
|
13
13
|
// ../jsx/src/expression-parser.ts
|
|
14
14
|
import ts from "typescript";
|
|
@@ -2389,14 +2389,17 @@ function freshCounters() {
|
|
|
2389
2389
|
}
|
|
2390
2390
|
|
|
2391
2391
|
// ../jsx/src/analyzer-context.ts
|
|
2392
|
-
import
|
|
2392
|
+
import ts10 from "typescript";
|
|
2393
2393
|
|
|
2394
2394
|
// ../jsx/src/strip-types.ts
|
|
2395
2395
|
import ts8 from "typescript";
|
|
2396
2396
|
|
|
2397
|
+
// ../jsx/src/reactivity-checker.ts
|
|
2398
|
+
import ts9 from "typescript";
|
|
2399
|
+
|
|
2397
2400
|
// ../jsx/src/analyzer-context.ts
|
|
2398
|
-
var _typePrinter =
|
|
2399
|
-
var _blankTypeSourceFile =
|
|
2401
|
+
var _typePrinter = ts10.createPrinter({ removeComments: true, omitTrailingSemicolon: true });
|
|
2402
|
+
var _blankTypeSourceFile = ts10.createSourceFile("__bf_types__.ts", "", ts10.ScriptTarget.Latest);
|
|
2400
2403
|
|
|
2401
2404
|
// ../jsx/src/errors.ts
|
|
2402
2405
|
var ErrorCodes = {
|
|
@@ -2629,46 +2632,46 @@ function extractFreeIdentifiersFromNode(node) {
|
|
|
2629
2632
|
const ids = new Set;
|
|
2630
2633
|
const boundNames = new Set;
|
|
2631
2634
|
function addBindingNames(name, out) {
|
|
2632
|
-
if (
|
|
2635
|
+
if (ts11.isIdentifier(name))
|
|
2633
2636
|
out.push(name.text);
|
|
2634
|
-
else if (
|
|
2637
|
+
else if (ts11.isObjectBindingPattern(name))
|
|
2635
2638
|
name.elements.forEach((e) => addBindingNames(e.name, out));
|
|
2636
|
-
else if (
|
|
2639
|
+
else if (ts11.isArrayBindingPattern(name))
|
|
2637
2640
|
name.elements.forEach((e) => {
|
|
2638
|
-
if (!
|
|
2641
|
+
if (!ts11.isOmittedExpression(e))
|
|
2639
2642
|
addBindingNames(e.name, out);
|
|
2640
2643
|
});
|
|
2641
2644
|
}
|
|
2642
2645
|
function visit(n) {
|
|
2643
|
-
if (
|
|
2646
|
+
if (ts11.isTypeNode(n))
|
|
2644
2647
|
return;
|
|
2645
|
-
if (
|
|
2648
|
+
if (ts11.isIdentifier(n)) {
|
|
2646
2649
|
const parent = n.parent;
|
|
2647
|
-
if (parent &&
|
|
2650
|
+
if (parent && ts11.isPropertyAccessExpression(parent) && parent.name === n)
|
|
2648
2651
|
return;
|
|
2649
|
-
if (parent &&
|
|
2652
|
+
if (parent && ts11.isPropertyAssignment(parent) && parent.name === n)
|
|
2650
2653
|
return;
|
|
2651
|
-
if (parent &&
|
|
2654
|
+
if (parent && ts11.isParameter(parent) && parent.name === n)
|
|
2652
2655
|
return;
|
|
2653
|
-
if (parent &&
|
|
2656
|
+
if (parent && ts11.isVariableDeclaration(parent) && parent.name === n)
|
|
2654
2657
|
return;
|
|
2655
2658
|
if (boundNames.has(n.text))
|
|
2656
2659
|
return;
|
|
2657
2660
|
ids.add(n.text);
|
|
2658
2661
|
return;
|
|
2659
2662
|
}
|
|
2660
|
-
if (
|
|
2663
|
+
if (ts11.isArrowFunction(n)) {
|
|
2661
2664
|
const params = [];
|
|
2662
2665
|
for (const p of n.parameters)
|
|
2663
2666
|
addBindingNames(p.name, params);
|
|
2664
2667
|
for (const name of params)
|
|
2665
2668
|
boundNames.add(name);
|
|
2666
|
-
|
|
2669
|
+
ts11.forEachChild(n, visit);
|
|
2667
2670
|
for (const name of params)
|
|
2668
2671
|
boundNames.delete(name);
|
|
2669
2672
|
return;
|
|
2670
2673
|
}
|
|
2671
|
-
|
|
2674
|
+
ts11.forEachChild(n, visit);
|
|
2672
2675
|
}
|
|
2673
2676
|
visit(node);
|
|
2674
2677
|
return ids;
|
|
@@ -2742,7 +2745,7 @@ function preambleAnalysisTemplateText(p) {
|
|
|
2742
2745
|
}
|
|
2743
2746
|
|
|
2744
2747
|
// ../jsx/src/module-exports.ts
|
|
2745
|
-
import
|
|
2748
|
+
import ts12 from "typescript";
|
|
2746
2749
|
function formatParamWithType(p) {
|
|
2747
2750
|
const rest = p.isRest ? "..." : "";
|
|
2748
2751
|
const optional = p.optional ? "?" : "";
|
|
@@ -2777,21 +2780,21 @@ function findAssignedNames(bodyText, candidates) {
|
|
|
2777
2780
|
const assigned = new Set;
|
|
2778
2781
|
if (candidates.size === 0)
|
|
2779
2782
|
return assigned;
|
|
2780
|
-
const sf =
|
|
2783
|
+
const sf = ts12.createSourceFile("bf-assignment-scan.tsx", bodyText, ts12.ScriptTarget.Latest, false, ts12.ScriptKind.TSX);
|
|
2781
2784
|
const record = (target) => {
|
|
2782
|
-
if (
|
|
2785
|
+
if (ts12.isIdentifier(target) && candidates.has(target.text)) {
|
|
2783
2786
|
assigned.add(target.text);
|
|
2784
2787
|
}
|
|
2785
2788
|
};
|
|
2786
2789
|
const visit = (node) => {
|
|
2787
|
-
if (
|
|
2790
|
+
if (ts12.isBinaryExpression(node) && isAssignmentOperator(node.operatorToken.kind)) {
|
|
2788
2791
|
record(node.left);
|
|
2789
|
-
} else if ((
|
|
2792
|
+
} else if ((ts12.isPrefixUnaryExpression(node) || ts12.isPostfixUnaryExpression(node)) && (node.operator === ts12.SyntaxKind.PlusPlusToken || node.operator === ts12.SyntaxKind.MinusMinusToken)) {
|
|
2790
2793
|
record(node.operand);
|
|
2791
2794
|
}
|
|
2792
|
-
|
|
2795
|
+
ts12.forEachChild(node, visit);
|
|
2793
2796
|
};
|
|
2794
|
-
|
|
2797
|
+
ts12.forEachChild(sf, visit);
|
|
2795
2798
|
return assigned;
|
|
2796
2799
|
}
|
|
2797
2800
|
function closeOverWritersOfMutableBindings(primaryRefs, declarations, mutableNames) {
|
|
@@ -2814,12 +2817,9 @@ function closeOverWritersOfMutableBindings(primaryRefs, declarations, mutableNam
|
|
|
2814
2817
|
return reachable;
|
|
2815
2818
|
}
|
|
2816
2819
|
function isAssignmentOperator(kind) {
|
|
2817
|
-
return kind >=
|
|
2820
|
+
return kind >= ts12.SyntaxKind.FirstAssignment && kind <= ts12.SyntaxKind.LastAssignment;
|
|
2818
2821
|
}
|
|
2819
2822
|
|
|
2820
|
-
// ../jsx/src/reactivity-checker.ts
|
|
2821
|
-
import ts12 from "typescript";
|
|
2822
|
-
|
|
2823
2823
|
// ../jsx/src/free-refs.ts
|
|
2824
2824
|
import ts13 from "typescript";
|
|
2825
2825
|
var _bindingMapCache = new WeakMap;
|
|
@@ -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
|
package/src/conformance-pins.ts
CHANGED
|
@@ -60,18 +60,24 @@ export const conformancePins: ConformancePins = {
|
|
|
60
60
|
// above is refused.
|
|
61
61
|
'date-method-uncatalogued': [{ code: 'BF021', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2356' }],
|
|
62
62
|
'rich-prop-client-read': [{ code: 'BF049', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2648' }],
|
|
63
|
-
//
|
|
63
|
+
// A ternary or array literal LITERALLY WRAPPING JSX at a non-children prop
|
|
64
64
|
// position (e.g. `header={cond ? <a/> : <b/>}`) is refused ahead of
|
|
65
65
|
// `adapter.generate()` in the shared jsx-to-ir.ts phase, so it is pinned
|
|
66
66
|
// identically on every adapter (including Hono) — same reasoning as
|
|
67
|
-
// `rich-prop-client-read` above.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
//
|
|
67
|
+
// `rich-prop-client-read` above. This is the permanent, intended behavior
|
|
68
|
+
// (formerly tracked as #2667, closed): the issue's own acceptance criteria
|
|
69
|
+
// treated a loud refusal as fully resolving the silent-divergence bug, so
|
|
70
|
+
// no open issue tracks further work here.
|
|
71
|
+
'jsx-element-prop-ternary': [{ code: 'BF021', severity: 'error' }],
|
|
72
|
+
'jsx-element-prop-array': [{ code: 'BF021', severity: 'error' }],
|
|
73
|
+
// A reactive primitive invoked through a namespace import
|
|
71
74
|
// (`import * as bf from '@barefootjs/client'`, `bf.createSignal(...)`)
|
|
72
75
|
// that the analyzer's checker-less fast path cannot recognize refuses
|
|
73
76
|
// loudly (BF013) instead of silently dropping the declaration — fired
|
|
74
77
|
// in the shared analyzer pass ahead of any adapter's `adapter.generate()`,
|
|
75
|
-
// so all nine adapters (including Hono) pin this identically.
|
|
76
|
-
|
|
78
|
+
// so all nine adapters (including Hono) pin this identically. A compile
|
|
79
|
+
// that supplies a shared `ts.Program` (e.g. via `@barefootjs/vite`)
|
|
80
|
+
// resolves the primitive normally and never reaches this refusal (formerly
|
|
81
|
+
// tracked as #2771, closed) — no open issue tracks further work.
|
|
82
|
+
'namespace-import-primitive': [{ code: 'BF013', severity: 'error' }],
|
|
77
83
|
}
|