Skip to content

Svelte 連携

auftakt は Svelte の readable ストアアダプターを提供しています。

インポート

typescript
import { createSvelteQuery, toReadable } from '@ikuradon/auftakt/adapters/svelte';

createSvelteQuery

createSyncedQuery + Svelte readable を一体化したヘルパー:

typescript
const { events, status, emit, dispose } = createSvelteQuery(rxNostr, store, {
  filter: { kinds: [1], authors: followList },
  strategy: 'dual',
});
戻り値説明
eventsReadable<CachedEvent[]>リアクティブなイベントリスト
statusReadable<SyncStatus>同期ステータス
emit(filter) => voidフィルタ変更
dispose() => voidクリーンアップ

Svelte コンポーネントでの使用

svelte
<script>
  import { createSvelteQuery } from '@ikuradon/auftakt/adapters/svelte';
  import { onDestroy } from 'svelte';

  const { events, status, dispose } = createSvelteQuery(rxNostr, store, {
    filter: { kinds: [1], limit: 50 },
    strategy: 'dual',
  });

  onDestroy(dispose);
</script>

{#if $status === 'fetching'}
  <p>読み込み中...</p>
{/if}

{#each $events as cached}
  <p>{cached.event.content}</p>
{/each}

toReadable

既存の Observable を Svelte readable に変換するユーティリティ:

typescript
import { toReadable } from '@ikuradon/auftakt/adapters/svelte';

const events$ = store.query({ kinds: [0], authors: [pubkey] });
const events = toReadable(events$, []);

toReadable(observable, initialValue)Readable<T> を返します。

MIT License