dependabot[bot] opened a new pull request, #35814: URL: https://github.com/apache/superset/pull/35814
Bumps [@reduxjs/toolkit](https://github.com/reduxjs/redux-toolkit) from 1.9.7 to 2.9.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/reduxjs/redux-toolkit/releases"><code>@reduxjs/toolkit</code>'s releases</a>.</em></p> <blockquote> <h2>v2.9.1</h2> <p>This <strong>bugfix release</strong> fixes how sorted entity adapters handle duplicate IDs, tweaks the TS types for RTKQ query state cache entries to improve how the <code>data</code> field is handled, and adds better cleanup for long-running listener middleware effects.</p> <h2>What's Changed</h2> <ul> <li>fix(entityAdapter): ensure sorted addMany keeps first occurrence of duplicate ids by <a href="https://github.com/demyanm"><code>@demyanm</code></a> in <a href="https://redirect.github.com/reduxjs/redux-toolkit/pull/5097">reduxjs/redux-toolkit#5097</a></li> <li>fix(entityAdapter): ensure sorted setMany keeps just unique IDs in state.ids by <a href="https://github.com/demyanm"><code>@demyanm</code></a> in <a href="https://redirect.github.com/reduxjs/redux-toolkit/pull/5107">reduxjs/redux-toolkit#5107</a></li> <li>fix(types): ensure non-undefined <code>data</code> on isSuccess with <code>exactOptionalPropertyTypes</code> by <a href="https://github.com/CO0Ki3"><code>@CO0Ki3</code></a> in <a href="https://redirect.github.com/reduxjs/redux-toolkit/pull/5088">reduxjs/redux-toolkit#5088</a></li> <li>Allow executing effects that have become unsubscribed to be canceled by <code>listenerMiddleware.clearListeners</code> by <a href="https://github.com/chris-chambers"><code>@chris-chambers</code></a> in <a href="https://redirect.github.com/reduxjs/redux-toolkit/pull/5102">reduxjs/redux-toolkit#5102</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/reduxjs/redux-toolkit/compare/v2.9.0...v2.9.1">https://github.com/reduxjs/redux-toolkit/compare/v2.9.0...v2.9.1</a></p> <h2>v2.9.0</h2> <p>This <strong>feature release</strong> rewrites RTK Query's internal subscription and polling systems and the <code>useStableQueryArgs</code> hook for better perf, adds automatic <code>AbortSignal</code> handling to requests still in progress when a cache entry is removed, fixes a bug with the <code>transformResponse</code> option for queries, adds a new <code>builder.addAsyncThunk</code> method, and fixes assorted other issues.</p> <h2>Changelog</h2> <h3>RTK Query Performance Improvements</h3> <p>We had reports that <a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/5052">RTK Query could get very slow when there were thousands of subscriptions to the same cache entry</a>. After investigation, we found that the internal polling logic was attempting to recalculate the minimum polling time after every new subscription was added. This was highly inefficient, as most subscriptions don't change polling settings, and it required repeated O(n) iteration over the growing list of subscriptions. We've rewritten that logic to debounce the update check and ensure a max of one polling value update per tick for the entire API instance.</p> <p>Related, while working on the request abort changes, testing showed that use of plain <code>Record</code>s to hold subscription data was inefficient because we have to iterate keys to check size. We've rewritten the subscription handling internals to use <code>Map</code>s instead, as well as restructuring some additional checks around in-flight requests.</p> <p>These two improvements drastically improved runtime perf for the thousands-of-subscriptions-one-cache-entry repro, eliminating RTK methods as visible hotspots in the perf profiles. It likely also improves perf for general usage as well.</p> <p>We've also changed the implementation of our internal <code>useStableQueryArgs</code> hook to avoid calling <code>serializeQueryArgs</code> on its value, which can avoid potential perf issues when a query takes a very large object as its cache key.</p> <blockquote> <p>[!NOTE] The internal logic switched from serializing the query arg to doing reference checks on nested values. This means that if you are passing a non-POJO value in a query arg, such as <code>useSomeQuery({a: new Set()})</code>, <em>and</em> you have <code>refetchOnMountOrArgChange</code> enabled, this will now trigger refeteches each time as the <code>Set</code> references are now considered different based on equality instead of serialization.</p> </blockquote> <h3>Abort Signal Handling on Cleanup</h3> <p>We've had numerous requests over time for various forms of "abort in-progress requests when the data is no longer needed / params change / component unmounts / some expensive request is taking too long". This is a complex topic with multiple potential use cases, and our standard answer has been that we <em>don't</em> want to abort those requests - after all, cache entries default to staying in memory for 1 minute after the last subscription is removed, so RTKQ's cache can still be updated when the request completes. That also means that it doesn't make sense to abort a request "on unmount".</p> <p>However, it does then make sense to abort an in-progress request if the cache entry itself is removed. Given that, we've updated our cache handling to automatically call the existing <code>resPromise.abort()</code> method in that case, triggering the <code>AbortSignal</code> attached to the <code>baseQuery</code>. The handling at that point depends on your app - <code>fetchBaseQuery</code> should handle that, a custom <code>baseQuery</code> or <code>queryFn</code> would need to listen to the <code>AbortSignal</code>.</p> <p>We do have <a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/2444">an open issue asking for further discussions of potential abort / cancelation use cases</a> and would appreciate further feedback.</p> <h3>New Options</h3> <p>The builder callback used in <code>createReducer</code> and <code>createSlice.extraReducers</code> now has <code>builder.addAsyncThunk</code> available, which allows handling specific actions from a thunk in the same way that you could define a thunk inside <code>createSlice.reducers</code>:</p> <pre lang="ts"><code> const slice = createSlice({ name: 'counter', initialState: { loading: false, errored: false, value: 0, }, </tr></table> </code></pre> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/32887d7501cc0e2634b48d25a0c524b6eb103761"><code>32887d7</code></a> Release 2.9.2</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/4432629dbaaefb47e29135fbffe75d13589313fc"><code>4432629</code></a> Don't create subscriptions for prefetch calls (<a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/5116">#5116</a>)</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/c86d948bd8d6a000b5cf192278213abab85682ce"><code>c86d948</code></a> Add <code>retry</code> abort handling and abort on <code>resetApiState</code> (<a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/5114">#5114</a>)</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/02630d2b486d5a4bd74da4b08393401046af0735"><code>02630d2</code></a> fix: update graphql-request dependency to include version ^7.0.0 (<a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/4987">#4987</a>)</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/1b950370ed777febbdf17e5cb6b8075ce6802af9"><code>1b95037</code></a> Respect maxRetries for unexpected errors (<a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/5113">#5113</a>)</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/c490b190c698c4e10c1352abb0f8c76ea23d06d4"><code>c490b19</code></a> Improve <code>fetchBaseQuery</code> default headers handling (<a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/5112">#5112</a>)</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/7b7faea80f84c6165c449d78b62112ddb6449baa"><code>7b7faea</code></a> Fix potential subscription leakage in SSR environments (<a href="https://redirect.github.com/reduxjs/redux-toolkit/issues/5111">#5111</a>)</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/fde0be7ffcb2e4fd5776ed5fb732a6a979321c1e"><code>fde0be7</code></a> Release 2.9.1</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/47e7d81854179bc89479c7c3576bf9ff086c5574"><code>47e7d81</code></a> Release <code>@rtk-query/codegen-openapi</code> 2.1.0</li> <li><a href="https://github.com/reduxjs/redux-toolkit/commit/b4b7d174533742fca202d97a8d1af8853079ef88"><code>b4b7d17</code></a> Allow executing effects that have become unsubscribed to be canceled by `list...</li> <li>Additional commits viewable in <a href="https://github.com/reduxjs/redux-toolkit/compare/v1.9.7...v2.9.2">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
