/*! * define-property * * Copyright (c) 2015-2018, Jon Schlinkert. * Released under the MIT License. */ 'use strict'; var isobject = require('isobject'); var isDescriptor = require('is-descriptor'); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; module.exports = function defineProperty(obj, key, val) { if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { throw new TypeError('expected an object, function, or array'); } if (typeof key !== 'string') { throw new TypeError('expected "key" to be a string'); } if (isDescriptor(val)) { define(obj, key, val); return obj; } define(obj, key, { configurable: true, enumerable: false, writable: true, value: val }); return obj; };