@wentools/simmer-svelte
v0.1.3
Published
Svelte 5 adapters for [@wentools/simmer](https://jsr.io/@wentools/simmer).
Readme
@wentools/simmer-svelte
Svelte 5 adapters for @wentools/simmer.
Install
# JSR
deno add jsr:@wentools/simmer-svelte
# npm
npx jsr add @wentools/simmer-svelteUsage
createEventualState
Bridges simmer's EventualResult to Svelte 5 reactive state. Returns the
current (cached) value immediately, then automatically updates when fresh data
arrives.
<script lang="ts">
import { createEventualState } from '@wentools/simmer-svelte'
let { data } = $props()
// data.patronShowcase is EventualResult<ShowcaseData>
const showcase = createEventualState(() => data.patronShowcase)
</script>
<!-- Renders immediately with cached data -->
<PatronShowcase data={showcase.value} />
{#if showcase.isRefreshing}
<LoadingSpinner />
{/if}
{#if showcase.error}
<p>Failed to refresh: {showcase.error.message}</p>
{/if}How it works
EventualResult<T> contains { current: T, fresh: Promise<T> | null }.
currentis served immediately (from cache or SSR)freshresolves when updated data arrives from the API
createEventualState wraps this in a reactive rune that:
- Returns
currentasvalueimmediately - Sets
isRefreshing: truewhilefreshis pending - Swaps
valueto the resolved fresh data automatically - Handles race conditions when navigation triggers new requests
License
MIT
