diff --git a/.changeset/big-months-shout.md b/.changeset/big-months-shout.md new file mode 100644 index 0000000000..3d8ca0045e --- /dev/null +++ b/.changeset/big-months-shout.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +chore: drop dead code that make TSGO fail diff --git a/.changeset/rich-jokes-attack.md b/.changeset/rich-jokes-attack.md new file mode 100644 index 0000000000..46e7d2d8c8 --- /dev/null +++ b/.changeset/rich-jokes-attack.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly transform declaration tags during SSR diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js index 3da6fcf321..56157cee37 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js @@ -60,7 +60,9 @@ export function process_children(nodes, { visit, state }) { if (evaluated.is_known) { quasi.value.cooked += escape_html((evaluated.value ?? '') + ''); } else { - expressions.push(b.call('$.escape', /** @type {Expression} */ (visit(node.expression)))); + expressions.push( + b.call('$.escape', /** @type {Expression} */ (visit(node.expression, state))) + ); quasi = b.quasi('', i + 1 === sequence.length); quasis.push(quasi); @@ -80,7 +82,7 @@ export function process_children(nodes, { visit, state }) { if (node.type === 'ExpressionTag' && node.metadata.expression.is_async()) { flush(); - const expression = /** @type {Expression} */ (visit(node.expression)); + const expression = /** @type {Expression} */ (visit(node.expression, state)); let call = b.call( '$$renderer.push', diff --git a/packages/svelte/src/internal/client/reactivity/props.js b/packages/svelte/src/internal/client/reactivity/props.js index c2f3698809..274d780b1e 100644 --- a/packages/svelte/src/internal/client/reactivity/props.js +++ b/packages/svelte/src/internal/client/reactivity/props.js @@ -91,10 +91,7 @@ const rest_props_handler = { */ /*#__NO_SIDE_EFFECTS__*/ export function rest_props(props, exclude, name) { - return new Proxy( - DEV ? { props, exclude, name, other: {}, to_proxy: [] } : { props, exclude }, - rest_props_handler - ); + return new Proxy(DEV ? { props, exclude, name } : { props, exclude }, rest_props_handler); } /** diff --git a/packages/svelte/tests/server-side-rendering/samples/declaration-tags-transform/_expected.html b/packages/svelte/tests/server-side-rendering/samples/declaration-tags-transform/_expected.html new file mode 100644 index 0000000000..5665318328 --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/declaration-tags-transform/_expected.html @@ -0,0 +1 @@ +
number
\ No newline at end of file diff --git a/packages/svelte/tests/server-side-rendering/samples/declaration-tags-transform/main.svelte b/packages/svelte/tests/server-side-rendering/samples/declaration-tags-transform/main.svelte new file mode 100644 index 0000000000..d969f907a5 --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/declaration-tags-transform/main.svelte @@ -0,0 +1,4 @@ +
+ {let dt = $derived(Date.parse("2026-10-01T00:00:00Z"))} + {typeof dt} +
\ No newline at end of file