File tree Expand file tree Collapse file tree 2 files changed +47
-2
lines changed Expand file tree Collapse file tree 2 files changed +47
-2
lines changed Original file line number Diff line number Diff line change @@ -15,15 +15,26 @@ export default function diff(
15
15
type : "REMOVE" ,
16
16
path : [ key ] ,
17
17
} ) ;
18
- } else if ( obj [ key ] && typeof obj [ key ] === "object" ) {
18
+ } else if (
19
+ obj [ key ] &&
20
+ typeof obj [ key ] === "object" &&
21
+ ! ( obj [ key ] instanceof Date )
22
+ ) {
19
23
const nestedDiffs = diff ( obj [ key ] , newObj [ key ] ) ;
20
24
diffs . push (
21
25
...nestedDiffs . map ( ( difference ) => {
22
26
difference . path . unshift ( key ) ;
23
27
return difference ;
24
28
} )
25
29
) ;
26
- } else if ( obj [ key ] !== newObj [ key ] ) {
30
+ } else if (
31
+ obj [ key ] !== newObj [ key ] &&
32
+ ! (
33
+ obj [ key ] instanceof Date &&
34
+ newObj [ key ] instanceof Date &&
35
+ + obj [ key ] === + newObj [ key ]
36
+ )
37
+ ) {
27
38
diffs . push ( {
28
39
path : [ key ] ,
29
40
type : "CHANGE" ,
Original file line number Diff line number Diff line change
1
+ import { test } from "uvu" ;
2
+ import * as assert from "uvu/assert" ;
3
+ import diff from "../dist/index.js" ;
4
+
5
+ test ( "Handles equal dates" , ( ) => {
6
+ assert . equal ( diff ( { date : new Date ( 1 ) } , { date : new Date ( 1 ) } ) , [ ] ) ;
7
+ } ) ;
8
+ test ( "Handles unequal dates" , ( ) => {
9
+ assert . equal ( diff ( { date : new Date ( 1 ) } , { date : new Date ( 2 ) } ) , [
10
+ {
11
+ path : [ "date" ] ,
12
+ type : "CHANGE" ,
13
+ value : new Date ( 2 ) ,
14
+ } ,
15
+ ] ) ;
16
+ } ) ;
17
+ test ( "Handles value being a date and the other not" , ( ) => {
18
+ assert . equal ( diff ( { date : new Date ( 1 ) } , { date : "not date" } ) , [
19
+ {
20
+ path : [ "date" ] ,
21
+ type : "CHANGE" ,
22
+ value : "not date" ,
23
+ } ,
24
+ ] ) ;
25
+ assert . equal ( diff ( { date : "not date" } , { date : new Date ( 1 ) } ) , [
26
+ {
27
+ path : [ "date" ] ,
28
+ type : "CHANGE" ,
29
+ value : new Date ( 1 ) ,
30
+ } ,
31
+ ] ) ;
32
+ } ) ;
33
+
34
+ test . run ( ) ;
You can’t perform that action at this time.
0 commit comments