11import filter from "../object/filter.js" ;
22import none from "../object/none.js" ;
33
4+ import isDefined from "../is/defined.js" ;
45import isArray from "../is/array.js" ;
56import isDate from "../is/date.js" ;
67import isFunction from "../is/function.js" ;
@@ -26,11 +27,11 @@ const compareValues = (value1, value2) => {
2627 return VALUE_UNCHANGED ;
2728 }
2829
29- if ( "undefined" == typeof value1 ) {
30+ if ( ! isDefined ( value1 ) ) {
3031 return VALUE_CREATED ;
3132 }
3233
33- if ( "undefined" == typeof value2 ) {
34+ if ( ! isDefined ( value2 ) ) {
3435 return VALUE_DELETED ;
3536 }
3637
@@ -53,29 +54,31 @@ const diff = (obj1, obj2) => {
5354 }
5455
5556 const result = { } ;
57+
5658 for ( const key in obj1 ) {
5759 if ( isFunction ( obj1 [ key ] ) ) {
5860 continue ;
5961 }
6062
6163 let value2 = undefined ;
62- if ( "undefined" != typeof obj2 [ key ] ) {
64+
65+ if ( isDefined ( obj2 [ key ] ) ) {
6366 value2 = obj2 [ key ] ;
6467 }
6568
6669 result [ key ] = diff ( obj1 [ key ] , value2 ) ;
6770 }
71+
6872 for ( const key in obj2 ) {
69- if ( isFunction ( obj2 [ key ] ) || "undefined" != typeof result [ key ] ) {
73+ if ( isFunction ( obj2 [ key ] ) || isDefined ( result [ key ] ) ) {
7074 continue ;
7175 }
7276
7377 result [ key ] = diff ( undefined , obj2 [ key ] ) ;
7478 }
7579
7680 return filter (
77- value =>
78- value !== null && ! ( value && "object" === typeof value && none ( value ) )
81+ value => value !== null && ! ( value && isObject ( value ) && none ( value ) )
7982 ) ( result ) ;
8083} ;
8184
0 commit comments