@barefootjs/jsx 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/analyzer.d.ts.map +1 -1
- package/dist/expression-parser.d.ts +20 -0
- package/dist/expression-parser.d.ts.map +1 -1
- package/dist/index.js +226 -66
- package/dist/ir-to-client-js/collect-elements.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/loop-child-arm.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/loop.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/template-parse.d.ts +66 -38
- package/dist/ir-to-client-js/control-flow/stringify/template-parse.d.ts.map +1 -1
- package/dist/ir-to-client-js/emit-registration.d.ts.map +1 -1
- package/dist/ir-to-client-js/html-template.d.ts +15 -1
- package/dist/ir-to-client-js/html-template.d.ts.map +1 -1
- package/dist/ir-to-client-js/imports.d.ts +2 -2
- package/dist/ir-to-client-js/imports.d.ts.map +1 -1
- package/dist/ssr-defaults.d.ts +10 -0
- package/dist/ssr-defaults.d.ts.map +1 -1
- package/dist/ssr-seed-plan.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/__snapshots__/doc-examples.test.ts.snap +210 -210
- package/src/__tests__/aliased-destructured-prop-csr.test.ts +8 -2
- package/src/__tests__/csr-template-loop-shadowing.test.ts +5 -2
- package/src/__tests__/date-lowering.test.ts +1 -1
- package/src/__tests__/env-signal-template-prelude.test.ts +4 -2
- package/src/__tests__/inner-loop-mathml-namespace.test.ts +135 -0
- package/src/__tests__/markup-prop-brand.test.ts +161 -0
- package/src/__tests__/mathml-mapArray-namespace.test.ts +230 -0
- package/src/__tests__/props-destructuring.test.ts +40 -3
- package/src/__tests__/ssr-defaults.test.ts +230 -0
- package/src/__tests__/ssr-seed-plan.test.ts +72 -0
- package/src/__tests__/text-slot-escaping.test.ts +21 -12
- package/src/analyzer.ts +83 -26
- package/src/expression-parser.ts +10 -1
- package/src/ir-to-client-js/collect-elements.ts +38 -5
- package/src/ir-to-client-js/control-flow/stringify/inner-loop.ts +10 -10
- package/src/ir-to-client-js/control-flow/stringify/loop-child-arm.ts +3 -4
- package/src/ir-to-client-js/control-flow/stringify/loop.ts +18 -14
- package/src/ir-to-client-js/control-flow/stringify/template-parse.ts +142 -78
- package/src/ir-to-client-js/emit-registration.ts +5 -1
- package/src/ir-to-client-js/html-template.ts +103 -12
- package/src/ir-to-client-js/imports.ts +4 -0
- package/src/ir-to-client-js/index.ts +6 -1
- package/src/ssr-defaults.ts +171 -6
- package/src/ssr-seed-plan.ts +82 -2
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAA;AAG3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAInE,OAAO,EACL,KAAK,eAAe,EAUrB,MAAM,uBAAuB,CAAA;AAqB9B;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAU/D;AA8BD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAA;CAAE,GAAG,IAAI,CA8CpF;AAMD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EACpB,mBAAmB,CAAC,EAAE,oBAAoB,EAC1C,eAAe,CAAC,EAAE,OAAO,GACxB,eAAe,CAkKjB;AAuhBD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAavE;AAuuCD,MAAM,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,qBAAqB,GAAG,EAAE,CAAC,WAAW,CAAA;AAErF;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,KAAK,CAAC;QACd,SAAS,EAAE,EAAE,CAAC,UAAU,CAAA;QACxB,SAAS,EAAE,aAAa,GAAG,IAAI,CAAA;QAC/B;;;;;WAKG;QACH,mBAAmB,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAA;KACtC,CAAC,CAAA;IACF,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,kBAAkB,CAAC,EAAE,EAAE,CAAC,UAAU,CAAA;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,iBAAiB,EAAE,CAAA;CAClC;AAuBD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,EAAE,CAAC,KAAK,EACd,aAAa,UAAQ,GACpB,sBAAsB,GAAG,IAAI,CA+J/B;AAsGD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CA6BpE;AA2LD;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAuCzE;AAuDD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAelE;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAA;AAG3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAInE,OAAO,EACL,KAAK,eAAe,EAUrB,MAAM,uBAAuB,CAAA;AAqB9B;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAU/D;AA8BD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAA;CAAE,GAAG,IAAI,CA8CpF;AAMD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EACpB,mBAAmB,CAAC,EAAE,oBAAoB,EAC1C,eAAe,CAAC,EAAE,OAAO,GACxB,eAAe,CAkKjB;AAuhBD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAavE;AAuuCD,MAAM,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,qBAAqB,GAAG,EAAE,CAAC,WAAW,CAAA;AAErF;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,KAAK,CAAC;QACd,SAAS,EAAE,EAAE,CAAC,UAAU,CAAA;QACxB,SAAS,EAAE,aAAa,GAAG,IAAI,CAAA;QAC/B;;;;;WAKG;QACH,mBAAmB,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAA;KACtC,CAAC,CAAA;IACF,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,kBAAkB,CAAC,EAAE,EAAE,CAAC,UAAU,CAAA;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,iBAAiB,EAAE,CAAA;CAClC;AAuBD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,EAAE,CAAC,KAAK,EACd,aAAa,UAAQ,GACpB,sBAAsB,GAAG,IAAI,CA+J/B;AAsGD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CA6BpE;AA2LD;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAuCzE;AAuDD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAelE;AAsxCD,eAAO,MAAM,wBAAwB,aAOnC,CAAA;AAqBF;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CA0DV;AAcD,eAAO,MAAM,mBAAmB,aAG9B,CAAA;AA25CF;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CA4EvE;AAiID,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -426,6 +426,26 @@ export interface FoldBlockOptions {
|
|
|
426
426
|
*/
|
|
427
427
|
pureCallNames?: ReadonlySet<string>;
|
|
428
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* Inline `name → value` everywhere it appears free in `expr` (the let-inline
|
|
431
|
+
* step). Returns `null` if the substitution would capture a free variable of
|
|
432
|
+
* `value` under a nested callback parameter of the same name — that shape is
|
|
433
|
+
* unsound to inline non-hygienically, so the caller refuses with
|
|
434
|
+
* {@link CAPTURE_BLOCK_REASON}. A nested arrow parameter that shadows `name`
|
|
435
|
+
* leaves that inner reference untouched (it is the parameter, not the binding).
|
|
436
|
+
* Mirrors the structural walk of `substituteDestructuredFields`; every
|
|
437
|
+
* `ParsedExpr` kind is handled so a new kind surfaces as a compile error here.
|
|
438
|
+
*
|
|
439
|
+
* Exported for `computeSsrSeedPlan` (`ssr-seed-plan.ts`), which reuses this
|
|
440
|
+
* SAME let-inline step to resolve a signal/memo initializer through
|
|
441
|
+
* component-scope `const` locals sitting between it and the prop it reads
|
|
442
|
+
* (`const mid = props.label; createSignal(mid ?? 'Default')`) — the
|
|
443
|
+
* structural (never string-splicing) analogue of what `foldBlockToExpr`
|
|
444
|
+
* already does for a block-bodied memo's own internal `const`s, and of what
|
|
445
|
+
* the CSR client-JS emitter's `csrSubstitute` does over TS source text for
|
|
446
|
+
* the compiled JS domain (#2685 review).
|
|
447
|
+
*/
|
|
448
|
+
export declare function inlineBinding(expr: ParsedExpr, name: string, value: ParsedExpr): ParsedExpr | null;
|
|
429
449
|
/**
|
|
430
450
|
* Fold a value-producing block body — a {@link ParsedStatement} sequence of
|
|
431
451
|
* `const` bindings, value-producing `if` / early `return`, and a terminal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-parser.d.ts","sourceRoot":"","sources":["../src/expression-parser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"expression-parser.d.ts","sourceRoot":"","sources":["../src/expression-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3351,8 +3351,8 @@ function templateAttrExpr(attrName, valExpr, presenceOrUndefined) {
|
|
|
3351
3351
|
function escapeAttrValueExpr(valExpr) {
|
|
3352
3352
|
return `escapeAttr(${valExpr})`;
|
|
3353
3353
|
}
|
|
3354
|
-
function escapeTextSlotExpr(innerExpr) {
|
|
3355
|
-
return
|
|
3354
|
+
function escapeTextSlotExpr(innerExpr, isMarkup = false) {
|
|
3355
|
+
return `${isMarkup ? "escapeTextOrMarkup" : "escapeText"}(${innerExpr})`;
|
|
3356
3356
|
}
|
|
3357
3357
|
function dangerouslyHtmlChildren(attrs, toExpr) {
|
|
3358
3358
|
const attr = attrs.find((a) => a.name === "dangerouslySetInnerHTML");
|
|
@@ -3629,7 +3629,7 @@ function irToHtmlTemplate(node, restSpreadNames, loopDepth = 0, loopParams, bran
|
|
|
3629
3629
|
case "jsx-children": {
|
|
3630
3630
|
const hoistedRecurse = (n) => irToHtmlTemplate(n, restSpreadNames, loopDepth, loopParams, branchSlotsVar, true);
|
|
3631
3631
|
const childHtml = p.value.children.map((c) => hoistedRecurse(c)).join("");
|
|
3632
|
-
return `${quotePropName(p.name)}: \`${childHtml}
|
|
3632
|
+
return p.name === "children" ? `${quotePropName(p.name)}: \`${childHtml}\`` : `${quotePropName(p.name)}: bfMarkup(\`${childHtml}\`)`;
|
|
3633
3633
|
}
|
|
3634
3634
|
case "literal":
|
|
3635
3635
|
return `${quotePropName(p.name)}: ${JSON.stringify(p.value.value)}`;
|
|
@@ -3988,6 +3988,9 @@ function irChildrenToJsExpr(children) {
|
|
|
3988
3988
|
return exprs[0];
|
|
3989
3989
|
return `[${exprs.join(", ")}]`;
|
|
3990
3990
|
}
|
|
3991
|
+
function isSingleElementJsxChildren(nodes) {
|
|
3992
|
+
return nodes.length === 1 && nodes[0].type === "element";
|
|
3993
|
+
}
|
|
3991
3994
|
function irNodeToJsExprs(node) {
|
|
3992
3995
|
switch (node.type) {
|
|
3993
3996
|
case "component": {
|
|
@@ -3996,8 +3999,11 @@ function irNodeToJsExprs(node) {
|
|
|
3996
3999
|
return `${quotePropName(p.name)}: ${attrValueToString(p.value) ?? "undefined"}`;
|
|
3997
4000
|
}
|
|
3998
4001
|
switch (p.value.kind) {
|
|
3999
|
-
case "jsx-children":
|
|
4000
|
-
|
|
4002
|
+
case "jsx-children": {
|
|
4003
|
+
const jsxExpr = irChildrenToJsExpr(p.value.children);
|
|
4004
|
+
const wrapped = p.name !== "children" && isSingleElementJsxChildren(p.value.children) ? `bfMarkup(${jsxExpr})` : jsxExpr;
|
|
4005
|
+
return `get ${quotePropName(p.name)}() { return ${wrapped} }`;
|
|
4006
|
+
}
|
|
4001
4007
|
case "literal":
|
|
4002
4008
|
return `get ${quotePropName(p.name)}() { return ${JSON.stringify(p.value.value)} }`;
|
|
4003
4009
|
case "boolean-shorthand":
|
|
@@ -4056,8 +4062,8 @@ function isSingleRootElement(html) {
|
|
|
4056
4062
|
const closingPattern = new RegExp(`</${tag}>\\s*$`);
|
|
4057
4063
|
return closingPattern.test(html.trim());
|
|
4058
4064
|
}
|
|
4059
|
-
function irToComponentTemplate(node, inlinableConstants, restSpreadNames, propsObjectName) {
|
|
4060
|
-
return irToComponentTemplateWithOpts(node, { inlinableConstants, restSpreadNames, propsObjectName, loopDepth: -1 });
|
|
4065
|
+
function irToComponentTemplate(node, inlinableConstants, restSpreadNames, propsObjectName, markupSlotIds) {
|
|
4066
|
+
return irToComponentTemplateWithOpts(node, { inlinableConstants, restSpreadNames, propsObjectName, loopDepth: -1, markupSlotIds });
|
|
4061
4067
|
}
|
|
4062
4068
|
function irToComponentTemplateWithOpts(node, opts) {
|
|
4063
4069
|
const { inlinableConstants, restSpreadNames, propsObjectName, loopDepth = 0 } = opts;
|
|
@@ -4162,7 +4168,8 @@ function irToComponentTemplateWithOpts(node, opts) {
|
|
|
4162
4168
|
const wrapped = transformExpr(node.expr, node.templateExpr);
|
|
4163
4169
|
const value = node.joinArrayChild ? `Array.isArray(${wrapped}) ? ${wrapped}.join('') : (${wrapped} ?? '')` : wrapped;
|
|
4164
4170
|
if (node.slotId) {
|
|
4165
|
-
|
|
4171
|
+
const isMarkup = opts.markupSlotIds?.has(node.slotId) ?? false;
|
|
4172
|
+
return `<!--bf:${node.slotId}-->\${${node.joinArrayChild ? value : escapeTextSlotExpr(wrapped, isMarkup)}}<!--/-->`;
|
|
4166
4173
|
}
|
|
4167
4174
|
return `\${${value}}`;
|
|
4168
4175
|
}
|
|
@@ -4189,7 +4196,7 @@ function irToComponentTemplateWithOpts(node, opts) {
|
|
|
4189
4196
|
case "jsx-children": {
|
|
4190
4197
|
const hoistedRecurse = (n) => irToComponentTemplateWithOpts(n, { ...opts, inHoistedChildren: true });
|
|
4191
4198
|
const childHtml = p.value.children.map((c) => hoistedRecurse(c)).join("");
|
|
4192
|
-
return `${quotePropName(p.name)}: \`${childHtml}
|
|
4199
|
+
return p.name === "children" ? `${quotePropName(p.name)}: \`${childHtml}\`` : `${quotePropName(p.name)}: bfMarkup(\`${childHtml}\`)`;
|
|
4193
4200
|
}
|
|
4194
4201
|
case "literal":
|
|
4195
4202
|
return `${quotePropName(p.name)}: ${JSON.stringify(p.value.value)}`;
|
|
@@ -4310,7 +4317,8 @@ function generateCsrTemplate(node, inlinableConstants, ctx, restSpreadNames, pro
|
|
|
4310
4317
|
}
|
|
4311
4318
|
}
|
|
4312
4319
|
const effectiveUnsafeLocalNames = mergeCsrNullUnsafe(ctx, unsafeLocalNames);
|
|
4313
|
-
|
|
4320
|
+
const markupSlotIds = new Set(ctx.dynamicElements.map((e) => e.slotId));
|
|
4321
|
+
return generateCsrTemplateWithOpts(node, { inlinableConstants, restSpreadNames, propsObjectName, csrEnv, unsafeLocalNames: effectiveUnsafeLocalNames, deferredChildSlots, loopDepth: -1, markupSlotIds });
|
|
4314
4322
|
}
|
|
4315
4323
|
function mergeCsrNullUnsafe(ctx, unsafeLocalNames) {
|
|
4316
4324
|
let merged = null;
|
|
@@ -4491,7 +4499,8 @@ function generateCsrTemplateWithOpts(node, opts) {
|
|
|
4491
4499
|
const expr = transformed === UNSAFE_TEMPLATE_EXPR ? "''" : transformed;
|
|
4492
4500
|
const value = node.joinArrayChild ? `Array.isArray(${expr}) ? ${expr}.join('') : (${expr} ?? '')` : expr;
|
|
4493
4501
|
if (node.slotId) {
|
|
4494
|
-
|
|
4502
|
+
const isMarkup = opts.markupSlotIds?.has(node.slotId) ?? false;
|
|
4503
|
+
return `<!--bf:${node.slotId}-->\${${node.joinArrayChild ? value : escapeTextSlotExpr(expr, isMarkup)}}<!--/-->`;
|
|
4495
4504
|
}
|
|
4496
4505
|
return `\${${value}}`;
|
|
4497
4506
|
}
|
|
@@ -4521,7 +4530,7 @@ function generateCsrTemplateWithOpts(node, opts) {
|
|
|
4521
4530
|
case "jsx-children": {
|
|
4522
4531
|
const hoistedRecurse = (n) => generateCsrTemplateWithOpts(n, { ...opts, inHoistedChildren: true });
|
|
4523
4532
|
const childHtml = p.value.children.map((c) => hoistedRecurse(c)).join("");
|
|
4524
|
-
return `${quotePropName(p.name)}: \`${childHtml}
|
|
4533
|
+
return p.name === "children" ? `${quotePropName(p.name)}: \`${childHtml}\`` : `${quotePropName(p.name)}: bfMarkup(\`${childHtml}\`)`;
|
|
4525
4534
|
}
|
|
4526
4535
|
case "literal":
|
|
4527
4536
|
return `${quotePropName(p.name)}: ${JSON.stringify(p.value.value)}`;
|
|
@@ -7840,15 +7849,28 @@ function collectKeysFromMembers(members, ctx) {
|
|
|
7840
7849
|
}
|
|
7841
7850
|
return keys;
|
|
7842
7851
|
}
|
|
7852
|
+
function isResolvableMemberType(info) {
|
|
7853
|
+
switch (info.kind) {
|
|
7854
|
+
case "primitive":
|
|
7855
|
+
return info.primitive === "string" || info.primitive === "number" || info.primitive === "boolean";
|
|
7856
|
+
case "interface":
|
|
7857
|
+
return CATALOGUED_RICH_TYPE_NAMES.has(baseTypeName(info.raw));
|
|
7858
|
+
case "array":
|
|
7859
|
+
return !!info.elementType && isResolvableMemberType(info.elementType);
|
|
7860
|
+
case "object":
|
|
7861
|
+
return info.properties !== undefined && info.properties.every((prop) => isResolvableMemberType(prop.type));
|
|
7862
|
+
default:
|
|
7863
|
+
return false;
|
|
7864
|
+
}
|
|
7865
|
+
}
|
|
7843
7866
|
function collectMemberTypes(typeNode, ctx) {
|
|
7844
|
-
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));
|
|
7845
7867
|
const fromMembers = (members) => {
|
|
7846
7868
|
const map = new Map;
|
|
7847
7869
|
for (const member of members) {
|
|
7848
7870
|
if (ts9.isPropertySignature(member) && member.name) {
|
|
7849
7871
|
const info = member.type ? typeNodeToTypeInfo(member.type, ctx.sourceFile) : null;
|
|
7850
7872
|
map.set(member.name.getText(ctx.sourceFile), {
|
|
7851
|
-
type: info &&
|
|
7873
|
+
type: info && isResolvableMemberType(info) ? info : null,
|
|
7852
7874
|
optional: !!member.questionToken
|
|
7853
7875
|
});
|
|
7854
7876
|
}
|
|
@@ -14585,25 +14607,85 @@ var SVG_ROOT_TAGS = new Set([
|
|
|
14585
14607
|
"animateTransform",
|
|
14586
14608
|
"animateMotion"
|
|
14587
14609
|
]);
|
|
14588
|
-
|
|
14610
|
+
var MATHML_ROOT_TAGS = new Set([
|
|
14611
|
+
"math",
|
|
14612
|
+
"mrow",
|
|
14613
|
+
"mfrac",
|
|
14614
|
+
"msup",
|
|
14615
|
+
"msub",
|
|
14616
|
+
"msubsup",
|
|
14617
|
+
"mn",
|
|
14618
|
+
"mi",
|
|
14619
|
+
"mo",
|
|
14620
|
+
"mtext",
|
|
14621
|
+
"munder",
|
|
14622
|
+
"mover",
|
|
14623
|
+
"munderover",
|
|
14624
|
+
"mtable",
|
|
14625
|
+
"mtr",
|
|
14626
|
+
"mtd",
|
|
14627
|
+
"msqrt",
|
|
14628
|
+
"mroot",
|
|
14629
|
+
"mstyle",
|
|
14630
|
+
"merror",
|
|
14631
|
+
"mpadded",
|
|
14632
|
+
"mphantom",
|
|
14633
|
+
"menclose",
|
|
14634
|
+
"semantics",
|
|
14635
|
+
"annotation",
|
|
14636
|
+
"annotation-xml"
|
|
14637
|
+
]);
|
|
14638
|
+
function namespaceForTag(tag) {
|
|
14639
|
+
if (SVG_ROOT_TAGS.has(tag) || SVG_ROOT_TAGS.has(tag.toLowerCase()))
|
|
14640
|
+
return "svg";
|
|
14641
|
+
if (MATHML_ROOT_TAGS.has(tag) || MATHML_ROOT_TAGS.has(tag.toLowerCase()))
|
|
14642
|
+
return "math";
|
|
14643
|
+
return null;
|
|
14644
|
+
}
|
|
14645
|
+
function detectRootNamespaceWrapTag(template) {
|
|
14589
14646
|
const stripped = stripLeadingNonContent(template);
|
|
14590
14647
|
const m = stripped.match(/^<\s*([A-Za-z][A-Za-z0-9-]*)/);
|
|
14591
|
-
if (m)
|
|
14592
|
-
|
|
14593
|
-
if (SVG_ROOT_TAGS.has(tag))
|
|
14594
|
-
return true;
|
|
14595
|
-
return SVG_ROOT_TAGS.has(tag.toLowerCase());
|
|
14596
|
-
}
|
|
14648
|
+
if (m)
|
|
14649
|
+
return namespaceForTag(m[1]);
|
|
14597
14650
|
const branches = extractConditionalBranchTemplates(stripped);
|
|
14598
14651
|
if (branches === null || branches.length === 0)
|
|
14599
|
-
return
|
|
14600
|
-
|
|
14652
|
+
return null;
|
|
14653
|
+
let result;
|
|
14654
|
+
for (const branch of branches) {
|
|
14655
|
+
const branchNs = detectRootNamespaceWrapTag(branch);
|
|
14656
|
+
if (result === undefined) {
|
|
14657
|
+
result = branchNs;
|
|
14658
|
+
} else if (result !== branchNs) {
|
|
14659
|
+
return null;
|
|
14660
|
+
}
|
|
14661
|
+
}
|
|
14662
|
+
return result ?? null;
|
|
14601
14663
|
}
|
|
14602
|
-
function
|
|
14664
|
+
function multiRootTemplateNeedsNamespaceWrap(template) {
|
|
14603
14665
|
const m = stripLeadingNonContent(template).match(/^<\s*([A-Za-z][A-Za-z0-9-]*)/);
|
|
14604
|
-
if (m
|
|
14605
|
-
|
|
14606
|
-
|
|
14666
|
+
if (m) {
|
|
14667
|
+
const tagLower = m[1].toLowerCase();
|
|
14668
|
+
if (tagLower === "svg" || tagLower === "math")
|
|
14669
|
+
return null;
|
|
14670
|
+
}
|
|
14671
|
+
return detectRootNamespaceWrapTag(template);
|
|
14672
|
+
}
|
|
14673
|
+
function namespaceWrapForTemplate(template) {
|
|
14674
|
+
const wrapTag = detectRootNamespaceWrapTag(template);
|
|
14675
|
+
return {
|
|
14676
|
+
wrapTag,
|
|
14677
|
+
childPath: wrapTag ? ".firstElementChild.firstElementChild" : ".firstElementChild"
|
|
14678
|
+
};
|
|
14679
|
+
}
|
|
14680
|
+
function multiRootNamespaceWrapForTemplate(template) {
|
|
14681
|
+
const wrapTag = multiRootTemplateNeedsNamespaceWrap(template);
|
|
14682
|
+
return {
|
|
14683
|
+
wrapTag,
|
|
14684
|
+
childPath: wrapTag ? ".firstElementChild" : ""
|
|
14685
|
+
};
|
|
14686
|
+
}
|
|
14687
|
+
function wrapHtmlForNamespace(html, wrapTag) {
|
|
14688
|
+
return wrapTag ? `<${wrapTag}>${html}</${wrapTag}>` : html;
|
|
14607
14689
|
}
|
|
14608
14690
|
function stripLeadingNonContent(template) {
|
|
14609
14691
|
let s = template.trimStart();
|
|
@@ -14628,32 +14710,26 @@ function extractConditionalBranchTemplates(template) {
|
|
|
14628
14710
|
return findTopLevelTemplateLiterals(expr);
|
|
14629
14711
|
}
|
|
14630
14712
|
function emitTemplateCloneInline(template) {
|
|
14631
|
-
|
|
14632
|
-
|
|
14633
|
-
}
|
|
14634
|
-
return `const __tpl = document.createElement('template'); __tpl.innerHTML = \`${template}\`; return __tpl.content.firstElementChild.cloneNode(true)`;
|
|
14713
|
+
const { wrapTag, childPath } = namespaceWrapForTemplate(template);
|
|
14714
|
+
const html = wrapHtmlForNamespace(template, wrapTag);
|
|
14715
|
+
return `const __tpl = document.createElement('template'); __tpl.innerHTML = \`${html}\`; return __tpl.content${childPath}.cloneNode(true)`;
|
|
14635
14716
|
}
|
|
14636
14717
|
function emitHoistedTemplateDecl(lines, indent, tplVar, skeletonTemplate) {
|
|
14637
|
-
const
|
|
14638
|
-
const html =
|
|
14718
|
+
const { wrapTag } = namespaceWrapForTemplate(skeletonTemplate);
|
|
14719
|
+
const html = wrapHtmlForNamespace(skeletonTemplate, wrapTag);
|
|
14639
14720
|
lines.push(`${indent}const ${tplVar} = document.createElement('template')`);
|
|
14640
14721
|
lines.push(`${indent}${tplVar}.innerHTML = \`${html}\``);
|
|
14641
14722
|
}
|
|
14642
14723
|
function hoistedCloneExpr(tplVar, skeletonTemplate) {
|
|
14643
|
-
return
|
|
14724
|
+
return `${tplVar}.content${namespaceWrapForTemplate(skeletonTemplate).childPath}.cloneNode(true)`;
|
|
14644
14725
|
}
|
|
14645
14726
|
function emitTemplateCloneLines(template, indent) {
|
|
14646
|
-
|
|
14647
|
-
|
|
14648
|
-
`${indent}const __tpl = document.createElement('template')`,
|
|
14649
|
-
`${indent}__tpl.innerHTML = \`<svg>${template}</svg>\``,
|
|
14650
|
-
`${indent}return __tpl.content.firstElementChild.firstElementChild.cloneNode(true)`
|
|
14651
|
-
];
|
|
14652
|
-
}
|
|
14727
|
+
const { wrapTag, childPath } = namespaceWrapForTemplate(template);
|
|
14728
|
+
const html = wrapHtmlForNamespace(template, wrapTag);
|
|
14653
14729
|
return [
|
|
14654
14730
|
`${indent}const __tpl = document.createElement('template')`,
|
|
14655
|
-
`${indent}__tpl.innerHTML = \`${
|
|
14656
|
-
`${indent}return __tpl.content.
|
|
14731
|
+
`${indent}__tpl.innerHTML = \`${html}\``,
|
|
14732
|
+
`${indent}return __tpl.content${childPath}.cloneNode(true)`
|
|
14657
14733
|
];
|
|
14658
14734
|
}
|
|
14659
14735
|
function emitLoopItemElementSetup(lines, opts) {
|
|
@@ -14685,9 +14761,9 @@ function emitLoopItemElementSetup(lines, opts) {
|
|
|
14685
14761
|
lines.push(`${indent}})()${mountRow ? ")" : ""}`);
|
|
14686
14762
|
}
|
|
14687
14763
|
function emitMultiRootTemplateCloneLines(template, indent, varEl, varExtras) {
|
|
14688
|
-
const
|
|
14689
|
-
const innerHtmlExpr =
|
|
14690
|
-
const parentExpr =
|
|
14764
|
+
const { wrapTag, childPath } = multiRootNamespaceWrapForTemplate(template);
|
|
14765
|
+
const innerHtmlExpr = `\`${wrapHtmlForNamespace(template, wrapTag)}\``;
|
|
14766
|
+
const parentExpr = `__tpl.content${childPath}`;
|
|
14691
14767
|
return [
|
|
14692
14768
|
`${indent}const __tpl = document.createElement('template')`,
|
|
14693
14769
|
`${indent}__tpl.innerHTML = ${innerHtmlExpr}`,
|
|
@@ -14918,6 +14994,9 @@ function jsxChildrenContainComponent(nodes) {
|
|
|
14918
14994
|
}
|
|
14919
14995
|
return false;
|
|
14920
14996
|
}
|
|
14997
|
+
function isSingleElementJsxChildren2(nodes) {
|
|
14998
|
+
return nodes.length === 1 && nodes[0].type === "element";
|
|
14999
|
+
}
|
|
14921
15000
|
function buildRestSpreadNames(ctx) {
|
|
14922
15001
|
const names = new Set;
|
|
14923
15002
|
if (ctx.restPropsName)
|
|
@@ -14954,6 +15033,8 @@ function buildComponentPropsExpr(props, ctx) {
|
|
|
14954
15033
|
const jsxExpr = irChildrenToJsExpr(prop.value.children);
|
|
14955
15034
|
if (jsxChildrenContainComponent(prop.value.children)) {
|
|
14956
15035
|
propsForInit.push(`get ${quotePropName(prop.name)}() { return __slot(() => ${jsxExpr}) }`);
|
|
15036
|
+
} else if (prop.name !== "children" && isSingleElementJsxChildren2(prop.value.children)) {
|
|
15037
|
+
propsForInit.push(`get ${quotePropName(prop.name)}() { return bfMarkup(${jsxExpr}) }`);
|
|
14957
15038
|
} else {
|
|
14958
15039
|
propsForInit.push(`get ${quotePropName(prop.name)}() { return ${jsxExpr} }`);
|
|
14959
15040
|
}
|
|
@@ -15094,7 +15175,7 @@ function collectElements(node, ctx, siblingOffsets, insideConditional = false) {
|
|
|
15094
15175
|
reactiveTextSlotIds: new Set(bindings.reactiveTexts.map((t) => t.slotId))
|
|
15095
15176
|
};
|
|
15096
15177
|
skeletonTemplate = buildLoopSkeletonTemplate(l.children[0], skeletonSafeSlots) ?? undefined;
|
|
15097
|
-
if (skeletonTemplate && !
|
|
15178
|
+
if (skeletonTemplate && !detectRootNamespaceWrapTag(skeletonTemplate)) {
|
|
15098
15179
|
skeletonPaths = computeSkeletonSlotPaths(l.children[0], skeletonSafeSlots) ?? undefined;
|
|
15099
15180
|
}
|
|
15100
15181
|
}
|
|
@@ -16013,6 +16094,8 @@ var RUNTIME_IMPORT_CANDIDATES = [
|
|
|
16013
16094
|
"escapeAttr",
|
|
16014
16095
|
"escapeText",
|
|
16015
16096
|
"escapeTextOrNode",
|
|
16097
|
+
"bfMarkup",
|
|
16098
|
+
"escapeTextOrMarkup",
|
|
16016
16099
|
"qsa",
|
|
16017
16100
|
"qsaItem",
|
|
16018
16101
|
"qsaChildScope",
|
|
@@ -17027,7 +17110,8 @@ function emitRegistrationAndHydration(lines, ctx, _ir, graph, inlinability) {
|
|
|
17027
17110
|
const isCommentScope = _ir.root.type === "fragment" && _ir.root.needsScopeComment || _ir.root.type === "component";
|
|
17028
17111
|
const defParts = [`init: init${name}`];
|
|
17029
17112
|
if (canGenerateStaticTemplate(_ir.root, propNamesForStaticCheck, inlinableConstants, unsafeLocalNames)) {
|
|
17030
|
-
const
|
|
17113
|
+
const markupSlotIds = new Set(ctx.dynamicElements.map((e) => e.slotId));
|
|
17114
|
+
const templateHtml = irToComponentTemplate(_ir.root, inlinableConstants, restSpreadNames, ctx.propsObjectName, markupSlotIds);
|
|
17031
17115
|
if (templateHtml) {
|
|
17032
17116
|
defParts.push(buildTemplateDefPart(ctx, templateHtml));
|
|
17033
17117
|
}
|
|
@@ -20279,9 +20363,8 @@ function stringifyBranchInnerLoops(lines, plan, indent, pc) {
|
|
|
20279
20363
|
lines.push(`${indent} ${inner.paramUnwrap}`);
|
|
20280
20364
|
}
|
|
20281
20365
|
{
|
|
20282
|
-
const
|
|
20283
|
-
const innerHtml =
|
|
20284
|
-
const childPath = isSvg ? ".firstElementChild.firstElementChild" : ".firstElementChild";
|
|
20366
|
+
const { wrapTag, childPath } = namespaceWrapForTemplate(inner.wrappedTemplate);
|
|
20367
|
+
const innerHtml = wrapTag ? `<${wrapTag}>${inner.wrappedTemplate}</${wrapTag}>` : inner.wrappedTemplate;
|
|
20285
20368
|
lines.push(`${indent} let __bel${uid} = __existing ?? (() => { const __t = document.createElement('template'); __t.innerHTML = \`${innerHtml}\`; return __t.content${childPath}.cloneNode(true) })()`);
|
|
20286
20369
|
}
|
|
20287
20370
|
if (inner.wrappedKey) {
|
|
@@ -21022,14 +21105,14 @@ function stringifyStaticLoop(lines, plan) {
|
|
|
21022
21105
|
lines.push(` let __iterEl = ${containerVar}.children[${childIndexExpr}]`);
|
|
21023
21106
|
if (csrMaterialize) {
|
|
21024
21107
|
lines.push(` if (!__iterEl) {`);
|
|
21025
|
-
const
|
|
21026
|
-
const itemHtml =
|
|
21108
|
+
const { wrapTag, childPath } = csrMaterialize.bodyIsMultiRoot ? multiRootNamespaceWrapForTemplate(csrMaterialize.itemTemplate) : namespaceWrapForTemplate(csrMaterialize.itemTemplate);
|
|
21109
|
+
const itemHtml = wrapHtmlForNamespace(csrMaterialize.itemTemplate, wrapTag);
|
|
21027
21110
|
if (csrMaterialize.bodyIsMultiRoot) {
|
|
21028
21111
|
lines.push(` const __mtpl = document.createElement('template')`);
|
|
21029
21112
|
lines.push(` __mtpl.innerHTML = \`${itemHtml}\``);
|
|
21030
21113
|
lines.push(` const __anchor = ${containerVar}.children[${childIndexExpr}] ?? null`);
|
|
21031
21114
|
lines.push(` let __first = null`);
|
|
21032
|
-
lines.push(` let __sib = __mtpl.content${
|
|
21115
|
+
lines.push(` let __sib = __mtpl.content${childPath}.firstElementChild`);
|
|
21033
21116
|
lines.push(` while (__sib) {`);
|
|
21034
21117
|
lines.push(` const __next = __sib.nextElementSibling`);
|
|
21035
21118
|
lines.push(` const __cloned = __sib.cloneNode(true)`);
|
|
@@ -21041,7 +21124,7 @@ function stringifyStaticLoop(lines, plan) {
|
|
|
21041
21124
|
} else {
|
|
21042
21125
|
lines.push(` const __tpl = document.createElement('template')`);
|
|
21043
21126
|
lines.push(` __tpl.innerHTML = \`${itemHtml}\``);
|
|
21044
|
-
lines.push(` const __cloned = __tpl.content${
|
|
21127
|
+
lines.push(` const __cloned = __tpl.content${childPath}`);
|
|
21045
21128
|
lines.push(` if (__cloned) {`);
|
|
21046
21129
|
lines.push(` const __anchor = ${containerVar}.children[${childIndexExpr}] ?? null`);
|
|
21047
21130
|
lines.push(` ${containerVar}.insertBefore(__cloned, __anchor)`);
|
|
@@ -21111,9 +21194,8 @@ function emitReactive(lines, inner, indent, pc) {
|
|
|
21111
21194
|
lines.push(`${innerIndent} __innerEl${uid}.__bfExtras = __innerExtras${uid}`);
|
|
21112
21195
|
lines.push(`${indent} }`);
|
|
21113
21196
|
} else {
|
|
21114
|
-
const
|
|
21115
|
-
const innerHtml =
|
|
21116
|
-
const childPath = isSvg ? ".firstElementChild.firstElementChild" : ".firstElementChild";
|
|
21197
|
+
const { wrapTag, childPath } = namespaceWrapForTemplate(emit.wrappedTemplate);
|
|
21198
|
+
const innerHtml = wrapTag ? `<${wrapTag}>${emit.wrappedTemplate}</${wrapTag}>` : emit.wrappedTemplate;
|
|
21117
21199
|
lines.push(`${indent} let __innerEl${uid} = __existing ?? (() => { const __t = document.createElement('template'); __t.innerHTML = \`${innerHtml}\`; return __t.content${childPath}.cloneNode(true) })()`);
|
|
21118
21200
|
}
|
|
21119
21201
|
if (emit.wrappedKey) {
|
|
@@ -22440,7 +22522,8 @@ function generateTemplateOnlyMount(ir, ctx) {
|
|
|
22440
22522
|
restSpreadNames.add(ctx.propsObjectName);
|
|
22441
22523
|
let templateHtml;
|
|
22442
22524
|
if (canGenerateStaticTemplate(ir.root, propNamesForStaticCheck, inlinableConstants, unsafeLocalNames)) {
|
|
22443
|
-
|
|
22525
|
+
const markupSlotIds = new Set(ctx.dynamicElements.map((e) => e.slotId));
|
|
22526
|
+
templateHtml = irToComponentTemplate(ir.root, inlinableConstants, restSpreadNames, ctx.propsObjectName, markupSlotIds);
|
|
22444
22527
|
}
|
|
22445
22528
|
if (!templateHtml) {
|
|
22446
22529
|
const csrInlinableConstants = csrInlinableConstantsFromCtx(ctx);
|
|
@@ -23138,6 +23221,7 @@ function extractSsrDefaults(metadata) {
|
|
|
23138
23221
|
out[metadata.restPropsName] = { isRestProps: true, value: {} };
|
|
23139
23222
|
}
|
|
23140
23223
|
const bindings = {};
|
|
23224
|
+
const localConsts = localConstValuesByName(metadata);
|
|
23141
23225
|
for (const c of metadata.localConstants ?? []) {
|
|
23142
23226
|
if (!c.isModule || c.value === undefined)
|
|
23143
23227
|
continue;
|
|
@@ -23153,14 +23237,26 @@ function extractSsrDefaults(metadata) {
|
|
|
23153
23237
|
if (sig.envReader)
|
|
23154
23238
|
continue;
|
|
23155
23239
|
const value = tryStaticEval(sig.initialValue, { bindings, propsLike });
|
|
23156
|
-
|
|
23240
|
+
if (metadata.propsObjectName !== null && referencesOwnProp(sig.initialValue, metadata.propsObjectName, sig.getter, localConsts)) {
|
|
23241
|
+
if (!(sig.getter in out)) {
|
|
23242
|
+
out[sig.getter] = { propName: sig.getter, value: null };
|
|
23243
|
+
}
|
|
23244
|
+
} else {
|
|
23245
|
+
out[sig.getter] = { value: resultToJsonable(value) };
|
|
23246
|
+
}
|
|
23157
23247
|
bindings[sig.getter] = value;
|
|
23158
23248
|
}
|
|
23159
23249
|
for (const memo of metadata.memos) {
|
|
23160
23250
|
if (memo.isModule)
|
|
23161
23251
|
continue;
|
|
23162
23252
|
const value = tryStaticEval(memo.computation, { bindings, propsLike });
|
|
23163
|
-
|
|
23253
|
+
if (metadata.propsObjectName !== null && referencesOwnProp(memo.computation, metadata.propsObjectName, memo.name, localConsts)) {
|
|
23254
|
+
if (!(memo.name in out)) {
|
|
23255
|
+
out[memo.name] = { propName: memo.name, value: null };
|
|
23256
|
+
}
|
|
23257
|
+
} else {
|
|
23258
|
+
out[memo.name] = { value: resultToJsonable(value) };
|
|
23259
|
+
}
|
|
23164
23260
|
bindings[memo.name] = value;
|
|
23165
23261
|
}
|
|
23166
23262
|
if (metadata.propsObjectName !== null) {
|
|
@@ -23168,12 +23264,12 @@ function extractSsrDefaults(metadata) {
|
|
|
23168
23264
|
for (const sig of metadata.signals) {
|
|
23169
23265
|
if (!sig.getter || sig.isModule || sig.envReader)
|
|
23170
23266
|
continue;
|
|
23171
|
-
|
|
23267
|
+
collectPropRefsTransitive(sig.initialValue, metadata.propsObjectName, localConsts, referenced);
|
|
23172
23268
|
}
|
|
23173
23269
|
for (const memo of metadata.memos) {
|
|
23174
23270
|
if (memo.isModule)
|
|
23175
23271
|
continue;
|
|
23176
|
-
|
|
23272
|
+
collectPropRefsTransitive(memo.computation, metadata.propsObjectName, localConsts, referenced);
|
|
23177
23273
|
}
|
|
23178
23274
|
for (const name of referenced) {
|
|
23179
23275
|
if (name in out)
|
|
@@ -23183,6 +23279,20 @@ function extractSsrDefaults(metadata) {
|
|
|
23183
23279
|
}
|
|
23184
23280
|
return Object.keys(out).length === 0 ? undefined : out;
|
|
23185
23281
|
}
|
|
23282
|
+
function localConstValuesByName(metadata) {
|
|
23283
|
+
const out = new Map;
|
|
23284
|
+
for (const c of metadata.localConstants ?? []) {
|
|
23285
|
+
if (c.isModule || c.value === undefined)
|
|
23286
|
+
continue;
|
|
23287
|
+
out.set(c.name, c.value);
|
|
23288
|
+
}
|
|
23289
|
+
return out;
|
|
23290
|
+
}
|
|
23291
|
+
function referencesOwnProp(expr, propsObjectName, name, localConsts) {
|
|
23292
|
+
const referenced = new Set;
|
|
23293
|
+
collectPropRefsTransitive(expr, propsObjectName, localConsts, referenced);
|
|
23294
|
+
return referenced.has(name);
|
|
23295
|
+
}
|
|
23186
23296
|
function collectPropRefs(expr, propsObjectName, out) {
|
|
23187
23297
|
if (!expr || !expr.trim())
|
|
23188
23298
|
return;
|
|
@@ -23198,6 +23308,23 @@ function collectPropRefs(expr, propsObjectName, out) {
|
|
|
23198
23308
|
};
|
|
23199
23309
|
visit3(node);
|
|
23200
23310
|
}
|
|
23311
|
+
function collectPropRefsTransitive(expr, propsObjectName, localConsts, out, visited = new Set) {
|
|
23312
|
+
if (!expr || !expr.trim())
|
|
23313
|
+
return;
|
|
23314
|
+
collectPropRefs(expr, propsObjectName, out);
|
|
23315
|
+
const node = parseExpression2(expr);
|
|
23316
|
+
if (!node)
|
|
23317
|
+
return;
|
|
23318
|
+
for (const id of extractFreeIdentifiersFromNode(node)) {
|
|
23319
|
+
if (visited.has(id))
|
|
23320
|
+
continue;
|
|
23321
|
+
const constValue = localConsts.get(id);
|
|
23322
|
+
if (constValue === undefined)
|
|
23323
|
+
continue;
|
|
23324
|
+
visited.add(id);
|
|
23325
|
+
collectPropRefsTransitive(constValue, propsObjectName, localConsts, out, visited);
|
|
23326
|
+
}
|
|
23327
|
+
}
|
|
23201
23328
|
function resultToJsonable(v) {
|
|
23202
23329
|
if (v === UNRESOLVED)
|
|
23203
23330
|
return null;
|
|
@@ -23242,7 +23369,7 @@ function evalStatementsForReturn(statements, ctx) {
|
|
|
23242
23369
|
return NO_RETURN;
|
|
23243
23370
|
}
|
|
23244
23371
|
function parseExpression2(expr) {
|
|
23245
|
-
const sf = ts22.createSourceFile("__ssr_default__.ts", `(${expr})`, ts22.ScriptTarget.Latest,
|
|
23372
|
+
const sf = ts22.createSourceFile("__ssr_default__.ts", `(${expr})`, ts22.ScriptTarget.Latest, true, ts22.ScriptKind.TS);
|
|
23246
23373
|
const stmt = sf.statements[0];
|
|
23247
23374
|
if (!stmt || !ts22.isExpressionStatement(stmt))
|
|
23248
23375
|
return null;
|
|
@@ -23873,6 +24000,38 @@ function classify2(name, origin, expr, parsed, available) {
|
|
|
23873
24000
|
}
|
|
23874
24001
|
return { kind: "derived", name, origin, expr, parsed, frees: [...frees] };
|
|
23875
24002
|
}
|
|
24003
|
+
function localConstExprsByName(metadata) {
|
|
24004
|
+
const out = new Map;
|
|
24005
|
+
for (const c of metadata.localConstants ?? []) {
|
|
24006
|
+
if (c.isModule || c.declarationKind !== "const" || c.value === undefined)
|
|
24007
|
+
continue;
|
|
24008
|
+
out.set(c.name, c.parsed ?? parseExpression(c.value.trim()));
|
|
24009
|
+
}
|
|
24010
|
+
return out;
|
|
24011
|
+
}
|
|
24012
|
+
function resolveThroughLocalConsts(parsed, localConsts) {
|
|
24013
|
+
let current = parsed;
|
|
24014
|
+
const maxIter = localConsts.size + 1;
|
|
24015
|
+
for (let i = 0;i < maxIter; i++) {
|
|
24016
|
+
const frees = freeIdentifiers(current);
|
|
24017
|
+
if (frees === null)
|
|
24018
|
+
break;
|
|
24019
|
+
let changed = false;
|
|
24020
|
+
for (const name of frees) {
|
|
24021
|
+
const value = localConsts.get(name);
|
|
24022
|
+
if (!value)
|
|
24023
|
+
continue;
|
|
24024
|
+
const inlined = inlineBinding(current, name, value);
|
|
24025
|
+
if (inlined === null)
|
|
24026
|
+
continue;
|
|
24027
|
+
current = inlined;
|
|
24028
|
+
changed = true;
|
|
24029
|
+
}
|
|
24030
|
+
if (!changed)
|
|
24031
|
+
break;
|
|
24032
|
+
}
|
|
24033
|
+
return current;
|
|
24034
|
+
}
|
|
23876
24035
|
function computeSsrSeedPlan(metadata) {
|
|
23877
24036
|
const baseScope = metadata.propsParams.map((p) => p.name);
|
|
23878
24037
|
if (metadata.propsObjectName)
|
|
@@ -23881,6 +24040,7 @@ function computeSsrSeedPlan(metadata) {
|
|
|
23881
24040
|
baseScope.push(name);
|
|
23882
24041
|
}
|
|
23883
24042
|
const available = new Set(baseScope);
|
|
24043
|
+
const localConsts = localConstExprsByName(metadata);
|
|
23884
24044
|
const steps = [];
|
|
23885
24045
|
for (const signal of metadata.signals) {
|
|
23886
24046
|
if (signal.envReader) {
|
|
@@ -23892,13 +24052,13 @@ function computeSsrSeedPlan(metadata) {
|
|
|
23892
24052
|
}
|
|
23893
24053
|
}
|
|
23894
24054
|
const expr = signal.initialValue.trim();
|
|
23895
|
-
steps.push(expr === "" ? { kind: "opaque", name: signal.getter, origin: "signal" } : classify2(signal.getter, "signal", expr, parseExpression(expr), available));
|
|
24055
|
+
steps.push(expr === "" ? { kind: "opaque", name: signal.getter, origin: "signal" } : classify2(signal.getter, "signal", expr, resolveThroughLocalConsts(parseExpression(expr), localConsts), available));
|
|
23896
24056
|
available.add(signal.getter);
|
|
23897
24057
|
}
|
|
23898
24058
|
for (const memo of metadata.memos) {
|
|
23899
24059
|
const body = extractArrowBodyExpression(memo.computation);
|
|
23900
24060
|
const expr = body?.trim() ?? "";
|
|
23901
|
-
steps.push(expr === "" ? { kind: "opaque", name: memo.name, origin: "memo" } : classify2(memo.name, "memo", expr, memo.parsed ?? parseExpression(expr), available));
|
|
24061
|
+
steps.push(expr === "" ? { kind: "opaque", name: memo.name, origin: "memo" } : classify2(memo.name, "memo", expr, resolveThroughLocalConsts(memo.parsed ?? parseExpression(expr), localConsts), available));
|
|
23902
24062
|
available.add(memo.name);
|
|
23903
24063
|
}
|
|
23904
24064
|
return { baseScope, steps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-elements.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/collect-elements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAoC,KAAK,MAAM,EAAmC,MAAM,aAAa,CAAA;AACzH,OAAO,KAAK,EAAE,eAAe,EAA+H,iBAAiB,EAA0B,oBAAoB,EAAc,UAAU,EAAE,MAAM,YAAY,CAAA;AA2GvQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0C7E;AAyBD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,wBAIpC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,cAAc,CAAC,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,wBAAwB,GACjC,UAAU,EAAE,CA6Id;
|
|
1
|
+
{"version":3,"file":"collect-elements.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/collect-elements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAoC,KAAK,MAAM,EAAmC,MAAM,aAAa,CAAA;AACzH,OAAO,KAAK,EAAE,eAAe,EAA+H,iBAAiB,EAA0B,oBAAoB,EAAc,UAAU,EAAE,MAAM,YAAY,CAAA;AA2GvQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0C7E;AAyBD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,wBAIpC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,cAAc,CAAC,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,wBAAwB,GACjC,UAAU,EAAE,CA6Id;AAqMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,iBAAiB,UAAQ,GACxB,IAAI,CAsSN;AAocD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,SAAS,OAAO,aAAa,EAAE,gBAAgB,EAAE,GAAG,SAAS;AAChF;;;;GAIG;AACH,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AACnC;;;;GAIG;AACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,iBAAiB,CAenB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,SAAS,OAAO,aAAa,EAAE,gBAAgB,EAAE;AACrE;;;;;;;;GAQG;AACH,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AACnC;;;GAGG;AACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,oBAAoB,EAAE,CA2ExB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/loop-child-arm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEnE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,MAAM,GACV,IAAI,CAcN;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,uBAAuB,EAC7B,MAAM,EAAE,MAAM,GACb,IAAI,CAYN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,6BAA6B,EACnC,MAAM,EAAE,MAAM,GACb,IAAI,CAIN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,MAAM,GACV,IAAI,
|
|
1
|
+
{"version":3,"file":"loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/loop-child-arm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEnE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,MAAM,GACV,IAAI,CAcN;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,uBAAuB,EAC7B,MAAM,EAAE,MAAM,GACb,IAAI,CAYN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,6BAA6B,EACnC,MAAM,EAAE,MAAM,GACb,IAAI,CAIN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,MAAM,GACV,IAAI,CAyDN;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,SAAS,wBAAwB,EAAE,EACjD,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,MAAM,GACV,IAAI,CAIN;AA0BD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,IAAI,CAiDN"}
|