src/index.js
function clones (source, bind, target) {
  let opts = {
    bind: bind,
    visited: [],
    cloned: []
  }
  return _clone(opts, source, target)
}
function clones (source, bind, target) {
  let opts = {
    bind: bind,
    visited: [],
    cloned: []
  }
  return _clone(opts, source, target)
}
function clones ( source , bind , target ) { let opts = { bind : bind , visited : [ ] , cloned : [ ] } return _clone ( opts , source , target ) }
A Deep-Clone of object `source`

@static
@param {Object} source - clone source
@param {Object} [bind] - bind functions to this context
@return {Any} deep clone of `source`
@example
const clones = require('clones')

const source = [
{a: {b: 1}},
{c: {d: 2}},
'3',
function () { return 4 }
]
// adding circularities
source[0].a.e = source[0].a

const dest = clones(source)
// => [{ a: { b: 1, e: [Circular] } },
//     { c: { d: 2 } },
//     '3',
//     [Function] ]
A Deep - Clone of object source