omniclone is a fully configurable function for deep cloning objects in javascript.
It handles correctly: the invocation of constructors, tcircular references, normal objects, custom objects, String, Boolean, Number, Error, Promise, Array and RegExp objects.
It also allows the copy of non-enumerables props, getters & setters, symbols.