2 * define-property <https://github.com/jonschlinkert/define-property>
4 * Copyright (c) 2015-2018, Jon Schlinkert.
5 * Released under the MIT License.
10 var isobject = require('isobject');
11 var isDescriptor = require('is-descriptor');
12 var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)
13 ? Reflect.defineProperty
14 : Object.defineProperty;
16 module.exports = function defineProperty(obj, key, val) {
17 if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) {
18 throw new TypeError('expected an object, function, or array');
21 if (typeof key !== 'string') {
22 throw new TypeError('expected "key" to be a string');
25 if (isDescriptor(val)) {
26 define(obj, key, val);