| 12345678910111213141516171819202122232425262728 | 'use strict';var isCallable = require('../internals/is-callable');var definePropertyModule = require('../internals/object-define-property');var makeBuiltIn = require('../internals/make-built-in');var defineGlobalProperty = require('../internals/define-global-property');module.exports = function (O, key, value, options) {  if (!options) options = {};  var simple = options.enumerable;  var name = options.name !== undefined ? options.name : key;  if (isCallable(value)) makeBuiltIn(value, name, options);  if (options.global) {    if (simple) O[key] = value;    else defineGlobalProperty(key, value);  } else {    try {      if (!options.unsafe) delete O[key];      else if (O[key]) simple = true;    } catch (error) { /* empty */ }    if (simple) O[key] = value;    else definePropertyModule.f(O, key, {      value: value,      enumerable: false,      configurable: !options.nonConfigurable,      writable: !options.nonWritable    });  } return O;};
 |