Ключевые концепции
- Все обновления идут через внутреннюю Promise-очередь (строгий порядок).
setState заменяет весь корневой state.
mergeState делает поверхностный merge на уровне корня ({ ...prev, ...patch }).
- По умолчанию корневой объект состояния замораживается (
Object.freeze).
- Селекторы читают иммутабельный snapshot.
Поведение и edge cases
- Если updater вернул
void, обновление пропускается.
mergeState не делает deep merge вложенных объектов.
- DevTools автоматически включаются при
NODE_ENV !== "production" (если не переопределено).
- Во время time-travel состояние применяется «тихо» (без повторного логирования).
configureGlobalStore нужно вызывать на старте приложения.
Обзор архитектуры
flowchart TD
appCode[ApplicationCode] --> mainEntry[hummbitEntry]
appCode --> reactEntry[hummbitReactEntry]
mainEntry --> globalStore[defaultStoreSingleton]
mainEntry --> initFactory[initStoreFactory]
reactEntry --> globalReactSelector[globalUseSelector]
initFactory --> isolatedStore[isolatedStoreInstance]
globalStore --> updateQueue[serializedUpdateQueue]
isolatedStore --> updateQueue
updateQueue --> applyState[stateApplyReplaceMerge]
applyState --> listeners[listenerSet]
applyState --> devtoolsBridge[reduxDevtoolsAdapter]
applyState --> middlewareHooks[middlewarePipeline]