| 12345678910111213141516171819202122232425262728293031323334 | 
							- // Safe toJSON
 
- module.exports =
 
- function getSafe (self, uuid) {
 
-   if (typeof self === 'object' || typeof self === 'function') var safe = {}
 
-   if (Array.isArray(self)) var safe = []
 
-   var recurse = []
 
-   Object.defineProperty(self, uuid, {})
 
-   var attrs = Object.keys(self).filter(function (i) {
 
-     if (i === uuid) return false
 
-     if ( (typeof self[i] !== 'object' && typeof self[i] !== 'function') || self[i] === null) return true
 
-     return !(Object.getOwnPropertyDescriptor(self[i], uuid))
 
-   })
 
-   for (var i=0;i<attrs.length;i++) {
 
-     if ( (typeof self[attrs[i]] !== 'object' && typeof self[attrs[i]] !== 'function') ||
 
-           self[attrs[i]] === null
 
-         ) {
 
-       safe[attrs[i]] = self[attrs[i]]
 
-     } else {
 
-       recurse.push(attrs[i])
 
-       Object.defineProperty(self[attrs[i]], uuid, {})
 
-     }
 
-   }
 
-   for (var i=0;i<recurse.length;i++) {
 
-     safe[recurse[i]] = getSafe(self[recurse[i]], uuid)
 
-   }
 
-   return safe
 
- }
 
 
  |