Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: improve deepEquals performance #4292

Merged
merged 5 commits into from
Sep 9, 2024

Conversation

igorbrasileiro
Copy link
Contributor

@igorbrasileiro igorbrasileiro commented Sep 9, 2024

Reasons for making this change

This PR improves the RJSF performance when comparing objects deeply.
fixes #4291

Checklist

  • I'm updating documentation
  • I'm adding or updating code
    • I've added and/or updated tests. I've run npx nx run-many --target=build --exclude=@rjsf/docs && npm run test:update to update snapshots, if needed.
    • I've updated docs if needed
    • I've updated the changelog with a description of the PR
  • I'm adding a new feature
    • I've updated the playground with an example use of the feature

@igorbrasileiro igorbrasileiro changed the title feat: improve deepEquals comparators feat: improve deepEquals performance Sep 9, 2024
Copy link
Member

@heath-freenome heath-freenome left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some documentation and then I'll approve

@igorbrasileiro
Copy link
Contributor Author

Added the JSDoc for new functions.

@heath-freenome
Copy link
Member

Can you also fix the merge conflict in the CHANGELOG.md? Otherwise looks good! How is the performance of fast-equals vs fast-deep-equals?

@igorbrasileiro
Copy link
Contributor Author

I pointed in the issue the performance of the customDeepEqual. But the results
image

The deepEqualsFunction

const customDeepEqual = createCustomEqual({
  createInternalComparator: (
    comparator: (a: any, b: any, state: State<any>) => boolean,
  ) => {
    return (
      a: any,
      b: any,
      _idxA: any,
      _idxB: any,
      _parentA: any,
      _parentB: any,
      state: State<any>,
    ) => {
      if (typeof a === "function" && typeof b === "function") {
        // Assume all functions are equivalent
        // see https://github.com/rjsf-team/react-jsonschema-form/issues/255
        return true;
      }

      return comparator(a, b, state);
    };
  },
});

@heath-freenome heath-freenome merged commit 514ea85 into rjsf-team:main Sep 9, 2024
5 checks passed
@benjdlambert
Copy link
Contributor

We seem to be getting test failures for this upgrade with maximum call stack exceeded backstage/backstage#26639 don't have time to put together a reproduction repo just now, but will try and get to it this week. Just a heads up for now.

@igorbrasileiro
Copy link
Contributor Author

@benjdlambert thank you for let me know about it. I will try to reproduce this error and fix it.

Does your props have circularity?

@igorbrasileiro
Copy link
Contributor Author

igorbrasileiro commented Sep 12, 2024

I discovered how to reproduce. I reverted the deepEquals fn and the problem happened, so the issue isn't the way the fast-equals compare, it was the refactor.

Edit: I was testing on a schema with issues in one of the anyOfs, I added a null option to the anyOf and the loop stopped (explanation here #4262).

@heath-freenome
Copy link
Member

@igorbrasileiro Is it possible to programmatically fix it such that the null option is unnecessary?

@igorbrasileiro
Copy link
Contributor Author

@heath-freenome I don't have enough context about the JSON schema spec and where to start investigating this issue, but I could implement a fix. I think my issue is different from that of @benjdlambert .

Regarding the issue related to this PR, I haven't found a way to reproduce it. Do you know or have a hint?

@heath-freenome
Copy link
Member

heath-freenome commented Sep 12, 2024

@igorbrasileiro I know that @nickgros is working on an issue related to this where certain schemas cause an infinite recursion. At the same time, I wonder if your deep comparison changes are affecting a situation where isEqual() returns a value that differs from deepEquals() thereby causing infinite recursion where it was caught before. For your situation at least, if you could debug the before/after results to see how isEqual() vs deepEquals() causes the algorithms around infinite recursion to change, and then either fixing it (if you clearly introduced a bug) or reaching back out if it doesn't make sense to you...

@igorbrasileiro
Copy link
Contributor Author

igorbrasileiro commented Sep 12, 2024

Sure, that sounds good to me. What do you think about reverting this PR, then I try to find the issue and reimplement it with the fix?

Edit: Would be good to know how to reproduce the issue.

@heath-freenome
Copy link
Member

Sure, that sounds good to me. What do you think about reverting this PR, then I try to find the issue and reimplement it with the fix?

Edit: Would be good to know how to reproduce the issue.

@igorbrasileiro That makes sense... Can you push the PR and then also, work on fixing the problem you experienced. I agree understanding the problem would be super helpful. It's clear that you already have one use case to start with.

@benjdlambert Can you provide us with your schema as well to help us debug.

@nickgros If you get a chance to figure out the infinite recursion issue you are working on, feel free to chime in.

igorbrasileiro added a commit to igorbrasileiro/react-jsonschema-form that referenced this pull request Sep 13, 2024
heath-freenome pushed a commit that referenced this pull request Sep 13, 2024
* Revert "feat: improve deepEquals performance (#4292)"

This reverts commit 514ea85.

* package.json
@benjdlambert
Copy link
Contributor

benjdlambert commented Sep 16, 2024

The schemas in the tests were pretty trivial to be honest, I tried to replicate this in a small codesandbox, and think it might have been to do with the fact that the formData might have had some cyclical references in there.

There's an example here: https://codesandbox.io/p/sandbox/n6txcy so if you try and edit the form data it would break.

Granted this example is not really what you would actually do, but it was something that i could replicate the example with. I was trying to find a better way to reproduce this, as it looks like on first render it might be fine, but when it's re-rendered for some reason it causes issues with the lookup, which kind of aligns with what we were seeing in our test suite that all the things looked pretty sane, but when updating the form it hit the maximum call stack exceeded.

Sorry I can't be of much more help right now :( If I can get some more free time I can try and get a better repro example

@igorbrasileiro
Copy link
Contributor Author

igorbrasileiro commented Sep 16, 2024

@benjdlambert thank you for the codesandbox!

Changing the onChange function from your example to follow the docs, the error stops.

        onChange={(e) => {
-         setFormState(e);
+         setFormState(e.formData);
        }}

@heath-freenome can you give your considerations here? Adding the whole object received from onChange fn causes cyclic references, as far as I know this is not expected.

@igorbrasileiro
Copy link
Contributor Author

@heath-freenome as it seems to be a wrong usage of the form, can I revert the revert #4300 ? I'm considering that is not allowed pass props with cyclic reference. If is allowed I can setup the customcomparator from fast-equals to check if cyclic reference.

@benjdlambert
Copy link
Contributor

benjdlambert commented Sep 18, 2024

@igorbrasileiro I'm not convinced that crashing because of circular references in any of the props is great to be honest. I wonder if there's a way to drop the circular references ahead of the diffing or something.

I mentioned in my reproduction Granted this example is not really what you would actually do. We use just e.formData but this was still happening to us in our test cases, was just a quick way I could put together the error.

Let me see if I can get some time today to dig into what is actually happening in the broken version, as when I was debugging our tests the props that we were using looked pretty simple and we're not using cyclical references to what I could see.

igorbrasileiro added a commit to igorbrasileiro/react-jsonschema-form that referenced this pull request Sep 20, 2024
@igorbrasileiro
Copy link
Contributor Author

igorbrasileiro commented Sep 20, 2024

We use just e.formData but this was still happening to us in our test cases, was just a quick way I could put together the error.

@benjdlambert can you share the schema and formData from your test? I only get maximum call stack size exceeded with a schema with loop, but it also crashed using the form in the previous version.

Environment to reproduce, using deno, https://github.com/igorbrasileiro/rjsf-form-issue

formData: {}, schema:

{
  "definitions": {
    "first": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "children": { "$ref": "#/definitions/second" }
      }
    },
    "second": {
      "type": "object",
      "properties": {
        "name2": { "type": "string" },
        "children": { "$ref": "#/definitions/first" }
      }
    }
  },
  "$ref": "#/definitions/first"
}

heath-freenome added a commit that referenced this pull request Feb 6, 2025
* fix(utils): direct lodash function import to improve bundling on library client side (#3976)

* v5.14.3 (#3979)

* add missing typescript project reference for utils in validator-ajv6 and validator-ajv8 (#3982)

* fix: #3961 resolve all recurse list for object properties (#3981)

* fix: resolve all recurse list for object properties

* update test

* simplfy logic

* revert

* update change log

* Add the ability to parse defaults from `allOf` schema (#3969)

* feat: support default values in anyOf format

* feat: add `skipDefaults` and `populateDefaults` options for `allOf` parsing

* docs: add examples

* chore: ammending chanelog

* mui: fix gap in outline when label is hidden (#3984)

* mui: fix gap in outline when label is hidden

Passing `label={false}` to the MUI text/select widgets results in a
gap in the widget outline where the label would be.  Instead, to hide
the label without a gap, we must pass `label={undefined}`.

This commit changes the calls to `labelValue(...)` for
BaseInputTemplatea and SelectWidget to return `undefined` when
`"ui:label": false` was specified.

* mui: update test snapshots

* Release 5.15.0 (#3986)

* - Fixup `CHANGELOG.md` to merge 5.14.4 into 5.15.0

* v5.15.0

* Make getFieldNames correctly defines array of primitives (#3990)

* Fix: Expose the internal `ajv` variable in the validator implementation classes (#3991)

* Fix: Expose the internal `ajv` variable in the validator implementation classes
Fixes: #3972 indirectly by exposing the `ajv` variable for use in the issue
- In `@rjsf/ajv6`, updated `AJV6Validator` to make the `ajv` variable public and changed the return of the `customizeValidator()` function to remove the interface return
- In `@rjsf/ajv8`, updated `AJV8Validator` to make the `ajv` variable public and changed the return of the `customizeValidator()` function to remove the interface return
  - Also removed some `@ts-expect-error` tags that are no longer needed due to the exposed variable
- Updated the `CHANGELOG.md` accordingly

* - Responded to reviewer feedback

* v5.15.1 (#3997)

* feat: pass down indexed title from array field (#4002)

* feat: pass indexed title from array field to use as title in children if present

* docs: add changelog

* test: add test for checkbox widget

* test: add test for remaining widgets

* test: add test for object, array, oneof and anyof fields

* test: add test for allof field

* refactor: move repetitive task to one function and run it on array data

* chore: change version changelog according to the changes made

* test: fix allof field test case

* chore(deps): bump actions/download-artifact from 3 to 4

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore(deps): bump actions/setup-python from 3 to 5

Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v3...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore(deps): bump actions/upload-artifact from 3 to 4

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore(deps-dev): bump vite from 4.4.9 to 4.4.12

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.9 to 4.4.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.4.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.4.12/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>

* Feat: Implements #297 request (#4004)

* [Feat] Add Date re-order option

* Added tests for date re-order

* Updated docs and example

* Update changelog

* Added documentation for getDateElementProps function

* Fix: test failing due to year change

* Removed redundant parameters info

* chore: Bumped packages using `npm run bump-all-packages` (#4006)

* Fix: Bumped packages using `npm run bump-all-packages`

- Temporarily locked down "@mui/material": "5.15.2" and "@mui/base": "5.0.0-beta.28" due to https://github.com/mui/material-ui/issues/40427

* - Responded to reviewer feedback by removing an added dev-dependency that seems unnecessary

* Update Form.tsx and make submit method public (#4029)

* Update Form.tsx and make submit method public

* Update Form.tsx and make submit public

* Update CHANGELOG.md and add an entry for submit method changes

* Update CHANGELOG.md

---------

Co-authored-by: Heath C <[email protected]>

* Fix: Change FormHelperText usage with @mui/material to render divs (#4032)

Fixes #4031 by switching the render component for `FormHelperText` to be `div`
- In `@rjsf/mui`, updated `FieldErrorTemplate` and `FieldHelpTemplate` to use the `div` component for `FormHelperText`

* Support file deletion for data-url (#4030)

* Release 5.16.0 (#4037)

* Merged the `5.15.2` change up into the `5.16.0` change since `5.15.2` was never released

* v5.16.0

* Release 5.16.1 (#4041)

* Releasing 5.16.1 with bumped peer dependencies

* v5.16.1

* Enhancement(Share): Enhancement base64 encoding/decoding using UTF-8 charset to support the characters outside the latin1 range. (#4024) (#4034)

* Enhancement(Share): Declare and export an object that provides base64 encoding and decoding functions using the utf-8 charset to support the characters outside the latin1 range. (#4024)

* Enhancement(Share): Add the 'base64.test.ts' to test the base64. (#4024)

* Enhancement(Share): Update the base64 reference in 'Playground' to the new customized base64 in 'utils' (#4024).

* Enhancement(Share): Update 'CHANGELOG.md' (#4024).

* Enhancement(Share): Update 'CHANGELOG.md' (#4024).

* Enhancement(Share): Add test to test the platform behavior (#4024).

* Enhancement: Fix comments and updating utility-functions.md to add introduction of base64 object

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update base64.ts

* fix: Added support for anyOf/oneOf in uiSchema (#4055)

Fixes #4039 by updating `MultiSchemaField` to properly support `anyOf`/`oneOf` arrays in the `uiSchema`
- In `@rjsf/utils`: Improved documentation and typescript ignores in tests related to `base64` from previous PR
- In `@rjsf/core`: Updated `MultiSchemaField` to support `anyOf`/`oneOf` arrays in the `uiSchema`
  - Updated the tests to verify the new feature
- In `docs`: Added documentation to the `uiSchema.md` file describing how to use the new feature
- Updated the `CHANGELOG.md` accordingly

* chore(deps-dev): bump vite from 4.5.1 to 4.5.2

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.1 to 4.5.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>

* Fix checkbox with 0 as a value was unselectable in antd (#4068)

* fix: Added support for anyOf/oneOf in uiSchema
Fixes #4039 by updating `MultiSchemaField` to properly support `anyOf`/`oneOf` arrays in the `uiSchema`
- In `@rjsf/utils`: Improved documentation and typescript ignores in tests related to `base64` from previous PR
- In `@rjsf/core`: Updated `MultiSchemaField` to support `anyOf`/`oneOf` arrays in the `uiSchema`
  - Updated the tests to verify the new feature
- In `docs`: Added documentation to the `uiSchema.md` file describing how to use the new feature
- Updated the `CHANGELOG.md` accordingly

* Fix checkbox with 0 as a value was unselectable in antd
Fixed #4067 by properly dealing with enums that have 0 as a value
- In `@rjsf/utils`: Updated `enumOptionsValueForIndex()` to filter against `emptyValue` rather than just truthy
  - Updated the tests to verify the bug and then validate the fix
- Updated the `CHANGELOG.md` accordingly

* Fix potential XSS in the preview button of FileWidget (#4065)

* fix dataURI parsing mechanism

* Restrict image preview file types

* Make broken files be ignored

* Update changelog

* Refactor image preview whitelist, add comments, and fix tests

* fix the way of error handling

to pass the coverage test

* Update packages/core/src/components/widgets/FileWidget.tsx

Co-authored-by: Heath C <[email protected]>

---------

Co-authored-by: Heath C <[email protected]>

* docs: update link to markdown-to-jsx homepage (#4071)

Co-authored-by: Heath C <[email protected]>

* Release 5.17.0 (#4073)

* - Fixed `CHANGELOG.md` to make it a minor version update
- Bumped the packages using `bump-all-packages`
  - Updated the tests for `antd` and `fluentui-rc` due to packages bump

* v5.17.0

* Fix: Make 'ui:rows' option work with chakra-ui for textarea elements #4070 (#4078)

* Fix typo in ErrorsListTemplate example (#4087)

Co-authored-by: Heath C <[email protected]>

* Fix #4080 by moving `base64` encoder/decoder from `@rjsf/utils` to playground (#4093)

* Pass errorSchema from ArrayField to ArrayFieldTemplate (#4094)

* Pass errorSchema from ArrayField to ArrayFieldTemplate

* Update CHANGELOG.md

* v5.17.1 (#4096)

* Feat: don't assign a default value of an empty field. (#3880) (#4085)

* Added skipEmptyDefaults feature

* Fixed an issue where the skipEmptyDefault option was not displaying default values for fields that are not required.

* Updated tests and the changelog

* Updated changelog: moved chakra-ui changes above utils.

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>

* chore(deps-dev): bump ip from 2.0.0 to 2.0.1

Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* Fix: Error state not resetting when schema changes (#4079) (#4103)

* #4079 Fixed the issue where the error state was not resetting when the schema changed.

* #4079 Updated the changelog

* #4079 Improved previous and new schema check

* #4079 Added test

* #4079 improved test

* #4079 removing console.log

* Apply suggestions from code review

- Accepted reviewer feedback

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Heath C <[email protected]>

* Fix noImplicitAny error (#4106)

Co-authored-by: Heath C <[email protected]>

* Update validation docs with correct require statement (#4108)

Co-authored-by: Heath C <[email protected]>

* Fixes: [WARNING] Duplicate key "include" in object literal [duplicate-object-key] (#4114)

* Fixes: Warning: validateDOMNesting(...): <p> cannot appear as a descendant of <p>. (#4117)

* give instructions for material ui 5, not 4 (#4126)

* Fix documentation to add missing Form imports (#4131)

Fix #4127 to add missing `Form` import in documentation
- Updated many of the documentation files to add missing imports of `Form`
- Updated the `CHANGELOG.md` accordingly

Co-authored-by: Kevin Burnett <[email protected]>

* Fix: filename should be bold (#4125)

* Fix: filename should be bold

Also prevents horrible looking "\</strong>" from being printed on screen.

* Update CHANGELOG.md

* Skip populate function proposal in Experimental_ArrayMinItems (#4121)

* skip populate draft

* Added a new `computeSkipPopulate` option in `arrayMinItems`, allowing custom logic to skip populating arrays with default values

* Add example in documentation of computeSkipPopulate

* Update packages/docs/docs/api-reference/form-props.md

Co-authored-by: Heath C <[email protected]>

* Update packages/utils/src/types.ts

Co-authored-by: Heath C <[email protected]>

* Update packages/docs/docs/api-reference/form-props.md

Co-authored-by: Heath C <[email protected]>

---------

Co-authored-by: Marek Bodinger <[email protected]>
Co-authored-by: Heath C <[email protected]>

* Fix: use correct ConfigProvider context by using named imports (#4132)

Co-authored-by: Mehdi Salem <[email protected]>
Co-authored-by: Heath C <[email protected]>

* Fix 4134 by filtering out bad DOM props (#4140)

Fixes: #4134 by updating the spreading of props onto the `TextField` to remove bad DOM fields
- In `@rjsf/mui`, updated `SelectField` and `BaseInputTemplate` to filter out `errorSchema` and `autocomplete` from the `textFieldProps` before they are spread onto `TextField`
- Updated `CHANGELOG.md` accordingly, moving `@rjsf/antd` above `@rjsf/core`

* v5.18.0 (#4141)

* chore(deps): bump follow-redirects from 1.15.5 to 1.15.6

Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* Release 5.18.1 (#4145)

* - Bumped peer dependencies due to new feature

* v5.18.1

* - Removed unnecessary `package-lock.json` in `fluentui-rc` theme

* chore(deps-dev): bump vite from 4.5.2 to 4.5.3

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.2 to 4.5.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.3/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore(deps): bump express from 4.18.2 to 4.19.2

Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore(deps): bump webpack-dev-middleware from 5.3.3 to 5.3.4

Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* #3121 Fixed Programmatic submit not working properly in Firefox (#4150)

Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Heath C <[email protected]>

* Fix Maximum call stack size exceeded in findSchemaDefinition (#4123)

* Add tests for circular and deeply circular refs in definitions

* Fix Maximum call stack size exceeded in findSchemaDefinition

* Update CHANGELOG

* Add tests for findSchemaDefinitionRecursive

* v5.18.2 (#4157)

* Upgrades React  (#4107)

* Upgrades react packages

* Updates semantic-ui-react

* Add support back for semantic version 1 via peerdependencies (#4169)

- In `@rjsf/semantic-ui` - added back `semantic-ui-react` version `^1.3.1` to the peer dependencies
  - Also made `semantic-ui-react` a devDependency for `^2.1.3`
- In the playground, added `[email protected]` due to the transition of `semantic-ui-react` as a devDependency
- Updated `CHANGELOG.md` accordlingly

* Create codeql.yml (#4170)

* Update LICENSE.md (#4174)

* Update LICENSE.md

Dear rsjf-team, I have a request. We are using the great rjsf packages to build a forms solution for a company. This company requires a copyright notice in the license file. Could you please replace the example copyright notice by a copyright of your team. I know it is strange at that location, but it would solve our problems.

Examples where they added names at that location in the license file:

- https://github.com/eisberg-labs/actix-actor-expect/blob/c28e751d219535c3d4d2b5579ddd281440e5ea87/LICENSE-APACHE#L4
- https://github.com/Swiftify-Corp/Swift-30-Projects/blob/5140f35ca0cb3767807bc518084809030a77139a/License.md?plain=1#L4

* Update LICENSE.md

- Added the start date from when the repo was created

---------

Co-authored-by: Heath C <[email protected]>

* Update custom-widgets-fields.md (#4171)

Co-authored-by: Heath C <[email protected]>

* chore(deps-dev): bump gh-pages from 3.2.3 to 5.0.0

Bumps [gh-pages](https://github.com/tschaub/gh-pages) from 3.2.3 to 5.0.0.
- [Release notes](https://github.com/tschaub/gh-pages/releases)
- [Changelog](https://github.com/tschaub/gh-pages/blob/main/changelog.md)
- [Commits](https://github.com/tschaub/gh-pages/compare/v3.2.3...v5.0.0)

---
updated-dependencies:
- dependency-name: gh-pages
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>

* Release 5.18.3 (#4175)

* - Updated `CHANGELOG.md` to account for a few PRs

* v5.18.3

* Add missing angle bracket (#4178)

* fix typos in constants.ts, Form.tsx (#4185)

* fix typos in constants.ts, Form.tsx

* keep the constants to for backwards compatibility

Co-authored-by: Heath C <[email protected]>

---------

Co-authored-by: Heath C <[email protected]>

* chore(deps): bump mkdocs from 1.5.3 to 1.6.0

Bumps [mkdocs](https://github.com/mkdocs/mkdocs) from 1.5.3 to 1.6.0.
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.3...1.6.0)

---
updated-dependencies:
- dependency-name: mkdocs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore(deps-dev): bump ejs from 3.1.9 to 3.1.10

Bumps [ejs](https://github.com/mde/ejs) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](https://github.com/mde/ejs/compare/v3.1.9...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* v5.18.4 (#4195)

* feat: treat default field in additionalProperties (#4199)

* feat: treat "default" in additionalProperties

* test: add test cases for the case there's a default in additionalProperties

* Passes missing uiSchema prop to Form component. (#4219)

* Remove duplicate mention of hideError (#4211)

Co-authored-by: Nick Grosenbacher <[email protected]>

* Fix mui imports in docs (#4218)

Co-authored-by: Nick Grosenbacher <[email protected]>

* [fix] Resetting number fields should check the entire string when deciding to leave the input text alone (#4202) (#4220)

* chore(deps): bump ws from 7.5.9 to 7.5.10

Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore(deps): bump braces from 3.0.2 to 3.0.3

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bug: Fixed performance issue with large schema dependencies and oneOf (#4203) (#4204)

* Fixed performance issue #4203

* code improvement based on feedback

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Heath C <[email protected]>

* Handle undefined target in onBlur and onFocus handlers (#4227)

There are some instances where the `onBlur` and `onFocus` handlers are receiving an undefined `target`, causing the following type error:
```
Cannot read properties of undefined (reading 'value')
```
- Updated all of the `onBlur()` and `onFocus()` handlers in all libraries to fix this
- Updated the `CHANGELOG.md` accordingly

* fix(core): field ui-options higher priority (#4212)

* fix(core): field ui-options higher priority

* docs(root): changelog

* Update CHANGELOG.md

---------

Co-authored-by: Heath C <[email protected]>

* Release 5.18.5 (#4230)

* - Fixed spelling mistake for `rjsf` in `CHANGELOG.md`

* v5.18.5

* fix(antd): disabled property of options of antd theme (#4216)

* fix: disabled property of options in CheckboxesWidget and RadioWidget of antd theme

* chore: update CHANGELOG.md for #4216

* chore: update formTests

* chore: update PULL_REQUEST_TEMPLATE.md for test

* Update CHANGELOG.md

---------

Co-authored-by: Heath C <[email protected]>

* fix: omitExtraData on submit and on validateForm (#4228)

* fix: omitExtraData on submit and on validateForm

* test: update tests for omitExtraData

* ci: update changelog

* Update CHANGELOG.md

Co-authored-by: Heath C <[email protected]>

* Apply suggestions from code review

Co-authored-by: Heath C <[email protected]>

* docs: update changelog

---------

Co-authored-by: Heath C <[email protected]>

* Fix IdSchema and PathSchema types (#4196)

* Fix IdSchema and PathSchema types

* Simplify type assertions

---------

Co-authored-by: Heath C <[email protected]>

* SchemaField: Only use nullish coalescing with uiOptions when computing readonly (#4238)

fixes #4236

* v5.18.6 (#4237)

* (feature) Add new relative Years feature to AltDateWidget (#4239)

* (feature) Add new relative Years feature to AltDateWidget
Added a new feature supporting relate Years and reversing Years ordering to `AltDateWidget`
- In `@rjsf/utils`
  - Refactored and improved the `dateRangeOptions()` function from all implementations of `AltDateWidget`
  - Added 100% unit tests for the new function
- In `@rjsf/antd`, `@rjsf/chakra-ui` and `@rjsf/core` replaced `rangeOptions()` with `dateRangeOptions()`
- In `docs`, added documentation for `dateRangeOptions()` to the `utility-functions.md` and feature documentation to `widgets.md`
- Updated the `CHANGELOG.md` accordingly

* Update packages/core/test/StringField.test.jsx

- Responded to reviewer feedback

Co-authored-by: Nick Grosenbacher <[email protected]>

---------

Co-authored-by: Nick Grosenbacher <[email protected]>

* v5.19.0 (#4240)

* Bumped peer dependencies to 5.19.x due to new API used from utils (#4241)

Since other repos required a new API in `utils` we need to bump peer dependencies
- Ran `npm run bump-peer-deps` and committed changes
- Updated the `CHANGELOG.md` accordingly

* Release 5.19.1 (#4242)

* - Fixed peer deps package-lock.json

* v5.19.1

* Removed .only on a core test (#4243)

One of the `core` tests was accidentally left as `.only`, undoing that as well as bumping most of the minor and patch package updates
- Updated `StringField.test.jsx` to remove a `.only`
- Centralized `esbuild` down to the main `package.json`
- Updated the `CHANGELOG.md` accordingly

* v5.19.2 (#4245)

* Fix #4197 in various themes by showing empty option in SelectWidget when appropriate (#4200)

* Release 5.19.3 (#4247)

* Fixed `CHANGELOG.md` to restore 5.19.2

* v5.19.3

* feature: Added better support for testing with AJV having discriminator option turned on (#4257)

* feature: Added better support for testing with AJV having discriminator option turned on
A recent issue made it clear that we didn't make it easy for users to turn on `discriminator` support from AJV
- In `@rjsf/utils` improved support for `discriminator` as follows:
  - Updated the `ValidatorType` to add support for an optional `reset()` method
  - Updated the `ParserValidator` to implement `reset()` to clear the schema map, including a test to verify that
  - Updated the tests that used `discriminator` to remove the `mapping` block that AJV doesn't support
  - Updated the `getFirstMatchingOption()` test to deal with the situation where AJV doesn't support discriminator for array types
  - Updated the `retrieveSchema()` test to call `reset()` on validators that have it in an `afterEach()`
  - Updated the `getTestValidator()` implementation to implement a `reset()` that empties the arrays
- In `@rjsf/validator-ajv8` improved support for `discriminator` as follows:
  - Updated the `createAjvInstance()` function to denote that we want to make `discriminator: true` the default in v6
  - Updated the `AJV8Validator` to make reset do `ajv.removeSchema()` to clear the cached schemas
  - Updated the `getTestValidator() implementation to call `reset()` on the validator if it exists
  - Updated the `schema.test.ts` file to run a set of test with `discriminator: true` set on the `AJV8Validator`
- Updated the `CHANGELOG.md` file accordingly

* - Added required for `code` to all of the schemas

* - Switched the default Translatable strings to use Markdown

* fix: xss when rendering schema errors (#4256)

* fix: stop rendering config errors as html

* Update CHANGELOG.md

* Update UnsupportedField.tsx

* Fix formatting

* Update packages/core/src/components/templates/UnsupportedField.tsx

* Update CHANGELOG.md

* Update <SchemaField> to match

* - Fix lint error

* Update CHANGELOG.md

- Updating to mention potential breaking change

---------

Co-authored-by: Heath C <[email protected]>

* v5.19.4 (#4258)

* Feat: Allow raising errors from within a custom whatever(#2718) (#4188)

* #2718 feature - raise errors from within fields

* fixed failing tests

* Fixed failing build

* Removing raiseError message and errorSchema is updated now using the onChange.

* reverting tests

* Filtering errors based on your retrieved schema to only show errors for properties in the selected branch.

* fixed issue with typing causing build failures.

* Improvement based on feedback

* improvement based on feedback and written test for custom widget

* documenting the feature

* docs improvement base on feedback

* removed empty line

* fixed lodash import

* Update packages/core/src/components/Form.tsx

Ordered lodash import

* Update packages/core/src/components/Form.tsx

* Update CHANGELOG.md

Added missing packages

* Update CHANGELOG.md

Added missing space

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Heath C <[email protected]>

* fix 4215 and 4260 by updating optionsList() to take a uiSchema (#4263)

* fix 4215 and 4260 by updating optionsList() to take a uiSchema
Fixes #4215 and #4260 by supporting alternate titles for enums and anyOf/oneOf lists via the uiSchema

- In `@rjsf/utils` added support for alternate option labels from the `UiSchema` as follows:
  - Updated `UIOptionsBaseType` to add the new `enumNames` prop to support an alternate way to provide labels for `enum`s in a schema
  - Updated `optionsList()` to take an optional `uiSchema` that is used to extract alternate labels for `enum`s or `oneOf`/`anyOf` in a schema
    - NOTE: The generics for `optionsList()` were expanded to add `T = any, F extends FormContextType = any` to support the `UiSchema`
    - Added unit tests to maintain 100% coverage
- In `@rjsf/core` updated `ArrayField`, `BooleanField` and `StringField` to call `optionsList()` with the additional `UiSchema` parameter
- In `docs` added documentation about the new `ui:enumNames` property, fixing up the `enumNames` documentation to indicate it WILL be removed
  - Also updated the `optionsList()` function's documentation to add the new `uiSchema` prop
- Updated the `CHANGELOG.md` accordingly

* Update packages/utils/test/optionsList.test.ts

Fix typo in test name

---------

Co-authored-by: Nick Grosenbacher <[email protected]>

* v5.20.0 (#4264)

* Release 5.20.1 (#4268)

* Release 5.20.1
- Updated the peer dependencies to 5.20.x

* v5.20.1

* Fixed Changelog (#4269)

* Bug: issue with dependencies computeDefaults (#4271) (#4282)

* Fixed issue with dependencies computedDefaults

* update changelog

* refactoring based on feedback

* created tests for the new created methods

* organized file based on feedback

* Update CHANGELOG.md

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Heath C <[email protected]>

* feat: improve deepEquals performance (#4292)

* Change fast-deep-equal to fast-equals

* Add changelog and change deepEquals depscription

* run cs-format

* Add JSDocs for isFunctions and customDeepEqual

* Update CHANGELOG.md

---------

Co-authored-by: Heath C <[email protected]>

* fix querySelector in Form focusOnError when id includes dots (#4280)

Co-authored-by: Heath C <[email protected]>

* Fix 4283 by adding support for MUI v6 (#4294)

* Fix 4285 by adding support for MUI v6
- Updated `@rjsf/mui` to update the dev dependencies for `@mui/*` to v6 and the peer dependencies to add MUI v6
- Updated the playground to update `@mui/*` to v6
  - Also changed the dropdown name from `material-ui-5` to `mui` and switched `Layout` to use the `PropsWithChildren` for its props
  - Updated the `Form.test.tsx` to add information to the fake node to allow the tests to work with v6
  - Ran `npm run test:update` to update the snapshots due to the v6 and emotion upgrades
- Updated the test snapshots for `@rjsf/chakra-ui` which also uses emotion
- Updated `CHANGELOG.md` accordingly, bumping to `5.21.0`

* - Fixed the load of shared links to convert `material-ui-5` to `mui`

* chore(deps): bump mkdocs from 1.6.0 to 1.6.1

Bumps [mkdocs](https://github.com/mkdocs/mkdocs) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.6.0...1.6.1)

---
updated-dependencies:
- dependency-name: mkdocs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* v5.21.0 (#4295)

* Revert "feat: improve deepEquals performance (#4292)" (#4300)

* Revert "feat: improve deepEquals performance (#4292)"

This reverts commit 514ea85826ebfe48f5827b44f9daced5bff0bc47.

* package.json

* v5.21.1 (#4301)

* fix: Improved the widget/field customization docs (#4302)

* fix Improved the widget/field customization docs
Updated the widget and field customization docs to add examples of wrapping a widget/field to adjust props

* Apply suggestions from code review

- Responded to reviewer feedback

Co-authored-by: Nick Grosenbacher <[email protected]>

---------

Co-authored-by: Nick Grosenbacher <[email protected]>

* Fix: Pass required props to anyof/oneof field components (#4303)

* Chore: Updating changelog with missing info (#4309)

Updated `CHANGELOG.md` to add details for the simple fix provided in #4303

* fix: deal with null objects in errors in Form.filterErrorsBasedOnSchema() (#4310)

* fix: deal with null objects in errors in Form.filterErrorsBasedOnSchema()
Fixes #4306 by using `lodash.isNil()` instead of comparing to `undefined`
- Updated `Form.filterErrorsBasedOnSchema()` to use lodash `isNil()` to check if the key is either null or undefined
- Updated the `CHANGELOG.md` accordingly

* - Made name more correct

* fix: not merge the `allOf.contains` schemas

* feat: Support array numbers in pathOfError for ErrorSchemaBuilder

* Update CHANGELOG.md (#4317)

* Refactor: delete unused variable (#4320)

Co-authored-by: Dmitry Khomichenko <[email protected]>

* v5.21.2 (#4323)

* Fix typo L12n -> L10n (#4332)

* experimental_customMergeAllOf (#4308)

* experimental_customMergeAllOf draft

* Add test for experimental_customMergeAllOf

* Add documentation for experimental_customMergeAllOf

* Changelog update

* Add changelog v2

---------

Co-authored-by: Marek Bodinger <[email protected]>

* Make fields with const pre-fiiled and readonly #3843 (#4326)

* Make fields with const pre-fiiled and readonl

* fixed issue with default on root level.

* fixed array const populate values

* fixed array issue and written tests to cover the behavior

* updated changeLog

* fixed issue with core failing tests.

* changed changeLog to rerun tests

* improvement based on feedback

* Update packages/utils/test/schema/getDefaultFormStateTest.ts

Adding default that should not be used

* Update packages/utils/test/schema/getDefaultFormStateTest.ts

Fix linter

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Heath C <[email protected]>

* Fix: made small changes to utility functions to fix #3997, #4314 and #4322 (#4329)

* Fix: made small changes to utility functions to fix #3997 and #4322
Fixes #3997 and #4322
- In `@rjsf/utils`, made the following changes:
  - Updated `mergeDefaultsWithFormData()` to not overwrite a default when the formData has an undefined value
  - Updated `getClosestMatchingOption()` to improve the scoring function so that an object container that matches a key gets an extra point
- In `@rjsf/core`, updated `MultiSchemaField` to call `onChange` after setting the new option in state rather than before
- Updated the `CHANGELOG.md` accordingly

* - In order to avoid regressions, added a new `mergeDefaultsWithFormData` prop to the `Experimental_DefaultFormStateBehavior`
- Updated `mergeDefaultsWithFormData()` to add new optional `defaultSupercedesUndefined` that when true uses the defaults rather than `undefined` formData
- Updated `getDefaultFormState()` to pass true to `mergeDefaultsWithFormData` for `defaultSupercedesUndefined` when `mergeDefaultsIntoFormData` has the value `useDefaultIfFormDataUndefined`
- Updated the documentation for the new capabilities
- Updated the playground to add controls for the new `mergeDefaultsIntoFormData` option
  - moved the `Show Error List` component over one column, making it inline radio buttons rather than a select

* - Improved documentation a teeny bit

* - More doc improvements

* - Responded to reviewer feedback

* - Fixed broken links

* - Added section header for wrapping BaseInputTemplate

* - Updated CHANGELOG.md

* v5.22.0 (#4341)

* Release 5.22.1 (#4342)

* Release 5.22.1 with bumped peer deps

* v5.22.1

* Bug: Validation regression Form not revalidating after formData change (#4343) (#4345)

* fixed regression

* Updating changelog

* improvement based on feedback

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>

* fix: Validation error messages are inconsistent #4348 (#4349)

* fix: replace message field with title or ui:title correctly

* fix: add new changelog section & add description

* chore: removed extra empty line

---------

Co-authored-by: Heath C <[email protected]>

* fix: multiple file upload issue (#4347)

* fix: multiple file upload issue

Resolved a bug where only the first file was uploaded when multiple files were selected. Now, all selected files are uploaded as expected.

* feature: Added test to check the expected behaviour

* Fix: Move entry of changelog to version 5.22.2

---------

Co-authored-by: Heath C <[email protected]>

* v5.22.2 (#4353)

* Bug: Deep nested dependencies issue with assigning values to formData (#4356)

* Fix deep nested dependencies issue with formData

* update changelog

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>

* v5.22.3 (#4358)

* chore(deps): bump crazy-max/ghaction-github-pages from 4.0.0 to 4.1.0

Bumps [crazy-max/ghaction-github-pages](https://github.com/crazy-max/ghaction-github-pages) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/crazy-max/ghaction-github-pages/releases)
- [Commits](https://github.com/crazy-max/ghaction-github-pages/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-github-pages
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bug: Issue 'Maximum call stack size exceeded' with playground share. (#4370)

* Fix issue 'Maximum call stack size exceeded' with playground share with large content.

* update changelog

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>

* Bug: Issue with array schema defaults not applying properly when formData is an empty array (#4359)

* Fixed issue with array schema defaults not applying properly when formData is an empty array.

* improvement based on feedback

* fixed docs error

---------

Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Heath C <[email protected]>

* v5.22.4 (#4373)

* Adding feature to support const as default bug fix seeming like a regression (#4381)

Fixes #4344, #4361 and #4377
- In `@rjsf/utils`:
  - Updated the `Experimental_DefaultFormStateBehavior` type to add new optional `constAsDefaults` prop with three choices
  - Updated `getDefaultFormState()` to respond to the new `constAsDefaults` feature to limit `const` as defaults based on the `never` or `skipOneOf` choices
  - Added tests for `getDefaultFormState()` to verify the new feature
- In `@rjsf/core`:
  - Updated `SchemaField` to remove making the field readonly when const
- In `playground`:
  - Updated `Header` to add support for `constAsDefaults`
- Updated the `CHANGELOG.md` accordingly

* experimental_customMergeAllOf v2 (#4383)

* Pass experimental_customMergeAllOf to missing code branches

* Add experimental_customMergeAllOf parameter to documentation, fix link with anchor

* Changelog

---------

Co-authored-by: Marek Bodinger <[email protected]>

* Fixed issue where error messages do not have title or ui:title if a Localizer function is used. Fixes #4387. (#4391)

* fix: Update schema builder add/set actions to have unique errors (#4386)

* fix: update schema builder add/set actions to have unique errors

* docs: add fix description to changelog

---------

Co-authored-by: Heath C <[email protected]>

* v5.23.0 (#4392)

* Chakra-UI must be <3.0.0

fixes #4390

* Fix 4382 by passing errorSchema and id through in NumberField's onChange (#4395)

Fixes #4382

- Updated `NumberField`'s `handleChange` callback to pass through the `errorSchema` and `id`
- Updated the peerDependencies for the packages to be `5.23.x`
- Updated `CHANGELOG.md` accordingly

* v5.23.1 (#4396)

* Use default values when switching anyOf option (#4375)

* Use default values when switching anyOf option

* review

* Update changelog

* review: add oneOf test

* Move changelog entry to 5.23.1

* Update CHANGELOG.md

Fixed up release

---------

Co-authored-by: Heath C <[email protected]>

* Fix issue where ui:title in anyOf/oneOf is not shown in error messages (#4398)

* Fixed issue where ui:title in anyOf/oneOf is not shown in error messages. Fixes #4368.

* Use replace() instead of replaceAll() to support Node v14.

* fix: Short-circuit File and Date constructor access in isObject (#4413)

* fix: short-circuit File and Date constructor access in isObject if thing is missing required property

* chore: update changelog with isObject short-circuiting fix

---------

Co-authored-by: Jonathan Sun <[email protected]>

* v5.23.2

* Bug: issue with assigning values to deeply nested required properties (#4425)

* Fixed issue with assigning values to deeply nested required properties

* Update CHANGELOG.md

---------

Co-authored-by: Heath C <[email protected]>

* Bug: Issue with formData not updating when dependencies change (#4388)

* Fixing issue with formData value not changing when dependencies are updated.

* refactoring tests and added test to test non-valid formData

* update changeLog

* added test for getValidFormData method

* fixed failing issue because of type change

* changes based on feedback

* changes based on feedback

* fixed test coverage

* Override the formData with the const if the constAsDefaults is set to always

* Fixed issue with validator-ajv6 ignoring oneOf in dependencies because it thinks there isn't exactly one subschema that is valid.

* improvement based on feedback

* Fixed failing tests

* removed unnecessary code

* improvement based on feedback.

---------

Co-authored-by: Heath C <[email protected]>

* Bug: schema with conditions where switching to then/else subschemas did not reflect the actual validation errors in the onChange event. (#4432)

* Fixed issue with schema if/then/else conditions where switching to then/else subschemas did not reflect the actual validation errors in the onChange event.

* improvement based on feedback

---------

Co-authored-by: Heath C <[email protected]>

* Bug:  AJV $data reference in const property in schema treated as default/const value. (#4431)

* Validator to support AJV $data reference and saving validator state in ShareURL.

* Fix for AJV $data reference in const property in schema treated as default/const value.

* written a test for consIsAjvDataReference.

* Update CHANGELOG.md

Moving the change to the end of the existing list

---------

Co-authored-by: Heath C <[email protected]>

* fix: formData change clear errorMessage (#4429)

* fix: formData change clear errorMessage

fix: merge errorSchema

fix: merge errorSchema

* test: add tests for getChangedFields and update CHANGELOG

* fix: core test and error message when formData is a string
not cleared

* feat: modify CHANGELOG

---------

Co-authored-by: Heath C <[email protected]>

* Partially fixed dependency error messages (#4417)

* Partially fixed issue where dependency errors do not show title or ui:title. This fix only applicable if we use an ajv-i18n localizer. Ref. #4402.

* Add comments.

* Update packages/validator-ajv8/src/processRawValidationErrors.ts

---------

Co-authored-by: Heath C <[email protected]>

* feat: switch `lodash.isEqual` to `fast-equals.deepEqual` to improve performance (#4438)

* switch lodash.isEqual to fast-equals.deepEqual to improve performance

* Revert "switch lodash.isEqual to fast-equals.deepEqual to improve performance"

This reverts commit 86570fe6cc49899ef8828667c5b05cdbcc3bc8f7.

* use precompiledValidator @rjsf/utils.deepEquals

* switch lodash.isEqual to @rjsf/utils.deepEquals at utils package

* fix changelog and remove unnecessary comment

* v5.24.0 (#4443)

* Release 5.24.1 (#4445)

* Bump peer dependencies due to new API in utils

* v5.24.1

* - Updated `CHANGELOG.md` to indicate the bumping of peer dependencies

* - Fixed the peer deps version

* - Added documentation for `getChangedFields()`

* Update packages/docs/docs/api-reference/utility-functions.md

* Switch lodash.isEqualWith to fast-equals (#4446)

* Fixed file accept attribute not working on mui and chakra-ui. (#4457)

* Update validation.md (#4458)

schema is not a variable here, and yourSchema is unused. I believe the form input here should be schema={yourSchema}

Co-authored-by: Heath C <[email protected]>

* Bug : Fields inside an array can't be set to empty when default is set. (#4461)

* Fixed issue with fields inside an array can't be set to empty when a default is set

* Update packages/utils/src/mergeDefaultsWithFormData.ts

- Reviewer feedback

* Update packages/utils/src/mergeDefaultsWithFormData.ts

- Fix linting

---------

Co-authored-by: Heath C <[email protected]>

* Refactor: remove unnecessary indirectness in get default form state test (#4462)

* refactor `getDefaultFormState` tests

* refactor `computeDefaults` tests

* refactor `getDefaultBasedOnSchemaType` tests

* refactor `getObjectDefaults` tests

* refactor `getArrayDefaults` tests

* replace original `getDefaultFormStateTest` test with refactored

* clarify expected value for array test

* remove unused type

---------

Co-authored-by: Heath C <[email protected]>

* Bug: The oneOf selector can be modified in readonly mode (#4463)

* Fixed issue with oneOf selector can be modified in readonly mode

* update based on feedback

* v5.24.2 (#4468)

* Validator should not refresh on clicking a Selector in playground (#4472)

* Validator should not refresh on clicking a Selector in playground

* Updated change log

* Update CHANGELOG.md

---------

Co-authored-by: Heath C <[email protected]>

* Revert #4446 due to regression (#4478)

Fixed #4475 by rolling back #4446
- In `@rjsf/utils` rolled back the changes made by #4446
- Updated the `CHANGELOG.md` accordingly

* v5.24.3 (#4480)

* - Drop node 14, 16 and 18 support, adding 20 and 22

* - More `ci` clean for builds

* - Make code-ql work for rjsf-v6 branch

* - Fixed build by using correct version of MUI as well as removing MUI 5 support

* - Updated node engine >= 20

* - Fix package-lock.json

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Jonasz Wiącek <[email protected]>
Co-authored-by: Bogdan Savluk <[email protected]>
Co-authored-by: Christian Wendt <[email protected]>
Co-authored-by: Ben Lambert <[email protected]>
Co-authored-by: David R. Bild <[email protected]>
Co-authored-by: Ariqun <[email protected]>
Co-authored-by: Shivam Anand Murmu <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Shubham Biswas <[email protected]>
Co-authored-by: popmanhe <[email protected]>
Co-authored-by: Yuki Aoki <[email protected]>
Co-authored-by: Xiangcheng Kuo <[email protected]>
Co-authored-by: Bart van Andel <[email protected]>
Co-authored-by: Laurent Direr <[email protected]>
Co-authored-by: Vegard Stenvik <[email protected]>
Co-authored-by: Nick Grosenbacher <[email protected]>
Co-authored-by: Appie <[email protected]>
Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Oren Forer <[email protected]>
Co-authored-by: Marcus Penn <[email protected]>
Co-authored-by: Kevin Burnett <[email protected]>
Co-authored-by: joachimhagheim <[email protected]>
Co-authored-by: MarekBodingerBA <[email protected]>
Co-authored-by: Marek Bodinger <[email protected]>
Co-authored-by: momesana <[email protected]>
Co-authored-by: Mehdi Salem <[email protected]>
Co-authored-by: Martti Roitto <[email protected]>
Co-authored-by: Serge van den Oever <[email protected]>
Co-authored-by: Enzo Ferey <[email protected]>
Co-authored-by: Skyf0l <[email protected]>
Co-authored-by: Jaejoon Han <[email protected]>
Co-authored-by: とまとみ <[email protected]>
Co-authored-by: Daniel Todd <[email protected]>
Co-authored-by: Dmitry Dzhus <[email protected]>
Co-authored-by: Alexander Kachkaev <[email protected]>
Co-authored-by: shaddollxz <[email protected]>
Co-authored-by: Changyu Geng <[email protected]>
Co-authored-by: Helen Lin <[email protected]>
Co-authored-by: solimant <[email protected]>
Co-authored-by: David Li <[email protected]>
Co-authored-by: Abdallah Al-Soqatri <[email protected]>
Co-authored-by: Igor Brasileiro <[email protected]>
Co-authored-by: Jonathan Roebuck <[email protected]>
Co-authored-by: Tomasz Durka <[email protected]>
Co-authored-by: Sergey Alimov <[email protected]>
Co-authored-by: Kylie Marshall <[email protected]>
Co-authored-by: Dmitry Khomichenko <[email protected]>
Co-authored-by: Dmitry Khomichenko <[email protected]>
Co-authored-by: Salvatore Testa <[email protected]>
Co-authored-by: Guilherme Castro <[email protected]>
Co-authored-by: BorjaDV <[email protected]>
Co-authored-by: Yasunobu Chiba <[email protected]>
Co-authored-by: Quentin Sommer <[email protected]>
Co-authored-by: Jonathan Sun <[email protected]>
Co-authored-by: Jonathan Sun <[email protected]>
Co-authored-by: 邵瑾瑜 <[email protected]>
Co-authored-by: Petar Gligic <[email protected]>
Co-authored-by: Roman Krasilnikov <[email protected]>
Co-authored-by: deepeshmi26 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

performance issue related to lodash/isEqual function
3 participants