Skip to content

Commit

Permalink
Revert #4446 due to regression (#4478)
Browse files Browse the repository at this point in the history
Fixed #4475 by rolling back #4446
- In `@rjsf/utils` rolled back the changes made by #4446
- Updated the `CHANGELOG.md` accordingly
  • Loading branch information
heath-freenome authored Feb 4, 2025
1 parent 615a98c commit 096c0b4
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 27 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ should change the heading of the (upcoming) version to include a major version b
-->
# 5.24.3

## @rjsf/utils

- Rollback [4446](https://github.com/rjsf-team/react-jsonschema-form/pull/4446) due to regression

## Dev / docs / playground
- Fixed issue with selector, where validator was getting refreshed on clicking on anything in selector. [#4472](https://github.com/rjsf-team/react-jsonschema-form/pull/4472)

Expand Down
10 changes: 0 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion packages/utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
"react": "^16.14.0 || >=17"
},
"dependencies": {
"fast-equals": "^5.2.2",
"json-schema-merge-allof": "^0.8.1",
"jsonpointer": "^5.0.1",
"lodash": "^4.17.21",
Expand Down
29 changes: 13 additions & 16 deletions packages/utils/src/deepEquals.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
import { createCustomEqual } from 'fast-equals';
import isEqualWith from 'lodash/isEqualWith';

/** Implements a deep equals using the `fast-equals.createCustomEqual` function, providing a customized comparator that assumes all functions are equivalent.
/** Implements a deep equals using the `lodash.isEqualWith` function, that provides a customized comparator that
* assumes all functions are equivalent.
*
* @param a - The first element to compare
* @param b - The second element to compare
* @returns - True if the `a` and `b` are deeply equal, false otherwise
*/
const deepEquals = createCustomEqual({
createCustomConfig: () => ({
// Assume all functions are equivalent
// see https://github.com/rjsf-team/react-jsonschema-form/issues/255
//
// Performance improvement: knowing that typeof a === function, so, only needs to check if typeof b === function.
// https://github.com/planttheidea/fast-equals/blob/c633c4e653cacf8fd5cbb309b6841df62322d74c/src/comparator.ts#L99
areFunctionsEqual(_a, b) {
return typeof b === 'function';
},
}),
});

export default deepEquals;
export default function deepEquals(a: any, b: any): boolean {
return isEqualWith(a, b, (obj: any, other: any) => {
if (typeof obj === 'function' && typeof other === 'function') {
// Assume all functions are equivalent
// see https://github.com/rjsf-team/react-jsonschema-form/issues/255
return true;
}
return undefined; // fallback to default isEquals behavior
});
}

0 comments on commit 096c0b4

Please sign in to comment.