import type { EntityId, EntityState, EntityStateAdapter, EntityStateFactory, } from './models' export function getInitialEntityState(): EntityState< T, Id > { return { ids: [], entities: {} as Record, } } export function createInitialStateFactory( stateAdapter: EntityStateAdapter, ): EntityStateFactory { function getInitialState( state?: undefined, entities?: readonly T[] | Record, ): EntityState function getInitialState( additionalState: S, entities?: readonly T[] | Record, ): EntityState & S function getInitialState( additionalState: any = {}, entities?: readonly T[] | Record, ): any { const state = Object.assign(getInitialEntityState(), additionalState) return entities ? stateAdapter.setAll(state, entities) : state } return { getInitialState } }