@data-client/normalizr
Version:
Normalizes and denormalizes JSON according to schema for Redux and Flux applications
23 lines • 3.85 kB
JavaScript
import WeakDependencyMap from './WeakDependencyMap.js';
export const getEntityCaches = entityCache => {
return (pk, schema) => {
var _ref;
const key = schema.key;
// collections should use the entities they collect over
// TODO: this should be based on a public interface
const entityInstance = (_ref = schema.cacheWith) != null ? _ref : schema;
if (!entityCache.has(key)) {
entityCache.set(key, new Map());
}
const entityCacheKey = entityCache.get(key);
if (!entityCacheKey.has(pk)) entityCacheKey.set(pk, new WeakMap());
const entityCachePk = entityCacheKey.get(pk);
let wem = entityCachePk.get(entityInstance);
if (!wem) {
wem = new WeakDependencyMap();
entityCachePk.set(entityInstance, wem);
}
return wem;
};
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXZWFrRGVwZW5kZW5jeU1hcCIsImdldEVudGl0eUNhY2hlcyIsImVudGl0eUNhY2hlIiwicGsiLCJzY2hlbWEiLCJfcmVmIiwia2V5IiwiZW50aXR5SW5zdGFuY2UiLCJjYWNoZVdpdGgiLCJoYXMiLCJzZXQiLCJNYXAiLCJlbnRpdHlDYWNoZUtleSIsImdldCIsIldlYWtNYXAiLCJlbnRpdHlDYWNoZVBrIiwid2VtIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lbW8vZW50aXRpZXNDYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlJbnRlcmZhY2UsIEVudGl0eVBhdGggfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHsgRW50aXR5Q2FjaGUgfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCBXZWFrRGVwZW5kZW5jeU1hcCBmcm9tICcuL1dlYWtEZXBlbmRlbmN5TWFwLmpzJztcblxuZXhwb3J0IHR5cGUgR2V0RW50aXR5Q2FjaGUgPSAoXG4gIHBrOiBzdHJpbmcsXG4gIHNjaGVtYTogRW50aXR5SW50ZXJmYWNlLFxuKSA9PiBXZWFrRGVwZW5kZW5jeU1hcDxFbnRpdHlQYXRoLCBvYmplY3QsIGFueT47XG5cbmV4cG9ydCBjb25zdCBnZXRFbnRpdHlDYWNoZXMgPSAoZW50aXR5Q2FjaGU6IEVudGl0eUNhY2hlKTogR2V0RW50aXR5Q2FjaGUgPT4ge1xuICByZXR1cm4gKHBrOiBzdHJpbmcsIHNjaGVtYTogRW50aXR5SW50ZXJmYWNlKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gc2NoZW1hLmtleTtcbiAgICAvLyBjb2xsZWN0aW9ucyBzaG91bGQgdXNlIHRoZSBlbnRpdGllcyB0aGV5IGNvbGxlY3Qgb3ZlclxuICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGJhc2VkIG9uIGEgcHVibGljIGludGVyZmFjZVxuICAgIGNvbnN0IGVudGl0eUluc3RhbmNlOiBFbnRpdHlJbnRlcmZhY2UgPSAoc2NoZW1hLmNhY2hlV2l0aCBhcyBhbnkpID8/IHNjaGVtYTtcblxuICAgIGlmICghZW50aXR5Q2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIGVudGl0eUNhY2hlLnNldChrZXksIG5ldyBNYXAoKSk7XG4gICAgfVxuICAgIGNvbnN0IGVudGl0eUNhY2hlS2V5ID0gZW50aXR5Q2FjaGUuZ2V0KGtleSkhO1xuXG4gICAgaWYgKCFlbnRpdHlDYWNoZUtleS5oYXMocGspKSBlbnRpdHlDYWNoZUtleS5zZXQocGssIG5ldyBXZWFrTWFwKCkpO1xuICAgIGNvbnN0IGVudGl0eUNhY2hlUGsgPSBlbnRpdHlDYWNoZUtleS5nZXQocGspITtcblxuICAgIGxldCB3ZW0gPSBlbnRpdHlDYWNoZVBrLmdldChlbnRpdHlJbnN0YW5jZSk7XG4gICAgaWYgKCF3ZW0pIHtcbiAgICAgIHdlbSA9IG5ldyBXZWFrRGVwZW5kZW5jeU1hcDxFbnRpdHlQYXRoLCBvYmplY3QsIGFueT4oKTtcbiAgICAgIGVudGl0eUNhY2hlUGsuc2V0KGVudGl0eUluc3RhbmNlLCB3ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiB3ZW07XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxpQkFBaUIsTUFBTSx3QkFBd0I7QUFPdEQsT0FBTyxNQUFNQyxlQUFlLEdBQUlDLFdBQXdCLElBQXFCO0VBQzNFLE9BQU8sQ0FBQ0MsRUFBVSxFQUFFQyxNQUF1QixLQUFLO0lBQUEsSUFBQUMsSUFBQTtJQUM5QyxNQUFNQyxHQUFHLEdBQUdGLE1BQU0sQ0FBQ0UsR0FBRztJQUN0QjtJQUNBO0lBQ0EsTUFBTUMsY0FBK0IsSUFBQUYsSUFBQSxHQUFJRCxNQUFNLENBQUNJLFNBQVMsWUFBQUgsSUFBQSxHQUFZRCxNQUFNO0lBRTNFLElBQUksQ0FBQ0YsV0FBVyxDQUFDTyxHQUFHLENBQUNILEdBQUcsQ0FBQyxFQUFFO01BQ3pCSixXQUFXLENBQUNRLEdBQUcsQ0FBQ0osR0FBRyxFQUFFLElBQUlLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakM7SUFDQSxNQUFNQyxjQUFjLEdBQUdWLFdBQVcsQ0FBQ1csR0FBRyxDQUFDUCxHQUFHLENBQUU7SUFFNUMsSUFBSSxDQUFDTSxjQUFjLENBQUNILEdBQUcsQ0FBQ04sRUFBRSxDQUFDLEVBQUVTLGNBQWMsQ0FBQ0YsR0FBRyxDQUFDUCxFQUFFLEVBQUUsSUFBSVcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRSxNQUFNQyxhQUFhLEdBQUdILGNBQWMsQ0FBQ0MsR0FBRyxDQUFDVixFQUFFLENBQUU7SUFFN0MsSUFBSWEsR0FBRyxHQUFHRCxhQUFhLENBQUNGLEdBQUcsQ0FBQ04sY0FBYyxDQUFDO0lBQzNDLElBQUksQ0FBQ1MsR0FBRyxFQUFFO01BQ1JBLEdBQUcsR0FBRyxJQUFJaEIsaUJBQWlCLENBQTBCLENBQUM7TUFDdERlLGFBQWEsQ0FBQ0wsR0FBRyxDQUFDSCxjQUFjLEVBQUVTLEdBQUcsQ0FBQztJQUN4QztJQUVBLE9BQU9BLEdBQUc7RUFDWixDQUFDO0FBQ0gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==