lib/command.js
function merge() {
  let i = 1
    , key
    , val
    , obj
    , target
    ;

  // make sure we don't modify source element and it's properties
  // objects are passed by reference
  target = clone( arguments[0] );
  while (obj = arguments[i++]) {
    for (key in obj) {
      if ( !hasOwn(obj, key) ) {
          continue;
      }

      val = obj[key];
      if ( isObject(val) && isObject(target[key]) ){
        // inception, deep merge objects
        target[key] = merge(target[key], val);
      } else {
        let is_url = val && val.type == url;
        let is_path = val && val.type == path;

        // make sure arrays, regexp, date, objects are cloned
        target[key] = clone(val);
        if( is_url ){
          target[key].type = url;
        }

        if( is_path ){
          target[key].type = path;
        }
      }
    }
  }
  return target;
}
function merge() {
  let i = 1
    , key
    , val
    , obj
    , target
    ;

  // make sure we don't modify source element and it's properties
  // objects are passed by reference
  target = clone( arguments[0] );
  while (obj = arguments[i++]) {
    for (key in obj) {
      if ( !hasOwn(obj, key) ) {
          continue;
      }

      val = obj[key];
      if ( isObject(val) && isObject(target[key]) ){
        // inception, deep merge objects
        target[key] = merge(target[key], val);
      } else {
        let is_url = val && val.type == url;
        let is_path = val && val.type == path;

        // make sure arrays, regexp, date, objects are cloned
        target[key] = clone(val);
        if( is_url ){
          target[key].type = url;
        }

        if( is_path ){
          target[key].type = path;
        }
      }
    }
  }
  return target;
}
function merge ( ) { let i = 1 , key , val , obj , target ; // make sure we don't modify source element and it's properties // objects are passed by reference target = clone ( arguments [ 0 ] ) ; while ( obj = arguments [ i ++ ] ) { for ( key in obj ) { if ( ! hasOwn ( obj , key ) ) { continue ; } val = obj [ key ] ; if ( isObject ( val ) && isObject ( target [ key ] ) ) { // inception, deep merge objects target [ key ] = merge ( target [ key ] , val ) ; } else { let is_url = val && val . type == url ; let is_path = val && val . type == path ; // make sure arrays, regexp, date, objects are cloned target [ key ] = clone ( val ) ; if ( is_url ) { target [ key ] . type = url ; } if ( is_path ) { target [ key ] . type = path ; } } } } return target ; }
Deep merge objects. except for path & url
this breaks nopt as it is comparing to those module objects
Deep merge objects . except for path & url this breaks nopt as it is comparing to those module objects