@clockworklabs/spacetimedb-sdk v0.12.1
SpacetimeDB SDK
Overview
This repository contains the TypeScript SDK for SpacetimeDB. The SDK allows to interact with the database server and is prepared to work with code generated from a SpacetimeDB backend code.
Installation
The SDK is an NPM package, thus you can use your package manager of choice like NPM or Yarn, for example:
npm install --save @clockworklabs/spacetimedb-sdk
You can use the package in the browser, using a bundler like vite/parcel/rsbuild, in server-side applications like NodeJS, Deno, Bun and in Cloudflare Workers.
NOTE: For usage in NodeJS 18-21, you need to install the
undici
package as a peer dependency:npm install @clockworklabs/spacetimedb-sdk undici
. Node 22 and later are supported out of the box.
Usage
In order to connect to a database you have to generate module bindings for your database.
import { DBConnection } from './module_bindings';
const connection = DBConnection.builder()
.withUri('ws://localhost:3000')
.withModuleName('MODULE_NAME')
.onDisconnect(() => {
console.log('disconnected');
})
.onConnectError(() => {
console.log('client_error');
})
.onConnect((connection, identity, _token) => {
console.log(
'Connected to SpacetimeDB with identity:',
identity.toHexString()
);
connection.subscriptionBuilder().subscribe(['SELECT * FROM player']);
})
.withCredentials([Identity.fromString('IDENTITY'), 'TOKEN'])
.build();
If for some reason you need to disconnect the client:
connection.disconnect();
Typically, you will use the SDK with types generated from a backend DB service. For example, given a table named Player
you can subscribe to player updates like this:
connection.db.player.onInsert((ctx, player) => {
console.log(player);
});
Given a reducer called CreatePlayer
you can call it using a call method:
connection.reducers.createPlayer();
9 months ago
9 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago