var ref = require('ssb-ref') function isObject(o) { return o && 'object' === typeof o } var DEFAULT_PORT = 8008 var isArray = Array.isArray var isInteger = Number.isInteger function isString (s) { return 'string' === typeof s } var find = exports.find = function find(ary, test) { for(var i in ary) if(test(ary[i], i, ary)) return ary[i] } var clone = exports.clone = function clone (obj, mapper) { function map(v, k) { return isObject(v) ? clone(v, mapper) : mapper(v, k) } if(isArray(obj)) return obj.map(map) else if(isObject(obj)) { var o = {} for(var k in obj) o[k] = map(obj[k], k) return o } else return map(obj) } var mergeKeys = exports.mergeKeys = function (a, b, iter) { var o = {} for(var k in a) { if(!isUndefined(a[k])) o[k] = iter(v[k], b[k], k) } for(var k in b) { if(isUndefined(a[a])) o[k] = iter(undefined, b[k], k) } return o } exports.merge = function (a, b) { //merge a and b objects if(isArray(a) != isArray(b)) throw new Error('cannot merge array with non-array') if(isObject(a) != isObject(b)) throw new Error('cannot merge object with non-object') a = clone(a) var keys if(isObject(b)) { for(var k in b) a[k] = b } }