UNPKG

@data-client/normalizr

Version:

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

22 lines 2.95 kB
export function getCheckLoop() { const visitedEntities = new Map(); /* Returns true if a circular reference is found */ return function checkLoop(entityKey, pk, input) { let entitiesOneType = visitedEntities.get(entityKey); if (!entitiesOneType) { entitiesOneType = new Map(); visitedEntities.set(entityKey, entitiesOneType); } let visitedEntitySet = entitiesOneType.get(pk); if (!visitedEntitySet) { visitedEntitySet = new Set(); entitiesOneType.set(pk, visitedEntitySet); } if (visitedEntitySet.has(input)) { return true; } visitedEntitySet.add(input); return false; }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGVja0xvb3AiLCJ2aXNpdGVkRW50aXRpZXMiLCJNYXAiLCJjaGVja0xvb3AiLCJlbnRpdHlLZXkiLCJwayIsImlucHV0IiwiZW50aXRpZXNPbmVUeXBlIiwiZ2V0Iiwic2V0IiwidmlzaXRlZEVudGl0eVNldCIsIlNldCIsImhhcyIsImFkZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3JtYWxpemUvZ2V0Q2hlY2tMb29wLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRDaGVja0xvb3AoKSB7XG4gIGNvbnN0IHZpc2l0ZWRFbnRpdGllcyA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBTZXQ8b2JqZWN0Pj4+KCk7XG4gIC8qIFJldHVybnMgdHJ1ZSBpZiBhIGNpcmN1bGFyIHJlZmVyZW5jZSBpcyBmb3VuZCAqL1xuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tMb29wKGVudGl0eUtleTogc3RyaW5nLCBwazogc3RyaW5nLCBpbnB1dDogb2JqZWN0KSB7XG4gICAgbGV0IGVudGl0aWVzT25lVHlwZSA9IHZpc2l0ZWRFbnRpdGllcy5nZXQoZW50aXR5S2V5KTtcbiAgICBpZiAoIWVudGl0aWVzT25lVHlwZSkge1xuICAgICAgZW50aXRpZXNPbmVUeXBlID0gbmV3IE1hcDxzdHJpbmcsIFNldDxvYmplY3Q+PigpO1xuICAgICAgdmlzaXRlZEVudGl0aWVzLnNldChlbnRpdHlLZXksIGVudGl0aWVzT25lVHlwZSk7XG4gICAgfVxuXG4gICAgbGV0IHZpc2l0ZWRFbnRpdHlTZXQgPSBlbnRpdGllc09uZVR5cGUuZ2V0KHBrKTtcbiAgICBpZiAoIXZpc2l0ZWRFbnRpdHlTZXQpIHtcbiAgICAgIHZpc2l0ZWRFbnRpdHlTZXQgPSBuZXcgU2V0PG9iamVjdD4oKTtcbiAgICAgIGVudGl0aWVzT25lVHlwZS5zZXQocGssIHZpc2l0ZWRFbnRpdHlTZXQpO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkRW50aXR5U2V0LmhhcyhpbnB1dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2aXNpdGVkRW50aXR5U2V0LmFkZChpbnB1dCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVNBLFlBQVlBLENBQUEsRUFBRztFQUM3QixNQUFNQyxlQUFlLEdBQUcsSUFBSUMsR0FBRyxDQUFtQyxDQUFDO0VBQ25FO0VBQ0EsT0FBTyxTQUFTQyxTQUFTQSxDQUFDQyxTQUFpQixFQUFFQyxFQUFVLEVBQUVDLEtBQWEsRUFBRTtJQUN0RSxJQUFJQyxlQUFlLEdBQUdOLGVBQWUsQ0FBQ08sR0FBRyxDQUFDSixTQUFTLENBQUM7SUFDcEQsSUFBSSxDQUFDRyxlQUFlLEVBQUU7TUFDcEJBLGVBQWUsR0FBRyxJQUFJTCxHQUFHLENBQXNCLENBQUM7TUFDaERELGVBQWUsQ0FBQ1EsR0FBRyxDQUFDTCxTQUFTLEVBQUVHLGVBQWUsQ0FBQztJQUNqRDtJQUVBLElBQUlHLGdCQUFnQixHQUFHSCxlQUFlLENBQUNDLEdBQUcsQ0FBQ0gsRUFBRSxDQUFDO0lBQzlDLElBQUksQ0FBQ0ssZ0JBQWdCLEVBQUU7TUFDckJBLGdCQUFnQixHQUFHLElBQUlDLEdBQUcsQ0FBUyxDQUFDO01BQ3BDSixlQUFlLENBQUNFLEdBQUcsQ0FBQ0osRUFBRSxFQUFFSyxnQkFBZ0IsQ0FBQztJQUMzQztJQUVBLElBQUlBLGdCQUFnQixDQUFDRSxHQUFHLENBQUNOLEtBQUssQ0FBQyxFQUFFO01BQy9CLE9BQU8sSUFBSTtJQUNiO0lBQ0FJLGdCQUFnQixDQUFDRyxHQUFHLENBQUNQLEtBQUssQ0FBQztJQUMzQixPQUFPLEtBQUs7RUFDZCxDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=