es-set-tostringtag
Advanced tools
Comparing version 1.0.0 to 2.0.0
@@ -8,2 +8,10 @@ # Changelog | ||
## [v2.0.0](https://github.com/es-shims/es-set-tostringtag/compare/v1.0.0...v2.0.0) - 2022-12-21 | ||
### Commits | ||
- [Tests] refactor tests [`168dcfb`](https://github.com/es-shims/es-set-tostringtag/commit/168dcfbb535c279dc48ccdc89419155125aaec18) | ||
- [Breaking] do not set toStringTag if it is already set [`226ab87`](https://github.com/es-shims/es-set-tostringtag/commit/226ab874192c625d9e5f0e599d3f60d2b2aa83b5) | ||
- [New] add `force` option to set even if already set [`1abd4ec`](https://github.com/es-shims/es-set-tostringtag/commit/1abd4ecb282f19718c4518284b0293a343564505) | ||
## v1.0.0 - 2022-12-21 | ||
@@ -10,0 +18,0 @@ |
@@ -8,2 +8,3 @@ 'use strict'; | ||
var hasToStringTag = require('has-tostringtag/shams')(); | ||
var has = require('has'); | ||
@@ -13,3 +14,4 @@ var toStringTag = hasToStringTag ? Symbol.toStringTag : null; | ||
module.exports = function setToStringTag(object, value) { | ||
if (toStringTag) { | ||
var overrideIfSet = arguments.length > 2 && arguments[2] && arguments[2].force; | ||
if (toStringTag && (overrideIfSet || !has(object, toStringTag))) { | ||
if ($defineProperty) { | ||
@@ -16,0 +18,0 @@ $defineProperty(object, toStringTag, { |
{ | ||
"name": "es-set-tostringtag", | ||
"version": "1.0.0", | ||
"version": "2.0.0", | ||
"description": "A helper to optimistically set Symbol.toStringTag, when possible.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -17,10 +17,27 @@ 'use strict'; | ||
if (hasToStringTag) { | ||
t.ok(has(obj, Symbol.toStringTag), 'has toStringTag property'); | ||
t.equal(obj[Symbol.toStringTag], sentinel, 'toStringTag property is as expected'); | ||
} else { | ||
t.test('has Symbol.toStringTag', { skip: !hasToStringTag }, function (st) { | ||
st.ok(has(obj, Symbol.toStringTag), 'has toStringTag property'); | ||
st.equal(obj[Symbol.toStringTag], sentinel, 'toStringTag property is as expected'); | ||
st.equal(String(obj), '[object Object]', 'toStringTag works'); | ||
var tagged = {}; | ||
tagged[Symbol.toStringTag] = 'already tagged'; | ||
st.equal(String(tagged), '[object already tagged]', 'toStringTag works'); | ||
setToStringTag(tagged, 'new tag'); | ||
st.equal(String(tagged), '[object already tagged]', 'toStringTag is unchanged'); | ||
setToStringTag(tagged, 'new tag', { force: true }); | ||
st.equal(String(tagged), '[object new tag]', 'toStringTag is changed with force: true'); | ||
st.end(); | ||
}); | ||
t.test('does not have Symbol.toStringTag', { skip: hasToStringTag }, function (st) { | ||
var passed = true; | ||
for (var key in obj) { // eslint-disable-line no-restricted-syntax | ||
if (has(obj, key)) { | ||
t.fail('object has own key ' + key); | ||
st.fail('object has own key ' + key); | ||
passed = false; | ||
@@ -30,8 +47,9 @@ } | ||
if (passed) { | ||
t.ok(true, 'object has no enumerable own keys'); | ||
st.ok(true, 'object has no enumerable own keys'); | ||
} | ||
} | ||
t.equal(String(obj), '[object Object]', 'toStringTag works', { skip: !hasToStringTag }); | ||
st.end(); | ||
}); | ||
t.end(); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
8536
59