Socket
Socket
Sign inDemoInstall

es-set-tostringtag

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

es-set-tostringtag - npm Package Compare versions

Comparing version 1.0.0 to 2.0.0

8

CHANGELOG.md

@@ -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 @@

4

index.js

@@ -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();
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc