コンテンツにスキップ

@sh1n4ps/plasma-client

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

  • Client factorycreatePlasmaClient(options), PlasmaClient<S, M>, PlasmaClientOptions
  • エンジンcreateIdbEngine, IdbEngine, IdbEngineOptions
  • IVMclassifyIvm, IvmKind, IvmLiveQueryLike, RowChange, RowDelta, isIvmEligible
  • ファイルアップロードFileInput, ClientArg, PlasmaFileReadResult
  • WebSocket transportcreateWebSocketSubscription, WebSocketSubscriptionOptions
  • Error hookSyncClientError (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 配下にあります。