source: trip-planner-front/node_modules/is-accessor-descriptor/index.js@ 6a80231

Last change on this file since 6a80231 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 1.4 KB
RevLine 
[6a3a178]1/*!
2 * is-accessor-descriptor <https://github.com/jonschlinkert/is-accessor-descriptor>
3 *
4 * Copyright (c) 2015-2017, Jon Schlinkert.
5 * Released under the MIT License.
6 */
7
8'use strict';
9
10var typeOf = require('kind-of');
11
12// accessor descriptor properties
13var accessor = {
14 get: 'function',
15 set: 'function',
16 configurable: 'boolean',
17 enumerable: 'boolean'
18};
19
20function isAccessorDescriptor(obj, prop) {
21 if (typeof prop === 'string') {
22 var val = Object.getOwnPropertyDescriptor(obj, prop);
23 return typeof val !== 'undefined';
24 }
25
26 if (typeOf(obj) !== 'object') {
27 return false;
28 }
29
30 if (has(obj, 'value') || has(obj, 'writable')) {
31 return false;
32 }
33
34 if (!has(obj, 'get') || typeof obj.get !== 'function') {
35 return false;
36 }
37
38 // tldr: it's valid to have "set" be undefined
39 // "set" might be undefined if `Object.getOwnPropertyDescriptor`
40 // was used to get the value, and only `get` was defined by the user
41 if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') {
42 return false;
43 }
44
45 for (var key in obj) {
46 if (!accessor.hasOwnProperty(key)) {
47 continue;
48 }
49
50 if (typeOf(obj[key]) === accessor[key]) {
51 continue;
52 }
53
54 if (typeof obj[key] !== 'undefined') {
55 return false;
56 }
57 }
58 return true;
59}
60
61function has(obj, key) {
62 return {}.hasOwnProperty.call(obj, key);
63}
64
65/**
66 * Expose `isAccessorDescriptor`
67 */
68
69module.exports = isAccessorDescriptor;
Note: See TracBrowser for help on using the repository browser.