spacetimedb-client-typescript について
TypeScript と JavaScript で SpacetimeDB クライアントを実装するためのスキルです。生成バインディング、サブスクリプション、Reducer、React での利用方法を扱います。
主な機能
- 01TypeScript バインディング生成
- 02クエリビルダーとサブスクリプション
- 03Reducer の利用
- 04React Provider と Hooks
- 05SDK パッケージ移行の案内
活用シーン
- 01TypeScript または JavaScript クライアントの開発
- 02テーブルデータの購読とライフサイクル制御
- 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 に戻してください。
コメント
Markdown 対応