From 26d6613bfc40ae9722f3e1f6863d34c5495976ab Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Tue, 9 Sep 2025 15:55:51 -0600 Subject: [PATCH] ALKASJDFALSKDFJ the test passes --- .../src/internal/client/dom/operations.js | 4 ++-- packages/svelte/src/internal/client/render.js | 11 +++++----- .../samples/async-hydrate/_config.js | 20 ------------------- .../samples/async-hydrate/main.svelte | 7 ------- .../samples/async-no-pending/_config.js | 15 ++++++++++++++ .../samples/async-no-pending/main.svelte | 1 + 6 files changed, 24 insertions(+), 34 deletions(-) delete mode 100644 packages/svelte/tests/runtime-runes/samples/async-hydrate/_config.js delete mode 100644 packages/svelte/tests/runtime-runes/samples/async-hydrate/main.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/async-no-pending/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/async-no-pending/main.svelte diff --git a/packages/svelte/src/internal/client/dom/operations.js b/packages/svelte/src/internal/client/dom/operations.js index abc29a7670..f79d2e66cd 100644 --- a/packages/svelte/src/internal/client/dom/operations.js +++ b/packages/svelte/src/internal/client/dom/operations.js @@ -131,10 +131,10 @@ export function child(node, is_text) { /** * Don't mark this as side-effect-free, hydration needs to walk all nodes * @param {DocumentFragment | TemplateNode[]} fragment - * @param {boolean} is_text + * @param {boolean} [is_text] * @returns {Node | null} */ -export function first_child(fragment, is_text) { +export function first_child(fragment, is_text = false) { if (!hydrating) { // when not hydrating, `fragment` is a `DocumentFragment` (the result of calling `open_frag`) var first = /** @type {DocumentFragment} */ (get_first_child(/** @type {Node} */ (fragment))); diff --git a/packages/svelte/src/internal/client/render.js b/packages/svelte/src/internal/client/render.js index 289f8001c9..b3593f9570 100644 --- a/packages/svelte/src/internal/client/render.js +++ b/packages/svelte/src/internal/client/render.js @@ -4,6 +4,7 @@ import { DEV } from 'esm-env'; import { clear_text_content, create_text, + first_child, get_first_child, get_next_sibling, init_operations @@ -28,7 +29,7 @@ import { import { reset_head_anchor } from './dom/blocks/svelte-head.js'; import * as w from './warnings.js'; import * as e from './errors.js'; -import { assign_nodes } from './dom/template.js'; +import { append, assign_nodes, comment } from './dom/template.js'; import { is_passive_event } from '../../utils.js'; import { COMMENT_NODE } from './constants.js'; import { boundary } from './dom/blocks/boundary.js'; @@ -219,8 +220,8 @@ function _mount(Component, { target, anchor, props = {}, events, context, intro var unmount = component_root(() => { var anchor_node = anchor ?? target.appendChild(create_text()); - boundary(anchor_node, {}, (anchor_node) => - branch(() => { + branch(() => { + boundary(/** @type {TemplateNode} */ (anchor_node), { pending: () => {} }, (anchor_node) => { if (context) { push({}); var ctx = /** @type {ComponentContext} */ (component_context); @@ -248,8 +249,8 @@ function _mount(Component, { target, anchor, props = {}, events, context, intro if (context) { pop(); } - }) - ); + }); + }); return () => { for (var event_name of registered_events) { diff --git a/packages/svelte/tests/runtime-runes/samples/async-hydrate/_config.js b/packages/svelte/tests/runtime-runes/samples/async-hydrate/_config.js deleted file mode 100644 index e1f84bab40..0000000000 --- a/packages/svelte/tests/runtime-runes/samples/async-hydrate/_config.js +++ /dev/null @@ -1,20 +0,0 @@ -import { settled } from 'svelte'; -import { ok, test } from '../../test'; - -export default test({ - skip_mode: ['hydrate', 'server'], - - html: ` -

hello

- `, - - async test({ assert, target }) { - const p = target.querySelector('p'); - ok(p); - assert.htmlEqual(p.outerHTML, '

Loading...

'); - - const p2 = target.querySelector('p'); - ok(p2); - assert.htmlEqual(p2.outerHTML, '

hello

'); - } -}); diff --git a/packages/svelte/tests/runtime-runes/samples/async-hydrate/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-hydrate/main.svelte deleted file mode 100644 index e86cdf8e8c..0000000000 --- a/packages/svelte/tests/runtime-runes/samples/async-hydrate/main.svelte +++ /dev/null @@ -1,7 +0,0 @@ - -

{await Promise.resolve('hello')}

- - {#snippet pending()} -

Loading...

- {/snippet} -
diff --git a/packages/svelte/tests/runtime-runes/samples/async-no-pending/_config.js b/packages/svelte/tests/runtime-runes/samples/async-no-pending/_config.js new file mode 100644 index 0000000000..98ab1b9772 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-no-pending/_config.js @@ -0,0 +1,15 @@ +import { tick } from 'svelte'; +import { ok, test } from '../../test'; + +export default test({ + ssrHtml: '

hello

', + + html: '', + + async test({ assert, target }) { + await tick(); + const p = target.querySelector('p'); + ok(p); + assert.htmlEqual(p.outerHTML, '

hello

'); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/async-no-pending/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-no-pending/main.svelte new file mode 100644 index 0000000000..4b8cd7203b --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-no-pending/main.svelte @@ -0,0 +1 @@ +

{await Promise.resolve('hello')}

\ No newline at end of file