Skip to content

Documentation / @super-store/store / Store

Class: Store

Defined in: store.ts:31

A Store owns one Y.Doc and mints named-root StoreValues on it, so users compose a document from independently-defined sub-stores without ever importing yjs or hand-building a Y.Doc. Named roots are deterministic across peers (doc.getMap(name)), so concurrently-constructed roots merge instead of orphaning each other (unlike nested-Y.Map embedding). See DESIGN §2.

  • root(name, seed, opts) — define a slice where it belongs (settings-land constructs the settings root); the top level never sees its schema.
  • export() / load() — the rare whole-document read/write (save/restore).
  • encodeState / applyUpdate / onUpdate — the doc-level sync surface for @super-line/store-sync; one stream carries every root.
  • doc — escape hatch for attaching providers (y-indexeddb, y-websocket).

Constructors

Constructor

new Store(doc?): Store

Defined in: store.ts:36

Parameters

doc?

Doc

Returns

Store

Accessors

doc

Get Signature

get doc(): Doc

Defined in: store.ts:43

The backing document. Attach persistence/sync providers here if you need raw Yjs providers instead of the @super-line/store-sync surface.

Returns

Doc

Methods

applyUpdate()

applyUpdate(update): void

Defined in: store.ts:90

Merge a remote update. Tagged so onUpdate reports it as not-local.

Parameters

update

Uint8Array

Returns

void


dispose()

dispose(): void

Defined in: store.ts:106

Dispose every root and, if this Store created the doc, destroy it.

Returns

void


encodeState()

encodeState(): Uint8Array

Defined in: store.ts:85

Full doc state as one update, for catch-up or persistence.

Returns

Uint8Array


export()

export(): Record<string, unknown>

Defined in: store.ts:68

Gather every registered root into one plain-JSON object keyed by root name. The rare whole-document read (export/save).

Returns

Record<string, unknown>


load()

load(data): void

Defined in: store.ts:76

Route each top-level key to its registered root's set(). Whole-document restore (loadScene); unknown keys are ignored. One transaction → one update.

Parameters

data

Record<string, unknown>

Returns

void


onUpdate()

onUpdate(listener): () => void

Defined in: store.ts:97

Observe outgoing updates for the whole doc. meta.local is false only for updates injected via applyUpdate — so a sync layer pushes local updates and never echoes remote merges. Returns an unsubscribe.

Parameters

listener

(update, meta) => void

Returns

() => void


root()

root<T, M>(name, seed, options?): StoreValue<T, M>

Defined in: store.ts:50

Define (or return the existing handle for) a named root on this doc. Idempotent per name — calling twice returns the same handle, so the same concern can be set up from one place without double-binding.

Type Parameters

T

T

M

M extends StoreMode = "shallow"

Parameters

name

string

seed

T

options?

StoreRootOptions<T, M>

Returns

StoreValue<T, M>

Released under the MIT License.