Skip to content

ReactiveList

Defined in: state/reactive.ts:165

Ordered list of items with monotonically-assigned numeric ids. Insertion order is preserved across save/restore; ids are stable.

The keyed methods (ReactiveList.findId, ReactiveList.getByKey, ReactiveList.upsert) require a keyBy option on createList/s.list. They derive a domain key from each item (e.g. an itemId for an inventory) and maintain a key→id index for O(1) lookup. Calling them without keyBy throws.

A keyed list holds at most one item per derived key. add, update, and upsert throw if the operation would leave two live items sharing a key, so every key resolves to exactly one item.

T

readonly [STATE_KIND]: "list"

Defined in: state/reactive.ts:169

add(item): number

Defined in: state/reactive.ts:171

Insert and return the assigned id.

T

number


clear(): void

Defined in: state/reactive.ts:180

void


findId(key): number | undefined

Defined in: state/reactive.ts:185

Look up the id of the item whose keyBy key equals key, or undefined if no item carries that key. Requires the keyBy option.

ListKey

number | undefined


get(id): T | undefined

Defined in: state/reactive.ts:174

number

T | undefined


getByKey(key): T | undefined

Defined in: state/reactive.ts:190

Look up the item whose keyBy key equals key, or undefined if no item carries that key. Requires the keyBy option.

ListKey

T | undefined


hydrate(raw): void

Defined in: state/reactive.ts:25

ListEncoded

void

Serializable.hydrate


list(): T[]

Defined in: state/reactive.ts:178

Items in insertion order.

T[]


remove(id): boolean

Defined in: state/reactive.ts:173

Remove by id; returns true if the id was present.

number

boolean


reset(): void

Defined in: state/reactive.ts:30

void

Resettable.reset


serialize(): ListEncoded

Defined in: state/reactive.ts:24

ListEncoded

Serializable.serialize


size(): number

Defined in: state/reactive.ts:179

number


subscribe(listener): () => void

Defined in: state/reactive.ts:19

() => void

() => void

Reactive.subscribe


update(id, partial): boolean

Defined in: state/reactive.ts:176

Shallow-merge a partial update over an existing item; returns true on hit.

number

Partial<T>

boolean


upsert(key, item): number

Defined in: state/reactive.ts:197

Add-or-replace by key. If key already exists, replace that slot with item in place (a full replace, not a partial-field merge); otherwise insert item. Returns the affected id. Requires the keyBy option, and requires keyBy(item) === key — a mismatch throws.

ListKey

T

number