mirror of https://github.com/sveltejs/svelte
commit
216f258068
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
chore: drop dead code that make TSGO fail
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: don't (re)connect deriveds when read inside branch/root effects
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: skip unnecessary derived effect in earlier batch
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: avoid declaration tag warning in event handlers
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: abort deriveds own AbortSignal when it disconnects
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: ensure `$state.eager()` is correctly transormed for SSR output
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: correctly transform declaration tags during SSR
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: transform computed keys in keyed `{#each}` destructuring patterns
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: chain preprocessor sourcemaps with an empty `sources[0]` instead of dropping them
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"svelte": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: clear previous_task reference after abort in Tween to prevent memory leak on interrupted tweens
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'svelte': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
fix: don't treat declaration tags as parts inside each blocks
|
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
import { test } from '../../test';
|
||||||
|
import { tick } from 'svelte';
|
||||||
|
|
||||||
|
export default test({
|
||||||
|
async test({ assert, target }) {
|
||||||
|
const [increment, toggle, resolve] = target.querySelectorAll('button');
|
||||||
|
const [div] = target.querySelectorAll('div');
|
||||||
|
|
||||||
|
assert.htmlEqual(div.innerHTML, 'loading');
|
||||||
|
resolve.click();
|
||||||
|
await tick();
|
||||||
|
assert.htmlEqual(div.innerHTML, '0');
|
||||||
|
|
||||||
|
increment.click();
|
||||||
|
await tick();
|
||||||
|
assert.htmlEqual(div.innerHTML, 'loading');
|
||||||
|
|
||||||
|
toggle.click();
|
||||||
|
await tick();
|
||||||
|
assert.htmlEqual(div.innerHTML, '');
|
||||||
|
|
||||||
|
toggle.click();
|
||||||
|
await tick();
|
||||||
|
assert.htmlEqual(div.innerHTML, 'loading');
|
||||||
|
|
||||||
|
resolve.click(); // this one's for clearing the obsolete/aborted one from the queue
|
||||||
|
await tick();
|
||||||
|
resolve.click();
|
||||||
|
await tick();
|
||||||
|
assert.htmlEqual(div.innerHTML, '2');
|
||||||
|
}
|
||||||
|
});
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
<script>
|
||||||
|
import { getAbortSignal } from 'svelte'
|
||||||
|
|
||||||
|
let show = $state(true)
|
||||||
|
let count = $state(0);
|
||||||
|
let queued = [];
|
||||||
|
|
||||||
|
export function sleep(value, signal) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
signal.addEventListener('abort', reject, { once: true });
|
||||||
|
queued.push(() => resolve(value));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const double = $derived(sleep(count * 2, getAbortSignal()));
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<button onclick={() => count += 1}>clicks: {count}</button>
|
||||||
|
<button onclick={() => show = !show}>toggle</button>
|
||||||
|
<button onclick={() => queued.shift()?.()}>resolve</button>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{#if show}
|
||||||
|
{#await double}
|
||||||
|
loading
|
||||||
|
{:then value}
|
||||||
|
{value}
|
||||||
|
{:catch}
|
||||||
|
error
|
||||||
|
{/await}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
Loading…
Reference in new issue