mock-property
Advanced tools
Comparing version 1.0.2 to 1.0.3
@@ -8,2 +8,10 @@ # Changelog | ||
## [v1.0.3](https://github.com/ljharb/mock-property/compare/v1.0.2...v1.0.3) - 2023-10-20 | ||
### Commits | ||
- [Refactor] use `hasown` instead of `has` [`da0d497`](https://github.com/ljharb/mock-property/commit/da0d497e819a060b75c94027bf92cddc52777540) | ||
- [Dev Deps] update `object-inspect`, `tape` [`0b14b22`](https://github.com/ljharb/mock-property/commit/0b14b22346754bbf2e700c49863597ff3836dc14) | ||
- [Deps] update `define-data-property` [`538289b`](https://github.com/ljharb/mock-property/commit/538289b8ab7b8f4d06dfa7be01532819157925b9) | ||
## [v1.0.2](https://github.com/ljharb/mock-property/compare/v1.0.1...v1.0.2) - 2023-10-11 | ||
@@ -10,0 +18,0 @@ |
52
index.js
'use strict'; | ||
var has = require('has'); | ||
var hasOwn = require('hasown'); | ||
var hasPropertyDescriptors = require('has-property-descriptors'); | ||
@@ -19,16 +19,16 @@ var isArray = require('isarray'); | ||
module.exports = function mockProperty(obj, prop, options) { | ||
if (has(options, 'nonEnumerable') && typeof options.nonEnumerable !== 'boolean') { | ||
if (hasOwn(options, 'nonEnumerable') && typeof options.nonEnumerable !== 'boolean') { | ||
throw new $TypeError('`nonEnumerable` option, when present, must be a boolean'); | ||
} | ||
if (has(options, 'nonWritable') && typeof options.nonWritable !== 'boolean') { | ||
if (hasOwn(options, 'nonWritable') && typeof options.nonWritable !== 'boolean') { | ||
throw new $TypeError('`nonEnumerable` option, when present, must be a boolean'); | ||
} | ||
if (has(options, 'delete') && typeof options['delete'] !== 'boolean') { | ||
if (hasOwn(options, 'delete') && typeof options['delete'] !== 'boolean') { | ||
throw new $TypeError('`delete` option, when present, must be a boolean'); | ||
} | ||
var wantsData = has(options, 'value') || has(options, 'nonWritable'); | ||
var wantsAccessor = has(options, 'get') || has(options, 'set'); | ||
var wantsData = hasOwn(options, 'value') || hasOwn(options, 'nonWritable'); | ||
var wantsAccessor = hasOwn(options, 'get') || hasOwn(options, 'set'); | ||
if (options['delete'] && (wantsData || wantsAccessor || has(options, 'nonEnumerable'))) { | ||
if (options['delete'] && (wantsData || wantsAccessor || hasOwn(options, 'nonEnumerable'))) { | ||
throw new $TypeError('`delete` option must not be set to true when any of `value`, `get`, `set`, `nonWritable`, or `nonEnumerable` are provided'); | ||
@@ -42,4 +42,4 @@ } | ||
if ( | ||
(has(options, 'get') && typeof options.get !== 'function' && typeof options.get !== 'undefined') | ||
|| (has(options, 'set') && typeof options.set !== 'function' && typeof options.set !== 'undefined') | ||
(hasOwn(options, 'get') && typeof options.get !== 'function' && typeof options.get !== 'undefined') | ||
|| (hasOwn(options, 'set') && typeof options.set !== 'function' && typeof options.set !== 'undefined') | ||
) { | ||
@@ -56,3 +56,3 @@ throw new $TypeError('`get` and `set` options, when present, must be functions or `undefined`'); | ||
? gOPD(obj, prop) | ||
: has(obj, prop) | ||
: hasOwn(obj, prop) | ||
? { | ||
@@ -72,4 +72,4 @@ configurable: typeof obj === 'function' && prop === 'name' ? functionsHaveConfigurableNames : true, | ||
var hasSetter = origDescriptor && typeof origDescriptor.set === 'function'; | ||
var hasFutureGetter = has(options, 'get') ? typeof options.get === 'function' : hasGetter; | ||
var hasFutureSetter = has(options, 'set') ? typeof options.set === 'function' : hasSetter; | ||
var hasFutureGetter = hasOwn(options, 'get') ? typeof options.get === 'function' : hasGetter; | ||
var hasFutureSetter = hasOwn(options, 'set') ? typeof options.set === 'function' : hasSetter; | ||
if (!hasFutureGetter && !hasFutureSetter) { | ||
@@ -80,3 +80,3 @@ throw new $TypeError('when the `get` or `set` options are provided, the mocked object property must end up with at least one of a getter or a setter function'); | ||
var isChangingEnumerability = has(options, 'nonEnumerable') ? !options.nonEnumerable !== origEnumerable : false; | ||
var isChangingEnumerability = hasOwn(options, 'nonEnumerable') ? !options.nonEnumerable !== origEnumerable : false; | ||
if (origDescriptor && !origDescriptor.configurable) { | ||
@@ -87,8 +87,8 @@ if (isChangingEnumerability) { | ||
if (wantsAccessor) { | ||
if (has(origDescriptor, 'value')) { | ||
if (hasOwn(origDescriptor, 'value')) { | ||
throw new $TypeError('`' + prop + '` is a nonconfigurable data property, and can not be changed to an accessor'); | ||
} | ||
var isChangingGetter = has(options, 'get') && has(origDescriptor, 'get') && options.get !== origDescriptor.get; | ||
var isChangingSetter = has(options, 'set') && has(origDescriptor, 'set') && options.set !== origDescriptor.set; | ||
var isChangingGetter = hasOwn(options, 'get') && hasOwn(origDescriptor, 'get') && options.get !== origDescriptor.get; | ||
var isChangingSetter = hasOwn(options, 'set') && hasOwn(origDescriptor, 'set') && options.set !== origDescriptor.set; | ||
@@ -100,8 +100,8 @@ if (isChangingGetter || isChangingSetter) { | ||
} | ||
if (has(origDescriptor, 'get') || has(origDescriptor, 'set')) { | ||
if (hasOwn(origDescriptor, 'get') || hasOwn(origDescriptor, 'set')) { | ||
throw new $TypeError('`' + prop + '` is a nonconfigurable accessor property, and can not be changed to a data property'); | ||
} | ||
var isChangingValue = has(options, 'value') && has(origDescriptor, 'value') && options.value !== origDescriptor.value; | ||
var isChangingWriteability = has(options, 'nonWritable') && !options.nonWritable !== origDescriptor.writable; | ||
var isChangingValue = hasOwn(options, 'value') && hasOwn(origDescriptor, 'value') && options.value !== origDescriptor.value; | ||
var isChangingWriteability = hasOwn(options, 'nonWritable') && !options.nonWritable !== origDescriptor.writable; | ||
@@ -122,3 +122,3 @@ if ((!origDescriptor.writable && isChangingValue) || isChangingEnumerability || isChangingWriteability) { | ||
&& (!origDescriptor || origDescriptor.enumerable) | ||
&& (!has(options, 'nonWritable') || !options.nonWritable) | ||
&& (!hasOwn(options, 'nonWritable') || !options.nonWritable) | ||
&& (!origDescriptor || origDescriptor.writable) | ||
@@ -133,3 +133,3 @@ && (!gOPD || !(prop in obj)) | ||
var newEnumerable = has(options, 'nonEnumerable') ? !options.nonEnumerable : origEnumerable; | ||
var newEnumerable = hasOwn(options, 'nonEnumerable') ? !options.nonEnumerable : origEnumerable; | ||
@@ -140,9 +140,9 @@ if (wantsData) { | ||
prop, | ||
has(options, 'value') ? options.value : origDescriptor.value, | ||
hasOwn(options, 'value') ? options.value : origDescriptor.value, | ||
!newEnumerable, | ||
has(options, 'nonWritable') ? options.nonWritable : has(origDescriptor, 'writable') ? !origDescriptor.writable : false | ||
hasOwn(options, 'nonWritable') ? options.nonWritable : hasOwn(origDescriptor, 'writable') ? !origDescriptor.writable : false | ||
); | ||
} else if (wantsAccessor) { | ||
var getter = has(options, 'get') ? options.get : origDescriptor && origDescriptor.get; | ||
var setter = has(options, 'set') ? options.set : origDescriptor && origDescriptor.set; | ||
var getter = hasOwn(options, 'get') ? options.get : origDescriptor && origDescriptor.get; | ||
var setter = hasOwn(options, 'set') ? options.set : origDescriptor && origDescriptor.set; | ||
@@ -169,3 +169,3 @@ $defineProperty(obj, prop, { | ||
} else if ($defineProperty) { | ||
if (has(origDescriptor, 'writable')) { | ||
if (hasOwn(origDescriptor, 'writable')) { | ||
defineDataProperty( | ||
@@ -172,0 +172,0 @@ obj, |
{ | ||
"name": "mock-property", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"description": "Given an object and a property, replaces a property descriptor (or deletes it), and returns a thunk to restore it.", | ||
@@ -58,12 +58,12 @@ "main": "index.js", | ||
"nyc": "^10.3.2", | ||
"object-inspect": "^1.12.3", | ||
"object-inspect": "^1.13.1", | ||
"safe-publish-latest": "^2.0.0", | ||
"tape": "^5.7.1" | ||
"tape": "^5.7.2" | ||
}, | ||
"dependencies": { | ||
"define-data-property": "^1.1.0", | ||
"define-data-property": "^1.1.1", | ||
"functions-have-names": "^1.2.3", | ||
"gopd": "^1.0.1", | ||
"has": "^1.0.3", | ||
"has-property-descriptors": "^1.0.0", | ||
"hasown": "^2.0.0", | ||
"isarray": "^2.0.5" | ||
@@ -70,0 +70,0 @@ }, |
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
46967
+ Addedhasown@^2.0.0
- Removedhas@^1.0.3
- Removedhas@1.0.4(transitive)
Updateddefine-data-property@^1.1.1