You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
949 B
49 lines
949 B
/*! |
|
* is-data-descriptor <https://github.com/jonschlinkert/is-data-descriptor> |
|
* |
|
* Copyright (c) 2015-2017, Jon Schlinkert. |
|
* Released under the MIT License. |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var typeOf = require('kind-of'); |
|
|
|
module.exports = function isDataDescriptor(obj, prop) { |
|
// data descriptor properties |
|
var data = { |
|
configurable: 'boolean', |
|
enumerable: 'boolean', |
|
writable: 'boolean' |
|
}; |
|
|
|
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; |
|
};
|
|
|