UNPKG

@datorama/akita

Version:

A Reactive State Management Tailored-Made for JS Applications

43 lines 1.33 kB
import { isNil } from './isNil'; import { coerceArray } from './coerceArray'; // @internal export function entitiesToMap(state, options) { const map = {}; const { filterBy, limitTo } = options; const { ids, entities } = state; if (!filterBy && !limitTo) { return entities; } const hasLimit = isNil(limitTo) === false; if (filterBy && hasLimit) { let count = 0; for (let i = 0, length = ids.length; i < length; i++) { if (count === limitTo) break; const id = ids[i]; const entity = entities[id]; const allPass = coerceArray(filterBy).every(fn => fn(entity, i)); if (allPass) { map[id] = entity; count++; } } } else { const finalLength = Math.min(limitTo || ids.length, ids.length); for (let i = 0; i < finalLength; i++) { const id = ids[i]; const entity = entities[id]; if (!filterBy) { map[id] = entity; continue; } const allPass = coerceArray(filterBy).every(fn => fn(entity, i)); if (allPass) { map[id] = entity; } } } return map; } //# sourceMappingURL=entitiesToMap.js.map