update
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
'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
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user