diff --git a/.changeset/empty-sloths-give.md b/.changeset/empty-sloths-give.md new file mode 100644 index 000000000000..163c21446038 --- /dev/null +++ b/.changeset/empty-sloths-give.md @@ -0,0 +1,5 @@ +--- +'svelte': minor +--- + +feat: allow usage of `$props.id` everywhere if invoked within a component script diff --git a/documentation/docs/98-reference/.generated/compile-errors.md b/documentation/docs/98-reference/.generated/compile-errors.md index a4ecbb31d569..58c73bded80e 100644 --- a/documentation/docs/98-reference/.generated/compile-errors.md +++ b/documentation/docs/98-reference/.generated/compile-errors.md @@ -576,12 +576,6 @@ Unrecognised compiler option %keypath% Cannot use `%rune%()` more than once ``` -### props_id_invalid_placement - -``` -`$props.id()` can only be used at the top level of components as a variable declaration initializer -``` - ### props_illegal_name ``` diff --git a/documentation/docs/98-reference/.generated/shared-errors.md b/documentation/docs/98-reference/.generated/shared-errors.md index 0102aafcbca1..454f7260452f 100644 --- a/documentation/docs/98-reference/.generated/shared-errors.md +++ b/documentation/docs/98-reference/.generated/shared-errors.md @@ -54,6 +54,12 @@ Certain lifecycle methods can only be used during component initialisation. To f ``` +### props_id_invalid_placement + +``` +`$props.id()` can only be used inside a component initialization phase +``` + ### store_invalid_shape ``` diff --git a/packages/svelte/messages/compile-errors/script.md b/packages/svelte/messages/compile-errors/script.md index 795c0b007dca..975ac514974e 100644 --- a/packages/svelte/messages/compile-errors/script.md +++ b/packages/svelte/messages/compile-errors/script.md @@ -122,10 +122,6 @@ This turned out to be buggy and unpredictable, particularly when working with de > Cannot use `%rune%()` more than once -## props_id_invalid_placement - -> `$props.id()` can only be used at the top level of components as a variable declaration initializer - ## props_illegal_name > Declaring or accessing a prop starting with `$$` is illegal (they are reserved for Svelte internals) diff --git a/packages/svelte/messages/shared-errors/errors.md b/packages/svelte/messages/shared-errors/errors.md index 8b4c61303a07..6a0e75208a9a 100644 --- a/packages/svelte/messages/shared-errors/errors.md +++ b/packages/svelte/messages/shared-errors/errors.md @@ -48,6 +48,10 @@ Certain lifecycle methods can only be used during component initialisation. To f ``` +## props_id_invalid_placement + +> `$props.id()` can only be used inside a component initialization phase + ## store_invalid_shape > `%name%` is not a store with a `subscribe` method diff --git a/packages/svelte/src/compiler/errors.js b/packages/svelte/src/compiler/errors.js index 93eeee539cc3..9eef96feb8d6 100644 --- a/packages/svelte/src/compiler/errors.js +++ b/packages/svelte/src/compiler/errors.js @@ -288,15 +288,6 @@ export function props_duplicate(node, rune) { e(node, 'props_duplicate', `Cannot use \`${rune}()\` more than once\nhttps://svelte.dev/e/props_duplicate`); } -/** - * `$props.id()` can only be used at the top level of components as a variable declaration initializer - * @param {null | number | NodeLike} node - * @returns {never} - */ -export function props_id_invalid_placement(node) { - e(node, 'props_id_invalid_placement', `\`$props.id()\` can only be used at the top level of components as a variable declaration initializer\nhttps://svelte.dev/e/props_id_invalid_placement`); -} - /** * Declaring or accessing a prop starting with `$$` is illegal (they are reserved for Svelte internals) * @param {null | number | NodeLike} node diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 846abcf7dfc9..ad9db24e1e65 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -416,7 +416,6 @@ export function analyze_component(root, source, options) { immutable: runes || options.immutable, exports: [], uses_props: false, - props_id: null, uses_rest_props: false, uses_slots: false, uses_component_bindings: false, diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js index ce520cc98055..6cf1e7b43e73 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js @@ -75,28 +75,9 @@ export function CallExpression(node, context) { break; case '$props.id': { - const grand_parent = get_parent(context.path, -2); - - if (context.state.analysis.props_id) { - e.props_duplicate(node, rune); - } - - if ( - parent.type !== 'VariableDeclarator' || - parent.id.type !== 'Identifier' || - context.state.ast_type !== 'instance' || - context.state.scope !== context.state.analysis.instance.scope || - grand_parent.type !== 'VariableDeclaration' - ) { - e.props_id_invalid_placement(node); - } - if (node.arguments.length > 0) { e.rune_invalid_arguments(node, rune); } - - context.state.analysis.props_id = parent.id; - break; } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js index 1507123e1342..0e7c610b54e0 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js @@ -25,10 +25,6 @@ export function validate_assignment(node, argument, state) { e.constant_assignment(node, 'derived state'); } - if (binding?.node === state.analysis.props_id) { - e.constant_assignment(node, '$props.id()'); - } - if (binding?.kind === 'each') { e.each_item_invalid_assignment(node); } diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js index 2e6307a4b7a6..7c210d972344 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js @@ -226,7 +226,10 @@ export function client_component(analysis, options) { if (store_setup.length === 0) { needs_store_cleanup = true; store_setup.push( - b.const(b.array_pattern([b.id('$$stores'), b.id('$$cleanup')]), b.call('$.setup_stores')) + b.const( + b.array_pattern([b.id('$$stores'), b.id('$$cleanup_stores')]), + b.call('$.setup_stores') + ) ); } @@ -414,11 +417,13 @@ export function client_component(analysis, options) { } if (needs_store_cleanup) { - component_block.body.push(b.stmt(b.call('$$cleanup'))); + component_block.body.push(b.stmt(b.call('$$cleanup_stores'))); if (component_returned_object.length > 0) { component_block.body.push(b.return(b.id('$$pop'))); } } + component_block.body.unshift(b.const('$$cleanup', b.call('$.setup'))); + component_block.body.push(b.stmt(b.call('$$cleanup'))); if (analysis.uses_rest_props) { const named_props = analysis.exports.map(({ name, alias }) => alias ?? name); @@ -562,11 +567,6 @@ export function client_component(analysis, options) { component_block.body.unshift(b.stmt(b.call('$.check_target', b.id('new.target')))); } - if (analysis.props_id) { - // need to be placed on first line of the component for hydration - component_block.body.unshift(b.const(analysis.props_id, b.call('$.props_id'))); - } - if (state.events.size > 0) { body.push( b.stmt(b.call('$.delegate', b.array(Array.from(state.events).map((name) => b.literal(name))))) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js index 7a3057451aa1..73ccc68fed23 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js @@ -33,6 +33,8 @@ export function CallExpression(node, context) { case '$inspect': case '$inspect().with': return transform_inspect_rune(node, context); + case '$props.id': + return b.call('$.props_id'); } if ( diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js index 31e712cdcc4d..0e512b49886f 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js @@ -43,7 +43,7 @@ export function VariableDeclaration(node, context) { } if (rune === '$props.id') { - // skip + declarations.push(/** @type {VariableDeclarator} */ (context.visit(declarator))); continue; } diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js index 9214a13c94ca..00634f229eeb 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js @@ -129,12 +129,6 @@ export function build_template_chunk( if (value.right.value === null) { value = { ...value, right: b.literal('') }; } - } else if ( - state.analysis.props_id && - value.type === 'Identifier' && - value.name === state.analysis.props_id.name - ) { - // do nothing ($props.id() is never null/undefined) } else { value = b.logical('??', value, b.literal('')); } diff --git a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js index df3d831d3cc3..89d3aad87077 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js @@ -244,13 +244,6 @@ export function server_component(analysis, options) { .../** @type {Statement[]} */ (template.body) ]); - if (analysis.props_id) { - // need to be placed on first line of the component for hydration - component_block.body.unshift( - b.const(analysis.props_id, b.call('$.props_id', b.id('$$payload'))) - ); - } - let should_inject_context = dev || analysis.needs_context; if (should_inject_context) { @@ -258,6 +251,9 @@ export function server_component(analysis, options) { component_block.body.push(b.stmt(b.call('$.pop'))); } + component_block.body.unshift(b.const('$$cleanup', b.call('$.setup', b.id('$$payload')))); + component_block.body.push(b.stmt(b.call('$$cleanup', b.id('$$payload')))); + if (analysis.uses_rest_props) { /** @type {string[]} */ const named_props = analysis.exports.map(({ name, alias }) => alias ?? name); diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js index 386c6b6ff393..9e062aa80488 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js @@ -37,5 +37,9 @@ export function CallExpression(node, context) { return transform_inspect_rune(node, context); } + if (rune === '$props.id') { + return b.call('$.props_id'); + } + context.next(); } diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js index c4c31d7eb304..6ec5cbaff43b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js @@ -23,9 +23,8 @@ export function VariableDeclaration(node, context) { declarations.push(/** @type {VariableDeclarator} */ (context.visit(declarator))); continue; } - if (rune === '$props.id') { - // skip + declarations.push(/** @type {VariableDeclarator} */ (context.visit(declarator))); continue; } diff --git a/packages/svelte/src/compiler/phases/types.d.ts b/packages/svelte/src/compiler/phases/types.d.ts index abe2b115de02..fe32dbba3e4a 100644 --- a/packages/svelte/src/compiler/phases/types.d.ts +++ b/packages/svelte/src/compiler/phases/types.d.ts @@ -44,8 +44,6 @@ export interface ComponentAnalysis extends Analysis { exports: Array<{ name: string; alias: string | null }>; /** Whether the component uses `$$props` */ uses_props: boolean; - /** The component ID variable name, if any */ - props_id: Identifier | null; /** Whether the component uses `$$restProps` */ uses_rest_props: boolean; /** Whether the component uses `$$slots` */ diff --git a/packages/svelte/src/internal/client/dom/template.js b/packages/svelte/src/internal/client/dom/template.js index 575bf55cf62b..c266147cf493 100644 --- a/packages/svelte/src/internal/client/dom/template.js +++ b/packages/svelte/src/internal/client/dom/template.js @@ -4,7 +4,7 @@ import { create_text, get_first_child, is_firefox } from './operations.js'; import { create_fragment_from_html } from './reconciler.js'; import { active_effect } from '../runtime.js'; import { TEMPLATE_FRAGMENT, TEMPLATE_USE_IMPORT_NODE } from '../../../constants.js'; - +import * as e from '../../shared/errors.js'; /** * @param {TemplateNode} start * @param {TemplateNode | null} end @@ -256,10 +256,26 @@ export function reset_props_id() { uid = 1; } +/** + * @type {string | undefined} + */ +let current_uid; + /** * Create (or hydrate) an unique UID for the component instance. */ export function props_id() { + if (current_uid == null) { + e.props_id_invalid_placement(); + } + return current_uid; +} + +export function setup() { + let old_uid = current_uid; + function reset() { + current_uid = old_uid; + } if ( hydrating && hydrate_node && @@ -268,8 +284,9 @@ export function props_id() { ) { const id = hydrate_node.textContent.substring(1); hydrate_next(); - return id; + current_uid = id; + return reset; } - - return 'c' + uid++; + current_uid = 'c' + uid++; + return reset; } diff --git a/packages/svelte/src/internal/client/index.js b/packages/svelte/src/internal/client/index.js index d78f6d452e84..92046aaf091d 100644 --- a/packages/svelte/src/internal/client/index.js +++ b/packages/svelte/src/internal/client/index.js @@ -97,7 +97,8 @@ export { template, template_with_script, text, - props_id + props_id, + setup } from './dom/template.js'; export { derived, derived_safe_equal } from './reactivity/deriveds.js'; export { diff --git a/packages/svelte/src/internal/server/index.js b/packages/svelte/src/internal/server/index.js index 728f2ebc2a3c..7ac7e1a2497c 100644 --- a/packages/svelte/src/internal/server/index.js +++ b/packages/svelte/src/internal/server/index.js @@ -10,6 +10,7 @@ import { ELEMENT_PRESERVE_ATTRIBUTE_CASE, ELEMENT_IS_NAMESPACED } from '../../constants.js'; +import * as e from '../shared/errors.js'; import { escape_html } from '../../escaping.js'; import { DEV } from 'esm-env'; @@ -543,13 +544,41 @@ export function once(get_value) { /** * Create an unique ID - * @param {Payload} payload * @returns {string} */ -export function props_id(payload) { - const uid = payload.uid(); - payload.out += ''; - return uid; +export function props_id() { + if (current_id == null) { + e.props_id_invalid_placement(); + } + need_props_id = true; + return current_id; +} + +/** + * @type {string | undefined} + */ +let current_id; + +let need_props_id = false; + +/** + * @param {Payload} payload + * @returns {(payload: Payload)=>void} + */ +export function setup(payload) { + let old_payload = payload.out; + let old_needs_props_id = need_props_id; + let old_id = current_id; + current_id = payload.uid(); + payload.out = ''; + return (payload) => { + if (need_props_id) { + payload.out = '' + payload.out; + } + need_props_id = old_needs_props_id; + payload.out = old_payload + payload.out; + current_id = old_id; + }; } export { attr, clsx }; diff --git a/packages/svelte/src/internal/shared/errors.js b/packages/svelte/src/internal/shared/errors.js index 26d6822cdb29..7269ac68476f 100644 --- a/packages/svelte/src/internal/shared/errors.js +++ b/packages/svelte/src/internal/shared/errors.js @@ -33,6 +33,21 @@ export function lifecycle_outside_component(name) { } } +/** + * `$props.id()` can only be used inside a component initialization phase + * @returns {never} + */ +export function props_id_invalid_placement() { + if (DEV) { + const error = new Error(`props_id_invalid_placement\n\`$props.id()\` can only be used inside a component initialization phase\nhttps://svelte.dev/e/props_id_invalid_placement`); + + error.name = 'Svelte error'; + throw error; + } else { + throw new Error(`https://svelte.dev/e/props_id_invalid_placement`); + } +} + /** * `%name%` is not a store with a `subscribe` method * @param {string} name diff --git a/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/Child.svelte b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/Child.svelte new file mode 100644 index 000000000000..6a5018981aa1 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/Child.svelte @@ -0,0 +1,6 @@ + + +

{id}

diff --git a/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/_config.js b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/_config.js new file mode 100644 index 000000000000..416ef6cfbea2 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/_config.js @@ -0,0 +1,59 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + test({ assert, target, variant }) { + if (variant === 'dom') { + assert.htmlEqual( + target.innerHTML, + ` + +

c1

+

c2

+

c3

+

c4

+ ` + ); + } else { + assert.htmlEqual( + target.innerHTML, + ` + +

s1

+

s2

+

s3

+

s4

+ ` + ); + } + + let button = target.querySelector('button'); + flushSync(() => button?.click()); + + if (variant === 'dom') { + assert.htmlEqual( + target.innerHTML, + ` + +

c1

+

c2

+

c3

+

c4

+

c5

+ ` + ); + } else { + assert.htmlEqual( + target.innerHTML, + ` + +

s1

+

s2

+

s3

+

s4

+

c1

+ ` + ); + } + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/get_id.svelte.js b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/get_id.svelte.js new file mode 100644 index 000000000000..d31840f685c2 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/get_id.svelte.js @@ -0,0 +1,3 @@ +export function get_id() { + return $props.id(); +} diff --git a/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/main.svelte b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/main.svelte new file mode 100644 index 000000000000..147836896434 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/props-id-everywhere/main.svelte @@ -0,0 +1,20 @@ + + + + +

{id}

+ + + + + +{#if show} + +{/if} diff --git a/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/client/index.svelte.js index 3e5a12ed9dec..f7fb74d4c6d0 100644 --- a/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/client/index.svelte.js @@ -8,6 +8,7 @@ function increment(_, counter) { var root = $.template(` `, 1); export default function Await_block_scope($$anchor) { + const $$cleanup = $.setup(); let counter = $.proxy({ count: 0 }); const promise = $.derived(() => Promise.resolve(counter)); var fragment = root(); @@ -31,6 +32,7 @@ export default function Await_block_scope($$anchor) { }); $.append($$anchor, fragment); + $$cleanup(); } $.delegate(['click']); \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js index 012789a5509b..0ed48d576d29 100644 --- a/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/await-block-scope/_expected/server/index.svelte.js @@ -1,6 +1,7 @@ import * as $ from 'svelte/internal/server'; export default function Await_block_scope($$payload) { + const $$cleanup = $.setup($$payload); let counter = { count: 0 }; const promise = Promise.resolve(counter); @@ -11,4 +12,5 @@ export default function Await_block_scope($$payload) { $$payload.out += ` `; $.await(promise, () => {}, (counter) => {}, () => {}); $$payload.out += ` ${$.escape(counter.count)}`; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js index fa990b33ee56..c433bd70b051 100644 --- a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js @@ -13,6 +13,7 @@ const snippet = ($$anchor) => { var root = $.template(` `, 1); export default function Bind_component_snippet($$anchor) { + const $$cleanup = $.setup(); let value = $.state(''); const _snippet = snippet; var fragment = root(); @@ -31,4 +32,5 @@ export default function Bind_component_snippet($$anchor) { $.template_effect(() => $.set_text(text_1, ` value: ${$.get(value) ?? ''}`)); $.append($$anchor, fragment); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js index c091179c41ae..09b006b064f3 100644 --- a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js @@ -6,6 +6,7 @@ function snippet($$payload) { } export default function Bind_component_snippet($$payload) { + const $$cleanup = $.setup($$payload); let value = ''; const _snippet = snippet; let $$settled = true; @@ -32,4 +33,5 @@ export default function Bind_component_snippet($$payload) { } while (!$$settled); $.assign_payload($$payload, $$inner_payload); + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js index dfd32a04e51d..2e79190aba16 100644 --- a/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js @@ -3,5 +3,8 @@ import 'svelte/internal/flags/legacy'; import * as $ from 'svelte/internal/client'; export default function Bind_this($$anchor) { + const $$cleanup = $.setup(); + $.bind_this(Foo($$anchor, { $$legacy: true }), ($$value) => foo = $$value, () => foo); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/bind-this/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-this/_expected/server/index.svelte.js index 148573766ff2..60de4633af31 100644 --- a/packages/svelte/tests/snapshot/samples/bind-this/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-this/_expected/server/index.svelte.js @@ -1,5 +1,8 @@ import * as $ from 'svelte/internal/server'; export default function Bind_this($$payload) { + const $$cleanup = $.setup($$payload); + Foo($$payload, {}); + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/client/index.svelte.js index 2898f31a6fb5..48af9752e21e 100644 --- a/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/client/index.svelte.js @@ -2,6 +2,8 @@ import 'svelte/internal/disclose-version'; import * as $ from 'svelte/internal/client'; export default function Class_state_field_constructor_assignment($$anchor, $$props) { + const $$cleanup = $.setup(); + $.push($$props, true); class Foo { @@ -24,4 +26,5 @@ export default function Class_state_field_constructor_assignment($$anchor, $$pro } $.pop(); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/server/index.svelte.js index 2a115a498373..9e157d00ec48 100644 --- a/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/class-state-field-constructor-assignment/_expected/server/index.svelte.js @@ -1,6 +1,8 @@ import * as $ from 'svelte/internal/server'; export default function Class_state_field_constructor_assignment($$payload, $$props) { + const $$cleanup = $.setup($$payload); + $.push(); class Foo { @@ -14,4 +16,5 @@ export default function Class_state_field_constructor_assignment($$payload, $$pr } $.pop(); + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js b/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js index d97a58bf40d8..bd217ddfddbf 100644 --- a/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js +++ b/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js @@ -4,6 +4,7 @@ import * as $ from 'svelte/internal/client'; var root = $.template(`
`, 3); export default function Main($$anchor) { + const $$cleanup = $.setup(); // needs to be a snapshot test because jsdom does auto-correct the attribute casing let x = 'test'; let y = () => 'test'; @@ -31,4 +32,5 @@ export default function Main($$anchor) { ); $.append($$anchor, fragment); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/server/main.svelte.js b/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/server/main.svelte.js index 4ea5edb6a0ac..e3c94d7d92f0 100644 --- a/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/server/main.svelte.js +++ b/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/server/main.svelte.js @@ -1,9 +1,11 @@ import * as $ from 'svelte/internal/server'; export default function Main($$payload) { + const $$cleanup = $.setup($$payload); // needs to be a snapshot test because jsdom does auto-correct the attribute casing let x = 'test'; let y = () => 'test'; $$payload.out += ` `; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js index c0626bd416c9..14b371690526 100644 --- a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js @@ -3,6 +3,7 @@ import 'svelte/internal/flags/legacy'; import * as $ from 'svelte/internal/client'; export default function Each_string_template($$anchor) { + const $$cleanup = $.setup(); var fragment = $.comment(); var node = $.first_child(fragment); @@ -16,4 +17,5 @@ export default function Each_string_template($$anchor) { }); $.append($$anchor, fragment); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js index 4386c22ebe0a..47acf71d387f 100644 --- a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js @@ -1,6 +1,7 @@ import * as $ from 'svelte/internal/server'; export default function Each_string_template($$payload) { + const $$cleanup = $.setup($$payload); const each_array = $.ensure_array_like(['foo', 'bar', 'baz']); $$payload.out += ``; @@ -12,4 +13,5 @@ export default function Each_string_template($$payload) { } $$payload.out += ``; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js index c545608bcacf..efcc54afbd78 100644 --- a/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js @@ -2,6 +2,7 @@ import 'svelte/internal/disclose-version'; import * as $ from 'svelte/internal/client'; export default function Function_prop_no_getter($$anchor) { + const $$cleanup = $.setup(); let count = $.state(0); function onmouseup() { @@ -24,4 +25,6 @@ export default function Function_prop_no_getter($$anchor) { }, $$slots: { default: true } }); + + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/server/index.svelte.js index 88f6f55ee74a..efe31327d415 100644 --- a/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/server/index.svelte.js @@ -1,6 +1,7 @@ import * as $ from 'svelte/internal/server'; export default function Function_prop_no_getter($$payload) { + const $$cleanup = $.setup($$payload); let count = 0; function onmouseup() { @@ -18,4 +19,6 @@ export default function Function_prop_no_getter($$payload) { }, $$slots: { default: true } }); + + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js index 899c126001f2..00dcfb2d5eba 100644 --- a/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js @@ -5,7 +5,9 @@ import * as $ from 'svelte/internal/client'; var root = $.template(`

hello world

`); export default function Hello_world($$anchor) { + const $$cleanup = $.setup(); var h1 = root(); $.append($$anchor, h1); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/hello-world/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/hello-world/_expected/server/index.svelte.js index 8766fb13007a..ee7cebc55642 100644 --- a/packages/svelte/tests/snapshot/samples/hello-world/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/hello-world/_expected/server/index.svelte.js @@ -1,5 +1,8 @@ import * as $ from 'svelte/internal/server'; export default function Hello_world($$payload) { + const $$cleanup = $.setup($$payload); + $$payload.out += `

hello world

`; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js index 3c8322500b7c..24aeac4f918e 100644 --- a/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js @@ -5,9 +5,11 @@ import * as $ from 'svelte/internal/client'; var root = $.template(`

hello world

`); function Hmr($$anchor) { + const $$cleanup = $.setup(); var h1 = root(); $.append($$anchor, h1); + $$cleanup(); } if (import.meta.hot) { diff --git a/packages/svelte/tests/snapshot/samples/hmr/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/hmr/_expected/server/index.svelte.js index 959e0a403ec8..88b6134c5ef0 100644 --- a/packages/svelte/tests/snapshot/samples/hmr/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/hmr/_expected/server/index.svelte.js @@ -1,5 +1,8 @@ import * as $ from 'svelte/internal/server'; export default function Hmr($$payload) { + const $$cleanup = $.setup($$payload); + $$payload.out += `

hello world

`; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js index ebbe191dcbe4..108be5841d6f 100644 --- a/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js @@ -4,5 +4,7 @@ import * as $ from 'svelte/internal/client'; import { random } from './module.svelte'; export default function Imports_in_modules($$anchor) { - + const $$cleanup = $.setup(); + + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/server/index.svelte.js index 4cd6bc59d782..ab7d74692cab 100644 --- a/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/server/index.svelte.js @@ -2,5 +2,7 @@ import * as $ from 'svelte/internal/server'; import { random } from './module.svelte'; export default function Imports_in_modules($$payload) { - + const $$cleanup = $.setup($$payload); + + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/client/index.svelte.js index 332c909ebed9..4de9ce671592 100644 --- a/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/client/index.svelte.js @@ -5,6 +5,7 @@ var on_click = (_, count) => $.update(count); var root = $.template(`

`, 1); export default function Nullish_coallescence_omittance($$anchor) { + const $$cleanup = $.setup(); let name = 'world'; let count = $.state(0); var fragment = root(); @@ -29,6 +30,7 @@ export default function Nullish_coallescence_omittance($$anchor) { h1_1.textContent = `Hello, ${name ?? 'earth' ?? ''}`; $.template_effect(() => $.set_text(text, `Count is ${$.get(count) ?? ''}`)); $.append($$anchor, fragment); + $$cleanup(); } $.delegate(['click']); \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/server/index.svelte.js index 8181bfd98eeb..d19e86fd9a4e 100644 --- a/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/nullish-coallescence-omittance/_expected/server/index.svelte.js @@ -1,8 +1,10 @@ import * as $ from 'svelte/internal/server'; export default function Nullish_coallescence_omittance($$payload) { + const $$cleanup = $.setup($$payload); let name = 'world'; let count = 0; $$payload.out += `

Hello, ${$.escape(name)}!

${$.escape(1 ?? 'stuff')}${$.escape(2 ?? 'more stuff')}${$.escape(3 ?? 'even more stuff')}

Hello, ${$.escape(name ?? 'earth' ?? null)}

`; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/props-identifier/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/props-identifier/_expected/client/index.svelte.js index 5a46b9bbefe1..2cfffeaeebb3 100644 --- a/packages/svelte/tests/snapshot/samples/props-identifier/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/props-identifier/_expected/client/index.svelte.js @@ -2,6 +2,8 @@ import 'svelte/internal/disclose-version'; import * as $ from 'svelte/internal/client'; export default function Props_identifier($$anchor, $$props) { + const $$cleanup = $.setup(); + $.push($$props, true); let props = $.rest_props($$props, ['$$slots', '$$events', '$$legacy']); @@ -14,4 +16,5 @@ export default function Props_identifier($$anchor, $$props) { props[a] = true; props; $.pop(); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/props-identifier/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/props-identifier/_expected/server/index.svelte.js index 33a3633939d5..fcd4370c7c4e 100644 --- a/packages/svelte/tests/snapshot/samples/props-identifier/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/props-identifier/_expected/server/index.svelte.js @@ -1,6 +1,8 @@ import * as $ from 'svelte/internal/server'; export default function Props_identifier($$payload, $$props) { + const $$cleanup = $.setup($$payload); + $.push(); let { $$slots, $$events, ...props } = $$props; @@ -13,4 +15,5 @@ export default function Props_identifier($$payload, $$props) { props[a] = true; props; $.pop(); + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js index 940ed8f9e8fa..04002d6c6842 100644 --- a/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js @@ -5,6 +5,7 @@ import * as $ from 'svelte/internal/client'; var root = $.template(`

`, 1); export default function Purity($$anchor) { + const $$cleanup = $.setup(); var fragment = root(); var p = $.first_child(fragment); @@ -18,4 +19,5 @@ export default function Purity($$anchor) { Child(node, { prop: encodeURIComponent('hello') }); $.append($$anchor, fragment); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/purity/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/purity/_expected/server/index.svelte.js index 588332407a63..9ed8939bf777 100644 --- a/packages/svelte/tests/snapshot/samples/purity/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/purity/_expected/server/index.svelte.js @@ -1,7 +1,10 @@ import * as $ from 'svelte/internal/server'; export default function Purity($$payload) { + const $$cleanup = $.setup($$payload); + $$payload.out += `

${$.escape(Math.max(0, Math.min(0, 100)))}

${$.escape(location.href)}

`; Child($$payload, { prop: encodeURIComponent('hello') }); $$payload.out += ``; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/client/index.svelte.js index 46d376aca2f9..2543d55142a0 100644 --- a/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/client/index.svelte.js @@ -4,6 +4,7 @@ import * as $ from 'svelte/internal/client'; var root = $.template(`

we don't need to traverse these nodes

or

these

ones

these

trailing

nodes

can

be

completely

ignored

`, 3); export default function Skip_static_subtree($$anchor, $$props) { + const $$cleanup = $.setup(); var fragment = root(); var main = $.sibling($.first_child(fragment), 2); var h1 = $.child(main); @@ -46,4 +47,5 @@ export default function Skip_static_subtree($$anchor, $$props) { $.next(2); $.template_effect(() => $.set_text(text, $$props.title)); $.append($$anchor, fragment); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/server/index.svelte.js index e694c12647dc..2e7bbfabbf8e 100644 --- a/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/skip-static-subtree/_expected/server/index.svelte.js @@ -1,7 +1,9 @@ import * as $ from 'svelte/internal/server'; export default function Skip_static_subtree($$payload, $$props) { + const $$cleanup = $.setup($$payload); let { title, content } = $$props; $$payload.out += `

${$.escape(title)}

we don't need to traverse these nodes

or

these

ones

${$.html(content)}

these

trailing

nodes

can

be

completely

ignored

`; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/client/index.svelte.js index a67210e5418a..04d331e27d6d 100644 --- a/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/client/index.svelte.js @@ -11,6 +11,7 @@ function reset(_, str, tpl) { var root = $.template(` `, 1); export default function State_proxy_literal($$anchor) { + const $$cleanup = $.setup(); let str = $.state(''); let tpl = $.state(``); var fragment = root(); @@ -28,6 +29,7 @@ export default function State_proxy_literal($$anchor) { $.bind_value(input, () => $.get(str), ($$value) => $.set(str, $$value)); $.bind_value(input_1, () => $.get(tpl), ($$value) => $.set(tpl, $$value)); $.append($$anchor, fragment); + $$cleanup(); } $.delegate(['click']); \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/server/index.svelte.js index 7b2a884d7044..24dd87380402 100644 --- a/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/state-proxy-literal/_expected/server/index.svelte.js @@ -1,6 +1,7 @@ import * as $ from 'svelte/internal/server'; export default function State_proxy_literal($$payload) { + const $$cleanup = $.setup($$payload); let str = ''; let tpl = ``; @@ -12,4 +13,5 @@ export default function State_proxy_literal($$payload) { } $$payload.out += ` `; + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/svelte-element/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/svelte-element/_expected/client/index.svelte.js index 2270005ee0dd..d3b719b90254 100644 --- a/packages/svelte/tests/snapshot/samples/svelte-element/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/svelte-element/_expected/client/index.svelte.js @@ -2,10 +2,12 @@ import 'svelte/internal/disclose-version'; import * as $ from 'svelte/internal/client'; export default function Svelte_element($$anchor, $$props) { + const $$cleanup = $.setup(); let tag = $.prop($$props, 'tag', 3, 'hr'); var fragment = $.comment(); var node = $.first_child(fragment); $.element(node, tag, false); $.append($$anchor, fragment); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/svelte-element/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/svelte-element/_expected/server/index.svelte.js index 4426ad1164d3..cc9b526e7550 100644 --- a/packages/svelte/tests/snapshot/samples/svelte-element/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/svelte-element/_expected/server/index.svelte.js @@ -1,7 +1,9 @@ import * as $ from 'svelte/internal/server'; export default function Svelte_element($$payload, $$props) { + const $$cleanup = $.setup($$payload); let { tag = 'hr' } = $$props; $.element($$payload, tag); + $$cleanup($$payload); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/client/index.svelte.js index d520d1ef2488..f6fa3f41e198 100644 --- a/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/client/index.svelte.js @@ -4,6 +4,7 @@ import * as $ from 'svelte/internal/client'; var root = $.template(`

`); export default function Text_nodes_deriveds($$anchor) { + const $$cleanup = $.setup(); let count1 = 0; let count2 = 0; @@ -21,4 +22,5 @@ export default function Text_nodes_deriveds($$anchor) { $.reset(p); $.template_effect(($0, $1) => $.set_text(text, `${$0 ?? ''}${$1 ?? ''}`), [text1, text2]); $.append($$anchor, p); + $$cleanup(); } \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/server/index.svelte.js index 6f019647f58b..22b1937f6ff5 100644 --- a/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/text-nodes-deriveds/_expected/server/index.svelte.js @@ -1,6 +1,7 @@ import * as $ from 'svelte/internal/server'; export default function Text_nodes_deriveds($$payload) { + const $$cleanup = $.setup($$payload); let count1 = 0; let count2 = 0; @@ -13,4 +14,5 @@ export default function Text_nodes_deriveds($$payload) { } $$payload.out += `

${$.escape(text1())}${$.escape(text2())}

`; + $$cleanup($$payload); } \ No newline at end of file