1234567891011121314151617181920212223242526272829303132333435 |
- 'use strict';
- var GetIntrinsic = require('get-intrinsic');
- var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
- var hasToStringTag = require('has-tostringtag/shams')();
- var hasOwn = require('hasown');
- var $TypeError = require('es-errors/type');
- var toStringTag = hasToStringTag ? Symbol.toStringTag : null;
- /** @type {import('.')} */
- module.exports = function setToStringTag(object, value) {
- var overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force;
- var nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable;
- if (
- (typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean')
- || (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean')
- ) {
- throw new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans');
- }
- if (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) {
- if ($defineProperty) {
- $defineProperty(object, toStringTag, {
- configurable: !nonConfigurable,
- enumerable: false,
- value: value,
- writable: false
- });
- } else {
- object[toStringTag] = value; // eslint-disable-line no-param-reassign
- }
- }
- };
|