Hummbitv1.x

Ключевые концепции

  • Все обновления идут через внутреннюю 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]
Автор: Alexey TolkachevLinkedIn