@barefootjs/vite 0.31.9 → 0.32.0
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/index.js +99 -9
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -7280,15 +7280,28 @@ function collectKeysFromMembers(members, ctx) {
|
|
|
7280
7280
|
}
|
|
7281
7281
|
return keys;
|
|
7282
7282
|
}
|
|
7283
|
+
function isResolvableMemberType(info) {
|
|
7284
|
+
switch (info.kind) {
|
|
7285
|
+
case "primitive":
|
|
7286
|
+
return info.primitive === "string" || info.primitive === "number" || info.primitive === "boolean";
|
|
7287
|
+
case "interface":
|
|
7288
|
+
return CATALOGUED_RICH_TYPE_NAMES.has(baseTypeName(info.raw));
|
|
7289
|
+
case "array":
|
|
7290
|
+
return !!info.elementType && isResolvableMemberType(info.elementType);
|
|
7291
|
+
case "object":
|
|
7292
|
+
return info.properties !== undefined && info.properties.every((prop) => isResolvableMemberType(prop.type));
|
|
7293
|
+
default:
|
|
7294
|
+
return false;
|
|
7295
|
+
}
|
|
7296
|
+
}
|
|
7283
7297
|
function collectMemberTypes(typeNode, ctx) {
|
|
7284
|
-
const isResolvablePrimitive = (info) => info.kind === "primitive" && (info.primitive === "string" || info.primitive === "number" || info.primitive === "boolean") || info.kind === "interface" && CATALOGUED_RICH_TYPE_NAMES.has(baseTypeName(info.raw));
|
|
7285
7298
|
const fromMembers = (members) => {
|
|
7286
7299
|
const map = new Map;
|
|
7287
7300
|
for (const member of members) {
|
|
7288
7301
|
if (ts9.isPropertySignature(member) && member.name) {
|
|
7289
7302
|
const info = member.type ? typeNodeToTypeInfo(member.type, ctx.sourceFile) : null;
|
|
7290
7303
|
map.set(member.name.getText(ctx.sourceFile), {
|
|
7291
|
-
type: info &&
|
|
7304
|
+
type: info && isResolvableMemberType(info) ? info : null,
|
|
7292
7305
|
optional: !!member.questionToken
|
|
7293
7306
|
});
|
|
7294
7307
|
}
|
|
@@ -22547,6 +22560,7 @@ function extractSsrDefaults(metadata) {
|
|
|
22547
22560
|
out[metadata.restPropsName] = { isRestProps: true, value: {} };
|
|
22548
22561
|
}
|
|
22549
22562
|
const bindings = {};
|
|
22563
|
+
const localConsts = localConstValuesByName(metadata);
|
|
22550
22564
|
for (const c of metadata.localConstants ?? []) {
|
|
22551
22565
|
if (!c.isModule || c.value === undefined)
|
|
22552
22566
|
continue;
|
|
@@ -22562,14 +22576,26 @@ function extractSsrDefaults(metadata) {
|
|
|
22562
22576
|
if (sig.envReader)
|
|
22563
22577
|
continue;
|
|
22564
22578
|
const value = tryStaticEval(sig.initialValue, { bindings, propsLike });
|
|
22565
|
-
|
|
22579
|
+
if (metadata.propsObjectName !== null && referencesOwnProp(sig.initialValue, metadata.propsObjectName, sig.getter, localConsts)) {
|
|
22580
|
+
if (!(sig.getter in out)) {
|
|
22581
|
+
out[sig.getter] = { propName: sig.getter, value: null };
|
|
22582
|
+
}
|
|
22583
|
+
} else {
|
|
22584
|
+
out[sig.getter] = { value: resultToJsonable(value) };
|
|
22585
|
+
}
|
|
22566
22586
|
bindings[sig.getter] = value;
|
|
22567
22587
|
}
|
|
22568
22588
|
for (const memo of metadata.memos) {
|
|
22569
22589
|
if (memo.isModule)
|
|
22570
22590
|
continue;
|
|
22571
22591
|
const value = tryStaticEval(memo.computation, { bindings, propsLike });
|
|
22572
|
-
|
|
22592
|
+
if (metadata.propsObjectName !== null && referencesOwnProp(memo.computation, metadata.propsObjectName, memo.name, localConsts)) {
|
|
22593
|
+
if (!(memo.name in out)) {
|
|
22594
|
+
out[memo.name] = { propName: memo.name, value: null };
|
|
22595
|
+
}
|
|
22596
|
+
} else {
|
|
22597
|
+
out[memo.name] = { value: resultToJsonable(value) };
|
|
22598
|
+
}
|
|
22573
22599
|
bindings[memo.name] = value;
|
|
22574
22600
|
}
|
|
22575
22601
|
if (metadata.propsObjectName !== null) {
|
|
@@ -22577,12 +22603,12 @@ function extractSsrDefaults(metadata) {
|
|
|
22577
22603
|
for (const sig of metadata.signals) {
|
|
22578
22604
|
if (!sig.getter || sig.isModule || sig.envReader)
|
|
22579
22605
|
continue;
|
|
22580
|
-
|
|
22606
|
+
collectPropRefsTransitive(sig.initialValue, metadata.propsObjectName, localConsts, referenced);
|
|
22581
22607
|
}
|
|
22582
22608
|
for (const memo of metadata.memos) {
|
|
22583
22609
|
if (memo.isModule)
|
|
22584
22610
|
continue;
|
|
22585
|
-
|
|
22611
|
+
collectPropRefsTransitive(memo.computation, metadata.propsObjectName, localConsts, referenced);
|
|
22586
22612
|
}
|
|
22587
22613
|
for (const name of referenced) {
|
|
22588
22614
|
if (name in out)
|
|
@@ -22592,6 +22618,20 @@ function extractSsrDefaults(metadata) {
|
|
|
22592
22618
|
}
|
|
22593
22619
|
return Object.keys(out).length === 0 ? undefined : out;
|
|
22594
22620
|
}
|
|
22621
|
+
function localConstValuesByName(metadata) {
|
|
22622
|
+
const out = new Map;
|
|
22623
|
+
for (const c of metadata.localConstants ?? []) {
|
|
22624
|
+
if (c.isModule || c.value === undefined)
|
|
22625
|
+
continue;
|
|
22626
|
+
out.set(c.name, c.value);
|
|
22627
|
+
}
|
|
22628
|
+
return out;
|
|
22629
|
+
}
|
|
22630
|
+
function referencesOwnProp(expr, propsObjectName, name, localConsts) {
|
|
22631
|
+
const referenced = new Set;
|
|
22632
|
+
collectPropRefsTransitive(expr, propsObjectName, localConsts, referenced);
|
|
22633
|
+
return referenced.has(name);
|
|
22634
|
+
}
|
|
22595
22635
|
function collectPropRefs(expr, propsObjectName, out) {
|
|
22596
22636
|
if (!expr || !expr.trim())
|
|
22597
22637
|
return;
|
|
@@ -22607,6 +22647,23 @@ function collectPropRefs(expr, propsObjectName, out) {
|
|
|
22607
22647
|
};
|
|
22608
22648
|
visit3(node);
|
|
22609
22649
|
}
|
|
22650
|
+
function collectPropRefsTransitive(expr, propsObjectName, localConsts, out, visited = new Set) {
|
|
22651
|
+
if (!expr || !expr.trim())
|
|
22652
|
+
return;
|
|
22653
|
+
collectPropRefs(expr, propsObjectName, out);
|
|
22654
|
+
const node = parseExpression2(expr);
|
|
22655
|
+
if (!node)
|
|
22656
|
+
return;
|
|
22657
|
+
for (const id of extractFreeIdentifiersFromNode(node)) {
|
|
22658
|
+
if (visited.has(id))
|
|
22659
|
+
continue;
|
|
22660
|
+
const constValue = localConsts.get(id);
|
|
22661
|
+
if (constValue === undefined)
|
|
22662
|
+
continue;
|
|
22663
|
+
visited.add(id);
|
|
22664
|
+
collectPropRefsTransitive(constValue, propsObjectName, localConsts, out, visited);
|
|
22665
|
+
}
|
|
22666
|
+
}
|
|
22610
22667
|
function resultToJsonable(v) {
|
|
22611
22668
|
if (v === UNRESOLVED)
|
|
22612
22669
|
return null;
|
|
@@ -22651,7 +22708,7 @@ function evalStatementsForReturn(statements, ctx) {
|
|
|
22651
22708
|
return NO_RETURN;
|
|
22652
22709
|
}
|
|
22653
22710
|
function parseExpression2(expr) {
|
|
22654
|
-
const sf = ts22.createSourceFile("__ssr_default__.ts", `(${expr})`, ts22.ScriptTarget.Latest,
|
|
22711
|
+
const sf = ts22.createSourceFile("__ssr_default__.ts", `(${expr})`, ts22.ScriptTarget.Latest, true, ts22.ScriptKind.TS);
|
|
22655
22712
|
const stmt = sf.statements[0];
|
|
22656
22713
|
if (!stmt || !ts22.isExpressionStatement(stmt))
|
|
22657
22714
|
return null;
|
|
@@ -22965,6 +23022,38 @@ function classify2(name, origin, expr, parsed, available) {
|
|
|
22965
23022
|
}
|
|
22966
23023
|
return { kind: "derived", name, origin, expr, parsed, frees: [...frees] };
|
|
22967
23024
|
}
|
|
23025
|
+
function localConstExprsByName(metadata) {
|
|
23026
|
+
const out = new Map;
|
|
23027
|
+
for (const c of metadata.localConstants ?? []) {
|
|
23028
|
+
if (c.isModule || c.declarationKind !== "const" || c.value === undefined)
|
|
23029
|
+
continue;
|
|
23030
|
+
out.set(c.name, c.parsed ?? parseExpression(c.value.trim()));
|
|
23031
|
+
}
|
|
23032
|
+
return out;
|
|
23033
|
+
}
|
|
23034
|
+
function resolveThroughLocalConsts(parsed, localConsts) {
|
|
23035
|
+
let current = parsed;
|
|
23036
|
+
const maxIter = localConsts.size + 1;
|
|
23037
|
+
for (let i = 0;i < maxIter; i++) {
|
|
23038
|
+
const frees = freeIdentifiers(current);
|
|
23039
|
+
if (frees === null)
|
|
23040
|
+
break;
|
|
23041
|
+
let changed = false;
|
|
23042
|
+
for (const name of frees) {
|
|
23043
|
+
const value = localConsts.get(name);
|
|
23044
|
+
if (!value)
|
|
23045
|
+
continue;
|
|
23046
|
+
const inlined = inlineBinding(current, name, value);
|
|
23047
|
+
if (inlined === null)
|
|
23048
|
+
continue;
|
|
23049
|
+
current = inlined;
|
|
23050
|
+
changed = true;
|
|
23051
|
+
}
|
|
23052
|
+
if (!changed)
|
|
23053
|
+
break;
|
|
23054
|
+
}
|
|
23055
|
+
return current;
|
|
23056
|
+
}
|
|
22968
23057
|
function computeSsrSeedPlan(metadata) {
|
|
22969
23058
|
const baseScope = metadata.propsParams.map((p) => p.name);
|
|
22970
23059
|
if (metadata.propsObjectName)
|
|
@@ -22973,6 +23062,7 @@ function computeSsrSeedPlan(metadata) {
|
|
|
22973
23062
|
baseScope.push(name);
|
|
22974
23063
|
}
|
|
22975
23064
|
const available = new Set(baseScope);
|
|
23065
|
+
const localConsts = localConstExprsByName(metadata);
|
|
22976
23066
|
const steps = [];
|
|
22977
23067
|
for (const signal of metadata.signals) {
|
|
22978
23068
|
if (signal.envReader) {
|
|
@@ -22984,13 +23074,13 @@ function computeSsrSeedPlan(metadata) {
|
|
|
22984
23074
|
}
|
|
22985
23075
|
}
|
|
22986
23076
|
const expr = signal.initialValue.trim();
|
|
22987
|
-
steps.push(expr === "" ? { kind: "opaque", name: signal.getter, origin: "signal" } : classify2(signal.getter, "signal", expr, parseExpression(expr), available));
|
|
23077
|
+
steps.push(expr === "" ? { kind: "opaque", name: signal.getter, origin: "signal" } : classify2(signal.getter, "signal", expr, resolveThroughLocalConsts(parseExpression(expr), localConsts), available));
|
|
22988
23078
|
available.add(signal.getter);
|
|
22989
23079
|
}
|
|
22990
23080
|
for (const memo of metadata.memos) {
|
|
22991
23081
|
const body = extractArrowBodyExpression(memo.computation);
|
|
22992
23082
|
const expr = body?.trim() ?? "";
|
|
22993
|
-
steps.push(expr === "" ? { kind: "opaque", name: memo.name, origin: "memo" } : classify2(memo.name, "memo", expr, memo.parsed ?? parseExpression(expr), available));
|
|
23083
|
+
steps.push(expr === "" ? { kind: "opaque", name: memo.name, origin: "memo" } : classify2(memo.name, "memo", expr, resolveThroughLocalConsts(memo.parsed ?? parseExpression(expr), localConsts), available));
|
|
22994
23084
|
available.add(memo.name);
|
|
22995
23085
|
}
|
|
22996
23086
|
return { baseScope, steps };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/vite",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "Vite plugin for BarefootJS: Vite/Rollup owns bundling, hashing, chunking, tree-shaking and minification of client assets, BarefootJS keeps only the JSX to (template, client JS) compile",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,17 +38,17 @@
|
|
|
38
38
|
"directory": "packages/vite"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@barefootjs/shared": "0.
|
|
41
|
+
"@barefootjs/shared": "0.32.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@barefootjs/jsx": ">=0.2.0",
|
|
45
45
|
"vite": "^6.0.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@barefootjs/client": "0.
|
|
49
|
-
"@barefootjs/go-template": "0.
|
|
50
|
-
"@barefootjs/hono": "0.
|
|
51
|
-
"@barefootjs/jsx": "0.
|
|
48
|
+
"@barefootjs/client": "0.32.0",
|
|
49
|
+
"@barefootjs/go-template": "0.32.0",
|
|
50
|
+
"@barefootjs/hono": "0.32.0",
|
|
51
|
+
"@barefootjs/jsx": "0.32.0",
|
|
52
52
|
"typescript": "^5.0.0",
|
|
53
53
|
"vite": "^6.0.0"
|
|
54
54
|
}
|