Rich Harris 2 days ago committed by GitHub
commit ed93f6ea81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -68,6 +68,10 @@ export class Boundary {
/** @type {Boundary | null} */
parent;
/**
* True if the boundary has a `pending` snippet, is not yet resolved, and either
* a) is mounting or b) is hydrating a server-rendered `pending` snippet
*/
is_pending = false;
/**

@ -0,0 +1,62 @@
import { tick } from 'svelte';
import { test } from '../../test';
export default test({
mode: ['hydrate'],
props: {
browser: true
},
server_props: {
browser: false
},
async test({ assert, target }) {
await tick();
assert.htmlEqual(
target.innerHTML,
`
<button>resolve a</button>
<button>resolve b</button>
<p>hello from server</p>
<p>hello from server</p>
<p>hello from server</p>
<p>hello from server</p>
`
);
const [button1, button2] = target.querySelectorAll('button');
button1.click();
await tick();
assert.htmlEqual(
target.innerHTML,
`
<button>resolve a</button>
<button>resolve b</button>
<p>hello from browser</p>
<p>hello from browser</p>
<p>hello from server</p>
<p>hello from server</p>
`
);
button2.click();
await tick();
assert.htmlEqual(
target.innerHTML,
`
<button>resolve a</button>
<button>resolve b</button>
<p>hello from browser</p>
<p>hello from browser</p>
<p>hello from browser</p>
<p>hello from browser</p>
`
);
}
});

@ -0,0 +1,39 @@
<script>
let { browser } = $props();
let a = Promise.withResolvers();
let b = Promise.withResolvers();
if (!browser) {
a.resolve(true);
b.resolve(true);
}
</script>
<button onclick={() => a.resolve(true)}>
resolve a
</button>
<button onclick={() => b.resolve(true)}>
resolve b
</button>
<svelte:boundary>
{#if true}
<p>hello from {browser ? 'browser' : 'server'}</p>
{/if}
{#if await a.promise}
<p>hello from {browser ? 'browser' : 'server'}</p>
{/if}
</svelte:boundary>
<svelte:boundary>
{#if true}
<p>hello from {browser ? 'browser' : 'server'}</p>
{/if}
{#if await b.promise}
<p>hello from {browser ? 'browser' : 'server'}</p>
{/if}
</svelte:boundary>
Loading…
Cancel
Save