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.
31 lines
753 B
31 lines
753 B
/*! |
|
* define-property <https://github.com/jonschlinkert/define-property> |
|
* |
|
* Copyright (c) 2015, Jon Schlinkert. |
|
* Licensed under the MIT License. |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var isDescriptor = require('is-descriptor'); |
|
|
|
module.exports = function defineProperty(obj, prop, val) { |
|
if (typeof obj !== 'object' && typeof obj !== 'function') { |
|
throw new TypeError('expected an object or function.'); |
|
} |
|
|
|
if (typeof prop !== 'string') { |
|
throw new TypeError('expected `prop` to be a string.'); |
|
} |
|
|
|
if (isDescriptor(val) && ('set' in val || 'get' in val)) { |
|
return Object.defineProperty(obj, prop, val); |
|
} |
|
|
|
return Object.defineProperty(obj, prop, { |
|
configurable: true, |
|
enumerable: false, |
|
writable: true, |
|
value: val |
|
}); |
|
};
|
|
|