UNPKG

@data-client/normalizr

Version:

Normalizes and denormalizes JSON according to schema for Redux and Flux applications

23 lines 3.85 kB
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==