index.js 738 B

1234567891011121314151617181920212223242526
  1. 'use strict';
  2. var GetIntrinsic = require('get-intrinsic');
  3. var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
  4. var hasToStringTag = require('has-tostringtag/shams')();
  5. var has = require('has');
  6. var toStringTag = hasToStringTag ? Symbol.toStringTag : null;
  7. module.exports = function setToStringTag(object, value) {
  8. var overrideIfSet = arguments.length > 2 && arguments[2] && arguments[2].force;
  9. if (toStringTag && (overrideIfSet || !has(object, toStringTag))) {
  10. if ($defineProperty) {
  11. $defineProperty(object, toStringTag, {
  12. configurable: true,
  13. enumerable: false,
  14. value: value,
  15. writable: false
  16. });
  17. } else {
  18. object[toStringTag] = value; // eslint-disable-line no-param-reassign
  19. }
  20. }
  21. };