@barefootjs/rust 0.31.8 → 0.31.10
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/vite.js +63 -2
- package/package.json +5 -5
- package/src/test-render.ts +8 -0
package/dist/vite.js
CHANGED
|
@@ -3077,6 +3077,34 @@ var SVG_ROOT_TAGS = new Set([
|
|
|
3077
3077
|
"animateTransform",
|
|
3078
3078
|
"animateMotion"
|
|
3079
3079
|
]);
|
|
3080
|
+
var MATHML_ROOT_TAGS = new Set([
|
|
3081
|
+
"math",
|
|
3082
|
+
"mrow",
|
|
3083
|
+
"mfrac",
|
|
3084
|
+
"msup",
|
|
3085
|
+
"msub",
|
|
3086
|
+
"msubsup",
|
|
3087
|
+
"mn",
|
|
3088
|
+
"mi",
|
|
3089
|
+
"mo",
|
|
3090
|
+
"mtext",
|
|
3091
|
+
"munder",
|
|
3092
|
+
"mover",
|
|
3093
|
+
"munderover",
|
|
3094
|
+
"mtable",
|
|
3095
|
+
"mtr",
|
|
3096
|
+
"mtd",
|
|
3097
|
+
"msqrt",
|
|
3098
|
+
"mroot",
|
|
3099
|
+
"mstyle",
|
|
3100
|
+
"merror",
|
|
3101
|
+
"mpadded",
|
|
3102
|
+
"mphantom",
|
|
3103
|
+
"menclose",
|
|
3104
|
+
"semantics",
|
|
3105
|
+
"annotation",
|
|
3106
|
+
"annotation-xml"
|
|
3107
|
+
]);
|
|
3080
3108
|
|
|
3081
3109
|
// ../jsx/src/ir-to-client-js/collect-elements.ts
|
|
3082
3110
|
var EMPTY_RENDER_EXPRS = new Set(["null", "undefined", "false", "''", '""', "``"]);
|
|
@@ -3940,6 +3968,38 @@ function classify(name, origin, expr, parsed, available) {
|
|
|
3940
3968
|
}
|
|
3941
3969
|
return { kind: "derived", name, origin, expr, parsed, frees: [...frees] };
|
|
3942
3970
|
}
|
|
3971
|
+
function localConstExprsByName(metadata) {
|
|
3972
|
+
const out = new Map;
|
|
3973
|
+
for (const c of metadata.localConstants ?? []) {
|
|
3974
|
+
if (c.isModule || c.declarationKind !== "const" || c.value === undefined)
|
|
3975
|
+
continue;
|
|
3976
|
+
out.set(c.name, c.parsed ?? parseExpression(c.value.trim()));
|
|
3977
|
+
}
|
|
3978
|
+
return out;
|
|
3979
|
+
}
|
|
3980
|
+
function resolveThroughLocalConsts(parsed, localConsts) {
|
|
3981
|
+
let current = parsed;
|
|
3982
|
+
const maxIter = localConsts.size + 1;
|
|
3983
|
+
for (let i = 0;i < maxIter; i++) {
|
|
3984
|
+
const frees = freeIdentifiers(current);
|
|
3985
|
+
if (frees === null)
|
|
3986
|
+
break;
|
|
3987
|
+
let changed = false;
|
|
3988
|
+
for (const name of frees) {
|
|
3989
|
+
const value = localConsts.get(name);
|
|
3990
|
+
if (!value)
|
|
3991
|
+
continue;
|
|
3992
|
+
const inlined = inlineBinding(current, name, value);
|
|
3993
|
+
if (inlined === null)
|
|
3994
|
+
continue;
|
|
3995
|
+
current = inlined;
|
|
3996
|
+
changed = true;
|
|
3997
|
+
}
|
|
3998
|
+
if (!changed)
|
|
3999
|
+
break;
|
|
4000
|
+
}
|
|
4001
|
+
return current;
|
|
4002
|
+
}
|
|
3943
4003
|
function computeSsrSeedPlan(metadata) {
|
|
3944
4004
|
const baseScope = metadata.propsParams.map((p) => p.name);
|
|
3945
4005
|
if (metadata.propsObjectName)
|
|
@@ -3948,6 +4008,7 @@ function computeSsrSeedPlan(metadata) {
|
|
|
3948
4008
|
baseScope.push(name);
|
|
3949
4009
|
}
|
|
3950
4010
|
const available = new Set(baseScope);
|
|
4011
|
+
const localConsts = localConstExprsByName(metadata);
|
|
3951
4012
|
const steps = [];
|
|
3952
4013
|
for (const signal of metadata.signals) {
|
|
3953
4014
|
if (signal.envReader) {
|
|
@@ -3959,13 +4020,13 @@ function computeSsrSeedPlan(metadata) {
|
|
|
3959
4020
|
}
|
|
3960
4021
|
}
|
|
3961
4022
|
const expr = signal.initialValue.trim();
|
|
3962
|
-
steps.push(expr === "" ? { kind: "opaque", name: signal.getter, origin: "signal" } : classify(signal.getter, "signal", expr, parseExpression(expr), available));
|
|
4023
|
+
steps.push(expr === "" ? { kind: "opaque", name: signal.getter, origin: "signal" } : classify(signal.getter, "signal", expr, resolveThroughLocalConsts(parseExpression(expr), localConsts), available));
|
|
3963
4024
|
available.add(signal.getter);
|
|
3964
4025
|
}
|
|
3965
4026
|
for (const memo of metadata.memos) {
|
|
3966
4027
|
const body = extractArrowBodyExpression(memo.computation);
|
|
3967
4028
|
const expr = body?.trim() ?? "";
|
|
3968
|
-
steps.push(expr === "" ? { kind: "opaque", name: memo.name, origin: "memo" } : classify(memo.name, "memo", expr, memo.parsed ?? parseExpression(expr), available));
|
|
4029
|
+
steps.push(expr === "" ? { kind: "opaque", name: memo.name, origin: "memo" } : classify(memo.name, "memo", expr, resolveThroughLocalConsts(memo.parsed ?? parseExpression(expr), localConsts), available));
|
|
3969
4030
|
available.add(memo.name);
|
|
3970
4031
|
}
|
|
3971
4032
|
return { baseScope, steps };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/rust",
|
|
3
|
-
"version": "0.31.
|
|
3
|
+
"version": "0.31.10",
|
|
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.31.
|
|
57
|
+
"@barefootjs/shared": "0.31.10"
|
|
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.31.
|
|
75
|
-
"@barefootjs/vite": "0.31.
|
|
76
|
-
"@barefootjs/client": "0.31.
|
|
74
|
+
"@barefootjs/jsx": "0.31.10",
|
|
75
|
+
"@barefootjs/vite": "0.31.10",
|
|
76
|
+
"@barefootjs/client": "0.31.10",
|
|
77
77
|
"typescript": "^5.0.0",
|
|
78
78
|
"vite": "^6.0.0"
|
|
79
79
|
}
|
package/src/test-render.ts
CHANGED
|
@@ -506,6 +506,12 @@ function buildVars(
|
|
|
506
506
|
// Env signals (#2057) are bound below via `search_params`, not from a
|
|
507
507
|
// static initial value.
|
|
508
508
|
if (signal.envReader) continue
|
|
509
|
+
// #2669: a self-derivation collision already got the correct RAW-prop
|
|
510
|
+
// seed above via `derivedProps` — `extractSsrDefaults` marks that with
|
|
511
|
+
// a `propName`-carrying entry (see its docstring's invariant). Skip
|
|
512
|
+
// re-seeding here or this harness's own `evaluateSignalInit` recompute
|
|
513
|
+
// clobbers the correctly-derived caller value.
|
|
514
|
+
if (rootSsrDefaults[signal.getter]?.propName !== undefined) continue
|
|
509
515
|
const value = evaluateSignalInit(signal.initialValue.trim(), props)
|
|
510
516
|
if (value !== null) {
|
|
511
517
|
vars[signal.getter] = value
|
|
@@ -515,6 +521,8 @@ function buildVars(
|
|
|
515
521
|
// Memo values seeded from the statically-evaluated ssrDefaults, same
|
|
516
522
|
// as the production plugin's before_render hook.
|
|
517
523
|
for (const memo of ir.metadata.memos) {
|
|
524
|
+
// #2669: same self-derivation skip as the signal loop above.
|
|
525
|
+
if (rootSsrDefaults[memo.name]?.propName !== undefined) continue
|
|
518
526
|
const entry = rootSsrDefaults[memo.name]
|
|
519
527
|
vars[memo.name] = entry ? (entry.value ?? 0) : 0
|
|
520
528
|
}
|