dist/util.js
function eq(a, b) {
  var atype, btype;

  // identical objects are equal
  if (a === b) {
    return true;
  }

  // if the first argument is a Transis.Object, delegate to its `eq` method
  if (a && a.objectId && typeof a.eq === 'function') {
    return a.eq(b);
  }

  atype = type(a);
  btype = type(b);

  // native objects that are not of the same type are not equal
  if (atype !== btype) {
    return false;
  }

  switch (atype) {
    case 'boolean':
    case 'string':
    case 'date':
    case 'number':
      return a.valueOf() === b.valueOf();
    case 'regexp':
      return a.source === b.source && a.global === b.global && a.multiline === b.multiline && a.ignoreCase === b.ignoreCase;
    case 'array':
      return arrayEq(a, b);
    case 'object':
      return objectEq(a, b);
    default:
      return false;
  }
}
function eq(a, b) {
  var atype, btype;

  // identical objects are equal
  if (a === b) {
    return true;
  }

  // if the first argument is a Transis.Object, delegate to its `eq` method
  if (a && a.objectId && typeof a.eq === 'function') {
    return a.eq(b);
  }

  atype = type(a);
  btype = type(b);

  // native objects that are not of the same type are not equal
  if (atype !== btype) {
    return false;
  }

  switch (atype) {
    case 'boolean':
    case 'string':
    case 'date':
    case 'number':
      return a.valueOf() === b.valueOf();
    case 'regexp':
      return a.source === b.source && a.global === b.global && a.multiline === b.multiline && a.ignoreCase === b.ignoreCase;
    case 'array':
      return arrayEq(a, b);
    case 'object':
      return objectEq(a, b);
    default:
      return false;
  }
}
Public: Performs an object equality test. If the first argument is a `Transis.Object` then it is sent the `eq` method, otherwise custom equality code is run based on the object type.  a - Any object. b - Any object.  Returns `true` if the objects are equal and `false` otherwise.