mcpField
S
spacetimedb-client-typescript

spacetimedb-client-typescript

github.com/danmossa開発2164 回インストール19 週間前に更新
リポジトリ

spacetimedb-client-typescript について

TypeScript と JavaScript で SpacetimeDB クライアントを実装するためのスキルです。生成バインディング、サブスクリプション、Reducer、React での利用方法を扱います。

主な機能

  1. 01TypeScript バインディング生成
  2. 02クエリビルダーとサブスクリプション
  3. 03Reducer の利用
  4. 04React Provider と Hooks
  5. 05SDK パッケージ移行の案内

活用シーン

  1. 01TypeScript または JavaScript クライアントの開発
  2. 02テーブルデータの購読とライフサイクル制御
  3. 03React での SpacetimeDB データと Reducer の利用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/danmossa/spacetimedb-skills --skill spacetimedb-client-typescript

インストール後、Claude Code で/spacetimedb-client-typescriptを入力して読み込まれたか確認します。

同梱ファイルreferences/clients-typescript.md

詳細

TypeScript および JavaScript クライアントの実装には、このスキルを使用します。

TypeScript の基本パターン

バインディングをクライアントのソースツリーに生成し、そのパスから生成された名前をインポートします。

spacetime generate --lang typescript --out-dir client/src/module_bindings --module-path spacetimedb
import { DbConnection, tables } from "./module_bindings";

const conn = DbConnection.builder()
  .withUri("ws://localhost:3000")
  .withDatabaseName("my-database")
  .onConnect((ctx, identity, token) => {
    console.log("Connected", identity.toHexString());
    ctx.subscriptionBuilder().subscribe(tables.user);
  })
  .onConnectError((_ctx, err) => console.error(err))
  .onDisconnect(() => console.log("Disconnected"))
  .build();

クエリとキャッシュのルール

  • 生成されたクエリビルダーを優先します:tables.user、tables.user.where((u) => u.online.eq(true))、およびテーブル参照の配列。
  • クエリビルダーで表現できない高度なケースに限り、生 SQL のサブスクリプションを使用します。
  • subscribeToAllTables() は開始後にキャンセルできません。ライフサイクルを制御するには、個別のサブスクリプションを使用してください。
  • 行コールバック(onInsert、onDelete、onUpdate)は、サブスクリプションの適用や解除を含め、ローカルキャッシュに追加、削除、または更新される行に対して実行されます。
  • バインディングから生成されたリデューサーを使用します。メソッド名と引数の形式は生成されたコードで決まります。
  • React では、.build() を呼び出さずに DbConnection.builder() を SpacetimeDBProvider に渡します。リアクティブなデータと呼び出しには useTable(tables.foo) と useReducer(reducers.foo) を使用します。
  • @clockworklabs/spacetimedb-sdk は非推奨です。CLI 1.4.0 以降では spacetimedb パッケージを使用してください。

リファレンスマップ

必要な情報開く先
TypeScript SDK API とフレームワークの統合references/clients-typescript.md

ガイダンス

  • 実際のプロジェクトで利用できる場合は、生成されたバインディング名を使用してください。リファレンスの例はパターンであり、ローカルの識別子と一致するとは限りません。
  • SDK リファレンスに示されている順序で、サブスクリプションの設定、キャッシュの読み取り、リデューサーの監視、リデューサーの呼び出しを行ってください。
  • プロジェクトのセットアップが主な作業である場合は、フレームワークの初期設定を spacetimedb-quickstarts に戻してください。

コメント