@datorama/akita
Version:
State Management Tailored-Made for JS Applications
79 lines • 6.06 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { isNil } from './isNil';
import { coerceArray } from './coerceArray';
// @internal
/**
* @template S, E
* @param {?} state
* @param {?} options
* @return {?}
*/
export function entitiesToMap(state, options) {
/** @type {?} */
var map = {};
var filterBy = options.filterBy, limitTo = options.limitTo;
var ids = state.ids, entities = state.entities;
if (!filterBy && !limitTo) {
return entities;
}
/** @type {?} */
var hasLimit = isNil(limitTo) === false;
if (filterBy && hasLimit) {
/** @type {?} */
var count = 0;
var _loop_1 = function (i, length_1) {
if (count === limitTo)
return "break";
/** @type {?} */
var id = ids[i];
/** @type {?} */
var entity = entities[id];
/** @type {?} */
var allPass = coerceArray(filterBy).every((/**
* @param {?} fn
* @return {?}
*/
function (fn) { return fn(entity, i); }));
if (allPass) {
map[id] = entity;
count++;
}
};
for (var i = 0, length_1 = ids.length; i < length_1; i++) {
var state_1 = _loop_1(i, length_1);
if (state_1 === "break")
break;
}
}
else {
/** @type {?} */
var finalLength = Math.min(limitTo || ids.length, ids.length);
var _loop_2 = function (i) {
/** @type {?} */
var id = ids[i];
/** @type {?} */
var entity = entities[id];
if (!filterBy) {
map[id] = entity;
return "continue";
}
/** @type {?} */
var allPass = coerceArray(filterBy).every((/**
* @param {?} fn
* @return {?}
*/
function (fn) { return fn(entity, i); }));
if (allPass) {
map[id] = entity;
}
};
for (var i = 0; i < finalLength; i++) {
_loop_2(i);
}
}
return map;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXNUb01hcC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9ha2l0YS8iLCJzb3VyY2VzIjpbInNyYy9lbnRpdGllc1RvTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBRzVDLE1BQU0sVUFBVSxhQUFhLENBQThCLEtBQVEsRUFBRSxPQUFPOztRQUNwRSxHQUFHLEdBQUcsRUFBRTtJQUNOLElBQUEsMkJBQVEsRUFBRSx5QkFBTztJQUNqQixJQUFBLGVBQUcsRUFBRSx5QkFBUTtJQUVyQixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sUUFBUSxDQUFDO0tBQ2pCOztRQUNLLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSztJQUV6QyxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUU7O1lBQ3BCLEtBQUssR0FBRyxDQUFDO2dDQUNKLENBQUMsRUFBTSxRQUFNO1lBQ3BCLElBQUksS0FBSyxLQUFLLE9BQU87K0JBQVE7O2dCQUN2QixFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQzs7Z0JBQ1gsTUFBTSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7O2dCQUNyQixPQUFPLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUs7Ozs7WUFBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQWIsQ0FBYSxFQUFDO1lBQ2hFLElBQUksT0FBTyxFQUFFO2dCQUNYLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxDQUFDO2FBQ1Q7O1FBUkgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLFFBQU0sRUFBRSxDQUFDLEVBQUU7a0NBQTNDLENBQUMsRUFBTSxRQUFNOzs7U0FTckI7S0FDRjtTQUFNOztZQUNDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUM7Z0NBRXRELENBQUM7O2dCQUNGLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDOztnQkFDWCxNQUFNLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUUzQixJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7O2FBRWxCOztnQkFFSyxPQUFPLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUs7Ozs7WUFBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQWIsQ0FBYSxFQUFDO1lBQ2hFLElBQUksT0FBTyxFQUFFO2dCQUNYLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDbEI7O1FBWkgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUU7b0JBQTNCLENBQUM7U0FhVDtLQUNGO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi9pc05pbCc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJy4vY29lcmNlQXJyYXknO1xuXG4vLyBAaW50ZXJuYWxcbmV4cG9ydCBmdW5jdGlvbiBlbnRpdGllc1RvTWFwPFMgZXh0ZW5kcyBFbnRpdHlTdGF0ZTxFPiwgRT4oc3RhdGU6IFMsIG9wdGlvbnMpIHtcbiAgY29uc3QgbWFwID0ge307XG4gIGNvbnN0IHsgZmlsdGVyQnksIGxpbWl0VG8gfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgaWRzLCBlbnRpdGllcyB9ID0gc3RhdGU7XG5cbiAgaWYgKCFmaWx0ZXJCeSAmJiAhbGltaXRUbykge1xuICAgIHJldHVybiBlbnRpdGllcztcbiAgfVxuICBjb25zdCBoYXNMaW1pdCA9IGlzTmlsKGxpbWl0VG8pID09PSBmYWxzZTtcblxuICBpZiAoZmlsdGVyQnkgJiYgaGFzTGltaXQpIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBpZHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjb3VudCA9PT0gbGltaXRUbykgYnJlYWs7XG4gICAgICBjb25zdCBpZCA9IGlkc1tpXTtcbiAgICAgIGNvbnN0IGVudGl0eSA9IGVudGl0aWVzW2lkXTtcbiAgICAgIGNvbnN0IGFsbFBhc3MgPSBjb2VyY2VBcnJheShmaWx0ZXJCeSkuZXZlcnkoZm4gPT4gZm4oZW50aXR5LCBpKSk7XG4gICAgICBpZiAoYWxsUGFzcykge1xuICAgICAgICBtYXBbaWRdID0gZW50aXR5O1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmaW5hbExlbmd0aCA9IE1hdGgubWluKGxpbWl0VG8gfHwgaWRzLmxlbmd0aCwgaWRzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbmFsTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGlkID0gaWRzW2ldO1xuICAgICAgY29uc3QgZW50aXR5ID0gZW50aXRpZXNbaWRdO1xuXG4gICAgICBpZiAoIWZpbHRlckJ5KSB7XG4gICAgICAgIG1hcFtpZF0gPSBlbnRpdHk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhbGxQYXNzID0gY29lcmNlQXJyYXkoZmlsdGVyQnkpLmV2ZXJ5KGZuID0+IGZuKGVudGl0eSwgaSkpO1xuICAgICAgaWYgKGFsbFBhc3MpIHtcbiAgICAgICAgbWFwW2lkXSA9IGVudGl0eTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFwO1xufVxuIl19