@barefootjs/rust 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 +20 -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,EACL,KAAK,iBAAiB,EAEtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,YAAY,EAIjB,KAAK,eAAe,EAIrB,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
|
@@ -187691,6 +187691,11 @@ var PREDICATE_METHODS = new Set([
|
|
|
187691
187691
|
function truthyTest(node, rendered) {
|
|
187692
187692
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`;
|
|
187693
187693
|
}
|
|
187694
|
+
function flattenPropsMember(object, property) {
|
|
187695
|
+
if (object.kind === "identifier" && object.name === "props")
|
|
187696
|
+
return minijinjaIdent(property);
|
|
187697
|
+
return null;
|
|
187698
|
+
}
|
|
187694
187699
|
|
|
187695
187700
|
class JinjaFilterEmitter {
|
|
187696
187701
|
param;
|
|
@@ -187721,6 +187726,9 @@ class JinjaFilterEmitter {
|
|
|
187721
187726
|
return String(value);
|
|
187722
187727
|
}
|
|
187723
187728
|
member(object, property, _computed, _optional, emit) {
|
|
187729
|
+
const flat = flattenPropsMember(object, property);
|
|
187730
|
+
if (flat !== null)
|
|
187731
|
+
return flat;
|
|
187724
187732
|
if (property === "length") {
|
|
187725
187733
|
return `bf.length(${emit(object)})`;
|
|
187726
187734
|
}
|
|
@@ -187842,9 +187850,9 @@ class JinjaTopLevelEmitter {
|
|
|
187842
187850
|
return String(value);
|
|
187843
187851
|
}
|
|
187844
187852
|
member(object, property, _computed, _optional, emit) {
|
|
187845
|
-
|
|
187846
|
-
|
|
187847
|
-
|
|
187853
|
+
const flat = flattenPropsMember(object, property);
|
|
187854
|
+
if (flat !== null)
|
|
187855
|
+
return flat;
|
|
187848
187856
|
if (object.kind === "identifier") {
|
|
187849
187857
|
const staticValue = this.ctx._resolveStaticRecordLiteral(object.name, property);
|
|
187850
187858
|
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,eAwE7B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -187691,6 +187691,11 @@ var PREDICATE_METHODS = new Set([
|
|
|
187691
187691
|
function truthyTest(node, rendered) {
|
|
187692
187692
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`;
|
|
187693
187693
|
}
|
|
187694
|
+
function flattenPropsMember(object, property) {
|
|
187695
|
+
if (object.kind === "identifier" && object.name === "props")
|
|
187696
|
+
return minijinjaIdent(property);
|
|
187697
|
+
return null;
|
|
187698
|
+
}
|
|
187694
187699
|
|
|
187695
187700
|
class JinjaFilterEmitter {
|
|
187696
187701
|
param;
|
|
@@ -187721,6 +187726,9 @@ class JinjaFilterEmitter {
|
|
|
187721
187726
|
return String(value);
|
|
187722
187727
|
}
|
|
187723
187728
|
member(object, property, _computed, _optional, emit) {
|
|
187729
|
+
const flat = flattenPropsMember(object, property);
|
|
187730
|
+
if (flat !== null)
|
|
187731
|
+
return flat;
|
|
187724
187732
|
if (property === "length") {
|
|
187725
187733
|
return `bf.length(${emit(object)})`;
|
|
187726
187734
|
}
|
|
@@ -187842,9 +187850,9 @@ class JinjaTopLevelEmitter {
|
|
|
187842
187850
|
return String(value);
|
|
187843
187851
|
}
|
|
187844
187852
|
member(object, property, _computed, _optional, emit) {
|
|
187845
|
-
|
|
187846
|
-
|
|
187847
|
-
|
|
187853
|
+
const flat = flattenPropsMember(object, property);
|
|
187854
|
+
if (flat !== null)
|
|
187855
|
+
return flat;
|
|
187848
187856
|
if (object.kind === "identifier") {
|
|
187849
187857
|
const staticValue = this.ctx._resolveStaticRecordLiteral(object.name, property);
|
|
187850
187858
|
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;
|
|
@@ -5616,6 +5616,11 @@ var PREDICATE_METHODS = new Set([
|
|
|
5616
5616
|
function truthyTest(node, rendered) {
|
|
5617
5617
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`;
|
|
5618
5618
|
}
|
|
5619
|
+
function flattenPropsMember(object, property) {
|
|
5620
|
+
if (object.kind === "identifier" && object.name === "props")
|
|
5621
|
+
return minijinjaIdent(property);
|
|
5622
|
+
return null;
|
|
5623
|
+
}
|
|
5619
5624
|
|
|
5620
5625
|
class JinjaFilterEmitter {
|
|
5621
5626
|
param;
|
|
@@ -5646,6 +5651,9 @@ class JinjaFilterEmitter {
|
|
|
5646
5651
|
return String(value);
|
|
5647
5652
|
}
|
|
5648
5653
|
member(object, property, _computed, _optional, emit) {
|
|
5654
|
+
const flat = flattenPropsMember(object, property);
|
|
5655
|
+
if (flat !== null)
|
|
5656
|
+
return flat;
|
|
5649
5657
|
if (property === "length") {
|
|
5650
5658
|
return `bf.length(${emit(object)})`;
|
|
5651
5659
|
}
|
|
@@ -5767,9 +5775,9 @@ class JinjaTopLevelEmitter {
|
|
|
5767
5775
|
return String(value);
|
|
5768
5776
|
}
|
|
5769
5777
|
member(object, property, _computed, _optional, emit) {
|
|
5770
|
-
|
|
5771
|
-
|
|
5772
|
-
|
|
5778
|
+
const flat = flattenPropsMember(object, property);
|
|
5779
|
+
if (flat !== null)
|
|
5780
|
+
return flat;
|
|
5773
5781
|
if (object.kind === "identifier") {
|
|
5774
5782
|
const staticValue = this.ctx._resolveStaticRecordLiteral(object.name, property);
|
|
5775
5783
|
if (staticValue !== null)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/rust",
|
|
3
|
-
"version": "0.35.
|
|
3
|
+
"version": "0.35.2",
|
|
4
4
|
"description": "minijinja (Rust) adapter for BarefootJS — compiles IR to .j2 templates and ships a Rust rendering runtime (packages/adapter-rust/runtime/); runs under any Rust web framework (axum, etc.)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"directory": "packages/adapter-rust"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@barefootjs/shared": "0.35.
|
|
57
|
+
"@barefootjs/shared": "0.35.2"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@barefootjs/jsx": ">=0.2.0",
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@barefootjs/adapter-tests": "0.1.0",
|
|
74
|
-
"@barefootjs/jsx": "0.35.
|
|
75
|
-
"@barefootjs/vite": "0.35.
|
|
76
|
-
"@barefootjs/client": "0.35.
|
|
74
|
+
"@barefootjs/jsx": "0.35.2",
|
|
75
|
+
"@barefootjs/vite": "0.35.2",
|
|
76
|
+
"@barefootjs/client": "0.35.2",
|
|
77
77
|
"typescript": "^5.0.0",
|
|
78
78
|
"vite": "^6.0.0"
|
|
79
79
|
}
|
|
@@ -107,6 +107,22 @@ export function truthyTest(node: ParsedExpr, rendered: string): string {
|
|
|
107
107
|
return isBooleanResultParsed(node) ? rendered : `bf.truthy(${rendered})`
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
/**
|
|
111
|
+
* `props.x` on a bare-props-form component flattens to the bare context var
|
|
112
|
+
* the SSR caller binds each prop to (props arrive as individual top-level
|
|
113
|
+
* context entries, not a nested `props` dict). Single door for BOTH
|
|
114
|
+
* `member()` emitters below (#2886) — `JinjaFilterEmitter` (this adapter's
|
|
115
|
+
* minijinja filter emitter) lacked this decision entirely (#2879's
|
|
116
|
+
* cross-adapter follow-up), silently reaching `props.x`, and `props` is
|
|
117
|
+
* undefined in the predicate's context. Returns null for any other
|
|
118
|
+
* receiver so callers fall through to their generic member lowering —
|
|
119
|
+
* `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 minijinjaIdent(property)
|
|
123
|
+
return null
|
|
124
|
+
}
|
|
125
|
+
|
|
110
126
|
/**
|
|
111
127
|
* Lowering for the predicate body of a filter / every / some / find, plus the
|
|
112
128
|
* same shape used by the loop-hoist `.filter().map()` inline condition.
|
|
@@ -164,6 +180,8 @@ export class JinjaFilterEmitter implements ParsedExprEmitter {
|
|
|
164
180
|
}
|
|
165
181
|
|
|
166
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
|
|
167
185
|
// `.length` — route through `bf.length` (handles both array element
|
|
168
186
|
// count and string char count, JS-compatibly). Jinja's builtin
|
|
169
187
|
// `|length` filter also faults trying to match JS semantics for every
|
|
@@ -371,12 +389,8 @@ export class JinjaTopLevelEmitter implements ParsedExprEmitter {
|
|
|
371
389
|
}
|
|
372
390
|
|
|
373
391
|
member(object: ParsedExpr, property: string, _computed: boolean, _optional: boolean, emit: (e: ParsedExpr) => string): string {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
// nested `props` dict).
|
|
377
|
-
if (object.kind === 'identifier' && object.name === 'props') {
|
|
378
|
-
return minijinjaIdent(property)
|
|
379
|
-
}
|
|
392
|
+
const flat = flattenPropsMember(object, property)
|
|
393
|
+
if (flat !== null) return flat
|
|
380
394
|
// Static property access on a module object-literal const
|
|
381
395
|
// (`variantClasses.ghost`, #1897) resolves at compile time — the
|
|
382
396
|
// generic dot lowering below would reference a context var that
|
package/src/conformance-pins.ts
CHANGED
|
@@ -61,18 +61,24 @@ export const conformancePins: ConformancePins = {
|
|
|
61
61
|
// above is refused.
|
|
62
62
|
'date-method-uncatalogued': [{ code: 'BF021', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2356' }],
|
|
63
63
|
'rich-prop-client-read': [{ code: 'BF049', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2648' }],
|
|
64
|
-
//
|
|
64
|
+
// A ternary or array literal LITERALLY WRAPPING JSX at a non-children prop
|
|
65
65
|
// position (e.g. `header={cond ? <a/> : <b/>}`) is refused ahead of
|
|
66
66
|
// `adapter.generate()` in the shared jsx-to-ir.ts phase, so it is pinned
|
|
67
67
|
// identically on every adapter (including Hono) — same reasoning as
|
|
68
|
-
// `rich-prop-client-read` above.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
//
|
|
68
|
+
// `rich-prop-client-read` above. This is the permanent, intended behavior
|
|
69
|
+
// (formerly tracked as #2667, closed): the issue's own acceptance criteria
|
|
70
|
+
// treated a loud refusal as fully resolving the silent-divergence bug, so
|
|
71
|
+
// no open issue tracks further work here.
|
|
72
|
+
'jsx-element-prop-ternary': [{ code: 'BF021', severity: 'error' }],
|
|
73
|
+
'jsx-element-prop-array': [{ code: 'BF021', severity: 'error' }],
|
|
74
|
+
// A reactive primitive invoked through a namespace import
|
|
72
75
|
// (`import * as bf from '@barefootjs/client'`, `bf.createSignal(...)`)
|
|
73
76
|
// that the analyzer's checker-less fast path cannot recognize refuses
|
|
74
77
|
// loudly (BF013) instead of silently dropping the declaration — fired
|
|
75
78
|
// in the shared analyzer pass ahead of any adapter's `adapter.generate()`,
|
|
76
|
-
// so all nine adapters (including Hono) pin this identically.
|
|
77
|
-
|
|
79
|
+
// so all nine adapters (including Hono) pin this identically. A compile
|
|
80
|
+
// that supplies a shared `ts.Program` (e.g. via `@barefootjs/vite`)
|
|
81
|
+
// resolves the primitive normally and never reaches this refusal (formerly
|
|
82
|
+
// tracked as #2771, closed) — no open issue tracks further work.
|
|
83
|
+
'namespace-import-primitive': [{ code: 'BF013', severity: 'error' }],
|
|
78
84
|
}
|