dist/util.js
function objectEq(a, b) {
  var akeys = Object.keys(a),
      bkeys = Object.keys(b),
      r;

  if (akeys.length !== bkeys.length) {
    return false;
  }

  r = true;

  detectRecursion(a, b, function () {
    var i, len, key;

    for (i = 0, len = akeys.length; i < len; i++) {
      key = akeys[i];
      if (!b.hasOwnProperty(key)) {
        r = false;break;
      }
      if (!eq(a[key], b[key])) {
        r = false;break;
      }
    }
  });

  return r;
}
function objectEq(a, b) {
  var akeys = Object.keys(a),
      bkeys = Object.keys(b),
      r;

  if (akeys.length !== bkeys.length) {
    return false;
  }

  r = true;

  detectRecursion(a, b, function () {
    var i, len, key;

    for (i = 0, len = akeys.length; i < len; i++) {
      key = akeys[i];
      if (!b.hasOwnProperty(key)) {
        r = false;break;
      }
      if (!eq(a[key], b[key])) {
        r = false;break;
      }
    }
  });

  return r;
}
Public: Performs a a deep object equality test.  a - Any object. b - Any object.  Returns `true` if the objects are equal and `false` otherwise.