aboutsummaryrefslogtreecommitdiff
path: root/node_modules/is-data-descriptor/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/is-data-descriptor/index.js')
-rw-r--r--node_modules/is-data-descriptor/index.js55
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;