# spacetimedbex v0.1.2 - Table of Contents

SpacetimeDB client library for Elixir

## Pages

- [Spacetimedbex](readme.md)
- [LICENSE](license.md)

## Modules

- [Spacetimedbex](Spacetimedbex.md): SpacetimeDB client library for Elixir.

- High-Level API
  - [Spacetimedbex.Client](Spacetimedbex.Client.md): High-level SpacetimeDB client that ties Connection, ClientCache, and Schema together.
  - [Spacetimedbex.Http](Spacetimedbex.Http.md): HTTP client for the SpacetimeDB REST API (v1).
  - [Spacetimedbex.Phoenix](Spacetimedbex.Phoenix.md): Phoenix PubSub adapter for SpacetimeDB.

- Cache &amp; Schema
  - [Spacetimedbex.ClientCache](Spacetimedbex.ClientCache.md): ETS-backed local cache of subscribed SpacetimeDB tables.
  - [Spacetimedbex.ClientCache.RowDecoder](Spacetimedbex.ClientCache.RowDecoder.md): Decodes BSATN row data into Elixir maps using table schema.
  - [Spacetimedbex.Schema](Spacetimedbex.Schema.md): Fetches and parses SpacetimeDB module schema.

- WebSocket Protocol
  - [Spacetimedbex.Connection](Spacetimedbex.Connection.md): WebSocket connection to a SpacetimeDB database.
  - [Spacetimedbex.Protocol](Spacetimedbex.Protocol.md): SpacetimeDB v2 WebSocket protocol message types and encoding/decoding.
  - [Spacetimedbex.Protocol.ClientMessage](Spacetimedbex.Protocol.ClientMessage.md): V2 client-to-server messages. Encoded as raw BSATN (no compression envelope).
  - [Spacetimedbex.Protocol.ServerMessage](Spacetimedbex.Protocol.ServerMessage.md): V2 server-to-client messages. Received with a 1-byte compression envelope.

- BSATN Codec
  - [Spacetimedbex.BSATN](Spacetimedbex.BSATN.md): BSATN (Binary SpacetimeDB Algebraic Type Notation) codec.
  - [Spacetimedbex.BSATN.Decoder](Spacetimedbex.BSATN.Decoder.md): Decodes BSATN binary data into Elixir values.
  - [Spacetimedbex.BSATN.Encoder](Spacetimedbex.BSATN.Encoder.md): Encodes Elixir values into BSATN (Binary SpacetimeDB Algebraic Type Notation).
  - [Spacetimedbex.BSATN.ValueEncoder](Spacetimedbex.BSATN.ValueEncoder.md): Schema-driven BSATN encoding. Inverse of `RowDecoder.decode_value/2`.

- Tooling
  - [Spacetimedbex.Codegen](Spacetimedbex.Codegen.md): Generates Elixir source code from a SpacetimeDB schema.

## Mix Tasks

- [mix spacetimedb.gen](Mix.Tasks.Spacetimedb.Gen.md): Generates Elixir modules from a SpacetimeDB schema.

