/*! * 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;