deep-equal
Advanced tools
Comparing version 2.1.0 to 2.2.0
@@ -8,2 +8,14 @@ # Changelog | ||
## [v2.2.0](https://github.com/inspect-js/node-deep-equal/compare/v2.1.0...v2.2.0) - 2023-01-05 | ||
### Commits | ||
- [New] add support for `SharedArrayBuffer` [`0ef51c7`](https://github.com/inspect-js/node-deep-equal/commit/0ef51c79b7dcd6ae5890b2dce4304be7c8ebe314) | ||
- [Refactor] use `is-array-buffer` package [`0360ee1`](https://github.com/inspect-js/node-deep-equal/commit/0360ee1f1bb6e5804c15a9a4aa75ff84120a33e1) | ||
- [Fix] `whichTypedArray` can return false in both cases [`df3e3c4`](https://github.com/inspect-js/node-deep-equal/commit/df3e3c4e30552b7a7892b62dc45fccd31eac9bfe) | ||
- [Dev Deps] update `aud`, `object.getownpropertydescriptors` [`6d62ea4`](https://github.com/inspect-js/node-deep-equal/commit/6d62ea4f2b82d4f861fd3e0c2d67916939b1edbc) | ||
- [Dev Deps] update `@ljharb/eslint-config` [`15aab59`](https://github.com/inspect-js/node-deep-equal/commit/15aab59d647628e05b77d1897036d73884f7a107) | ||
- [Deps] update `which-typed-array` [`8dfce27`](https://github.com/inspect-js/node-deep-equal/commit/8dfce27f333721c697b90569b26e4bded0d61d88) | ||
- [eslint] remove `.eslintignore` [`af46773`](https://github.com/inspect-js/node-deep-equal/commit/af46773b281dc67d7743280505a22248f0f0748d) | ||
## [v2.1.0](https://github.com/inspect-js/node-deep-equal/compare/v2.0.5...v2.1.0) - 2022-11-02 | ||
@@ -10,0 +22,0 @@ |
49
index.js
'use strict'; | ||
var objectKeys = require('object-keys'); | ||
var assign = require('object.assign'); | ||
var callBound = require('call-bind/callBound'); | ||
var flags = require('regexp.prototype.flags'); | ||
var GetIntrinsic = require('get-intrinsic'); | ||
var getIterator = require('es-get-iterator'); | ||
var getSideChannel = require('side-channel'); | ||
var is = require('object-is'); | ||
var isArguments = require('is-arguments'); | ||
var is = require('object-is'); | ||
var isRegex = require('is-regex'); | ||
var flags = require('regexp.prototype.flags'); | ||
var isArray = require('isarray'); | ||
var isArrayBuffer = require('is-array-buffer'); | ||
var isDate = require('is-date-object'); | ||
var isRegex = require('is-regex'); | ||
var isSharedArrayBuffer = require('is-shared-array-buffer'); | ||
var objectKeys = require('object-keys'); | ||
var whichBoxedPrimitive = require('which-boxed-primitive'); | ||
var GetIntrinsic = require('get-intrinsic'); | ||
var callBound = require('call-bind/callBound'); | ||
var whichCollection = require('which-collection'); | ||
var getIterator = require('es-get-iterator'); | ||
var getSideChannel = require('side-channel'); | ||
var whichTypedArray = require('which-typed-array'); | ||
var assign = require('object.assign'); | ||
// TODO: use extracted package | ||
var byteLength = callBound('ArrayBuffer.prototype.byteLength', true); | ||
function isArrayBuffer(buffer) { | ||
if (!buffer || typeof buffer !== 'object' || !byteLength) { | ||
return false; | ||
} | ||
try { | ||
byteLength(buffer); | ||
return true; | ||
} catch (e) { | ||
return false; | ||
} | ||
} | ||
var byteLength = callBound('ArrayBuffer.prototype.byteLength', true) | ||
|| function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property | ||
var sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true); | ||
@@ -323,3 +315,5 @@ var $getTime = callBound('Date.prototype.getTime'); | ||
if (whichTypedArray(a) !== whichTypedArray(b)) { | ||
var aWhich = whichTypedArray(a); | ||
var bWhich = whichTypedArray(b); | ||
if ((aWhich || bWhich) && aWhich !== bWhich) { | ||
return false; | ||
@@ -344,6 +338,13 @@ } | ||
if (byteLength(a) !== byteLength(b)) { return false; } | ||
/* global Uint8Array */ | ||
return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel); | ||
} | ||
var aIsSAB = isSharedArrayBuffer(a); | ||
var bIsSAB = isSharedArrayBuffer(b); | ||
if (aIsSAB !== bIsSAB) { return false; } | ||
if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here | ||
if (sabByteLength(a) !== sabByteLength(b)) { return false; } | ||
return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel); | ||
} | ||
if (typeof a !== typeof b) { return false; } | ||
@@ -350,0 +351,0 @@ |
{ | ||
"name": "deep-equal", | ||
"version": "2.1.0", | ||
"version": "2.2.0", | ||
"description": "node's assert.deepEqual algorithm", | ||
@@ -38,4 +38,6 @@ "main": "index.js", | ||
"is-arguments": "^1.1.1", | ||
"is-array-buffer": "^3.0.1", | ||
"is-date-object": "^1.0.5", | ||
"is-regex": "^1.1.4", | ||
"is-shared-array-buffer": "^1.0.2", | ||
"isarray": "^2.0.5", | ||
@@ -49,7 +51,7 @@ "object-is": "^1.1.5", | ||
"which-collection": "^1.0.1", | ||
"which-typed-array": "^1.1.8" | ||
"which-typed-array": "^1.1.9" | ||
}, | ||
"devDependencies": { | ||
"@ljharb/eslint-config": "^21.0.0", | ||
"aud": "^2.0.1", | ||
"@ljharb/eslint-config": "^21.0.1", | ||
"aud": "^2.0.2", | ||
"auto-changelog": "^2.4.0", | ||
@@ -62,3 +64,3 @@ "eslint": "=8.8.0", | ||
"nyc": "^10.3.2", | ||
"object.getownpropertydescriptors": "^2.1.4", | ||
"object.getownpropertydescriptors": "^2.1.5", | ||
"safe-publish-latest": "^2.0.0", | ||
@@ -65,0 +67,0 @@ "semver": "^6.3.0", |
@@ -1162,3 +1162,2 @@ 'use strict'; | ||
t.test('one TypedArray faking as another', { skip: !hasDunderProto }, function (st) { | ||
/* globals Uint8Array, Int8Array */ | ||
var a = new Uint8Array(10); | ||
@@ -1222,2 +1221,3 @@ var b = tag(new Int8Array(10), 'Uint8Array'); | ||
// node < 0.11 has a nonconfigurable own byteLength property | ||
t.test('lies about byteLength', { skip: !('byteLength' in ArrayBuffer.prototype) }, function (s2t) { | ||
@@ -1241,3 +1241,64 @@ var empty4 = new ArrayBuffer(4); | ||
t.test('SharedArrayBuffers', { skip: typeof SharedArrayBuffer !== 'function' }, function (st) { | ||
var buffer1 = new SharedArrayBuffer(8); // initial value of 0's | ||
var buffer2 = new SharedArrayBuffer(8); // initial value of 0's | ||
var view1 = new Int8Array(buffer1); | ||
var view2 = new Int8Array(buffer2); | ||
st.deepEqualTest( | ||
view1, | ||
view2, | ||
'Int8Arrays of similar SharedArrayBuffers', | ||
true, | ||
true | ||
); | ||
st.deepEqualTest( | ||
buffer1, | ||
buffer2, | ||
'similar SharedArrayBuffers', | ||
true, | ||
true | ||
); | ||
for (var i = 0; i < view1.byteLength; i += 1) { | ||
view1[i] = 9; // change all values to 9's | ||
} | ||
st.deepEqualTest( | ||
view1, | ||
view2, | ||
'Int8Arrays of different SharedArrayBuffers', | ||
false, | ||
false | ||
); | ||
st.deepEqualTest( | ||
buffer1, | ||
buffer2, | ||
'different SharedArrayBuffers', | ||
false, | ||
false | ||
); | ||
t.test('lies about byteLength', { skip: !('byteLength' in SharedArrayBuffer.prototype) }, function (s2t) { | ||
var empty4 = new SharedArrayBuffer(4); | ||
var empty6 = new SharedArrayBuffer(6); | ||
Object.defineProperty(empty6, 'byteLength', { value: 4 }); | ||
s2t.deepEqualTest( | ||
empty4, | ||
empty6, | ||
'different-length SharedArrayBuffers, one lying', | ||
false, | ||
false | ||
); | ||
s2t.end(); | ||
}); | ||
st.end(); | ||
}); | ||
t.end(); | ||
}); |
Sorry, the diff of this file is not supported yet
79889
1489
17
+ Addedis-array-buffer@^3.0.1
+ Addedis-array-buffer@3.0.4(transitive)
+ Addedis-shared-array-buffer@1.0.3(transitive)
Updatedwhich-typed-array@^1.1.9