{"version":3,"names":["shallowEqualsArray","arr1","arr2","length","index","shallowEqualsSet","set1","set2","size","val","has","shallowEqualsMap","map1","map2","key","value","entries","get","shallowEquals","obj1","obj2","keys1","Object","keys","keys2","hasOwnProperty2","prototype","hasOwnProperty","bind","valueA","valueB","deepEquals","objA","objB","comparedObjects","Map","ensureComparedObjectsFor","obj","set","Set","comparedObjectsHAS","comparedObjectsADD","add","isAlreadyCompared","markAsAlreadyCompared","objectsStillToCompare","currentPair","pop","push","_export","setters","execute","__SystemJSRewritingHack","_recorder_","_src_client_reactive_utils_equality_js","defineProperty","thisIsVererySecretVariableName","enumerable","configurable"],"sources":["equality.js"],"sourcesContent":["// checks elements of arrays pairwise for identity equality\nexport function shallowEqualsArray(arr1, arr2) {\n  if (arr1 === arr2) { return true; }\n  if (arr1.length !== arr2.length) { return false; }\n\n  for (let index = 0; index < arr1.length; index++) {\n    if (arr1[index] !== arr2[index]) { return false; }\n  }\n\n  return true;\n}\n\n// checks elements for identity equality\nexport function shallowEqualsSet(set1, set2) {\n  if (set1 === set2) { return true; }\n  if (set1.size !== set2.size) return false;\n  \n  for (let val of set1) {\n    if (!set2.has(val)) { return false; }\n  }\n  \n  return true;\n}\n\n// checks keys and values for identity equality\nexport function shallowEqualsMap(map1, map2) {\n  if (map1 === map2) { return true; }\n  if (map1.size !== map2.size) return false;\n  \n  for (let [key, value] of map1.entries()) {\n    if (value !== map2.get(key)) { return false; }\n  }\n  \n  return true;\n}\n\n\n// checks all properties for identity equality\nexport function shallowEquals(obj1, obj2) {\n  // strict equality\n  if (obj1 === obj2) { return true; }\n  \n  // only for object-like values\n  if (typeof obj1 !== \"object\" || !obj1 || typeof obj2 !== \"object\" || !obj2) {\n    return false;\n  }\n\n  const keys1 = Object.keys(obj1);\n  const keys2 = Object.keys(obj2);\n\n  // same number of keys\n  if (keys1.length !== keys2.length) {\n    return false;\n  }\n\n  const hasOwnProperty2 = Object.prototype.hasOwnProperty.bind(obj2);\n\n  // Test for A's keys different from B.\n  for (let index = 0; index < keys1.length; index++) {\n    const key = keys1[index];\n\n    if (!hasOwnProperty2(key)) {\n      return false;\n    }\n\n    const valueA = obj1[key];\n    const valueB = obj2[key];\n\n    if(valueA !== valueB) { return false; }\n  }\n\n  return true;\n}\n\n\n// deeply checks all properties for equality\nexport function deepEquals(objA, objB) {\n  \n  // objects that are already marked as compared\n  const comparedObjects = new Map(); // Map<Object, Set<Object>>\n  function ensureComparedObjectsFor(obj) {\n    if(!comparedObjects.has(obj)) {\n      comparedObjects.set(obj, new Set());\n    }\n  }\n  function comparedObjectsHAS(obj, obj2) {\n    ensureComparedObjectsFor(obj);\n    return comparedObjects.get(obj).has(obj2);\n  }\n  function comparedObjectsADD(obj, obj2) {\n    ensureComparedObjectsFor(obj);\n    comparedObjects.get(obj).add(obj2);\n  }\n\n  function isAlreadyCompared(obj1, obj2) {\n    return comparedObjectsHAS(obj1, obj2) || comparedObjectsHAS(obj2, obj1);\n  }\n  function markAsAlreadyCompared(obj1, obj2) {\n    comparedObjectsADD(obj1, obj2);\n    comparedObjectsADD(obj2, obj1);\n  }\n\n  const objectsStillToCompare = [[objA,objB]];\n  \n  let currentPair;\n  while(currentPair = objectsStillToCompare.pop()) {\n    const [obj1, obj2] = currentPair;\n    \n    // strict equality\n    if (obj1 === obj2) { continue; }\n\n    // only for object-like values\n    if (typeof obj1 !== \"object\" || !obj1 || typeof obj2 !== \"object\" || !obj2) {\n      return false;\n    }\n\n    const keys1 = Object.keys(obj1);\n    const keys2 = Object.keys(obj2);\n\n    // same number of keys\n    if (keys1.length !== keys2.length) {\n      return false;\n    }\n\n    const hasOwnProperty2 = Object.prototype.hasOwnProperty.bind(obj2);\n\n    // Test for A's keys different from B.\n    for (let index = 0; index < keys1.length; index++) {\n      const key = keys1[index];\n\n      if (!hasOwnProperty2(key)) {\n        return false;\n      }\n\n      const valueA = obj1[key];\n      const valueB = obj2[key];\n\n      if(!isAlreadyCompared(valueA, valueB)) {\n        markAsAlreadyCompared(valueA, valueB);\n        objectsStillToCompare.push([valueA, valueB]);\n      }\n    }\n  }\n\n  return true;\n}\n"],"mappings":"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"}