Skip to content

Commit 0c5b21a

Browse files
committed
[Fix] use is-date-object to properly detect cross-realm Dates
- [Robustness] use a cached `Date.prototype.getTime`
1 parent de4e75c commit 0c5b21a

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ var isArguments = require('is-arguments');
33
var is = require('object-is');
44
var isRegex = require('is-regex');
55
var flags = require('regexp.prototype.flags');
6+
var isDate = require('is-date-object');
7+
8+
var getTime = Date.prototype.getTime;
69

710
function deepEqual(actual, expected, options) {
811
var opts = options || {};
@@ -63,8 +66,8 @@ function objEquiv(a, b, opts) {
6366
return a.source === b.source && flags(a) === flags(b);
6467
}
6568

66-
if (a instanceof Date && b instanceof Date) {
67-
return a.getTime() === b.getTime();
69+
if (isDate(a) && isDate(b)) {
70+
return getTime.call(a) === getTime.call(b);
6871
}
6972

7073
var aIsBuffer = isBuffer(a);

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
},
1717
"dependencies": {
1818
"is-arguments": "^1.0.4",
19+
"is-date-object": "^1.0.1",
1920
"is-regex": "^1.0.4",
2021
"object-is": "^1.0.1",
2122
"object-keys": "^1.1.1",

0 commit comments

Comments
 (0)