diff options
Diffstat (limited to 'node_modules/is-data-descriptor/index.js')
| -rw-r--r-- | node_modules/is-data-descriptor/index.js | 55 | 
1 files changed, 55 insertions, 0 deletions
diff --git a/node_modules/is-data-descriptor/index.js b/node_modules/is-data-descriptor/index.js new file mode 100644 index 0000000..d4d09c9 --- /dev/null +++ b/node_modules/is-data-descriptor/index.js @@ -0,0 +1,55 @@ +/*! + * is-data-descriptor <https://github.com/jonschlinkert/is-data-descriptor> + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + +'use strict'; + +var typeOf = require('kind-of'); + +// data descriptor properties +var data = { +  configurable: 'boolean', +  enumerable: 'boolean', +  writable: 'boolean' +}; + +function isDataDescriptor(obj, prop) { +  if (typeOf(obj) !== 'object') { +    return false; +  } + +  if (typeof prop === 'string') { +    var val = Object.getOwnPropertyDescriptor(obj, prop); +    return typeof val !== 'undefined'; +  } + +  if (!('value' in obj) && !('writable' in obj)) { +    return false; +  } + +  for (var key in obj) { +    if (key === 'value') continue; + +    if (!data.hasOwnProperty(key)) { +      continue; +    } + +    if (typeOf(obj[key]) === data[key]) { +      continue; +    } + +    if (typeof obj[key] !== 'undefined') { +      return false; +    } +  } +  return true; +} + +/** + * Expose `isDataDescriptor` + */ + +module.exports = isDataDescriptor;  | 
