Version 1.3.0
What's Changed
Added
SlotDescriptorsupport for bi-directional derivations:createSlot()andSlot#replace()now accept a duck-typedSlotDescriptor<T>object ({ get(): T, set?(next: T): void }) in addition to aSignal<T>. This allows establishing stable, native reactive edges for derived{ get, set }pairs without the need for an intermediaryComputedsignal, which prevents edge corruption during cascading graph updates. If a descriptor omits thesetfunction, the slot safely behaves as read-only.- Configurable
itemEqualsforListandCollection: Added anitemEqualsoption to bothListOptionsandCollectionOptions. It defaults toDEEP_EQUALITY. This prevents spurious reactive propagation when spread-based updates (list.replace(key, { ...item.get(), field: newValue })) produce structurally identical items. - Configurable
createItemfactory forList: Added acreateItem?: (value: T) => MutableSignal<T>option toListOptions, bringing it to parity withCollectionOptions. This allows backing list items with custom mutable signals, such ascreateStorefor granular, per-property reactivity within a list.Listmethods likeat(),byKey(), and its iterator now correctly returnMutableSignal<T>instead of strictlyState<T>.
Full Changelog: v1.2.1...v1.3.0