Sha256: c28303130f8bcfd88efce6120533e31cdf1788097f9e4e20dced8375a29edb67

Contents?: true

Size: 934 Bytes

Versions: 5

Compression:

Stored size: 934 Bytes

Contents

// 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
}

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
freezerwatch-0.2.0 node_modules/freezerwatch/node_modules/lacrosse/node_modules/request/lib/getSafe.js
freezerwatch-0.1.2 node_modules/freezerwatch/node_modules/lacrosse/node_modules/request/lib/getSafe.js
freezerwatch-0.1.1 node_modules/freezerwatch/node_modules/lacrosse/node_modules/request/lib/getSafe.js
freezerwatch-0.1.0 node_modules/freezerwatch/node_modules/lacrosse/node_modules/request/lib/getSafe.js
embeditor-rails-2.0.0.beta lib/node_modules/npm/node_modules/request/lib/getSafe.js