コンテンツにスキップ

@sh1n4ps/plasma-client

@sh1n4ps/plasma-client はブラウザ側のランタイムです。ストレージレイヤーとして IndexedDB を利用し、クエリには @sh1n4ps/plasma-core と同じ DSL を使い、 独自の outbox + sync loop を保持します。

  • Client factory — createPlasmaClient(options), PlasmaClient<S, M>, PlasmaClientOptions
  • エンジン — createIdbEngine, IdbEngine, IdbEngineOptions
  • IVM — classifyIvm, IvmKind, IvmLiveQueryLike, RowChange, RowDelta, isIvmEligible
  • ファイルアップロード — FileInput, ClientArg, PlasmaFileReadResult
  • WebSocket transport — createWebSocketSubscription, WebSocketSubscriptionOptions
  • Error hook — SyncClientError (options.onError に渡される union 型)

plasma アプリで最も重要な呼び出しはここにあります:

  • createPlasmaClient({ schema, mutators, endpoint, ... }) — client を構築し、IDB ハンドルを開き、sync loop を準備します。 .start() を呼ぶまでポーリングは開始しません。
  • client.start() / client.stop() — ポーリングタイマー、 WebSocket 購読、blob アップロード worker を制御します。
  • client.mutate(name, args) — ローカルエンジンに対して optimistic に mutator を実行し、outbox エントリをキューに積んで返します。
  • client.db.select().from(...).live().subscribe(cb) — リアクティブな読み取りパスです。
  • client.readFile(ref) — FileRef をバイト列に解決します (ローカルキャッシュまたは /sync/blob/* から)。

reference/generated/plasma-client/src 配下にあります。