index.js
function merkle (values, digestFn) {
  if (!Array.isArray(values)) throw TypeError('Expected values Array')
  if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
  if (values.length === 1) return values.concat()

  var levels = [values]
  var level = values

  do {
    level = _derive(level, digestFn)
    levels.push(level)
  } while (level.length > 1)

  return [].concat.apply([], levels)
}
function merkle (values, digestFn) {
  if (!Array.isArray(values)) throw TypeError('Expected values Array')
  if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
  if (values.length === 1) return values.concat()

  var levels = [values]
  var level = values

  do {
    level = _derive(level, digestFn)
    levels.push(level)
  } while (level.length > 1)

  return [].concat.apply([], levels)
}
function merkle ( values , digestFn ) { if ( ! Array . isArray ( values ) ) throw TypeError ( 'Expected values Array' ) if ( typeof digestFn !== 'function' ) throw TypeError ( 'Expected digest Function' ) if ( values . length === 1 ) return values . concat ( ) var levels = [ values ] var level = values do { level = _derive ( level , digestFn ) levels . push ( level ) } while ( level . length > 1 ) return [ ] . concat . apply ( [ ] , levels ) }
returns the merkle tree
returns the merkle tree