-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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(react-query
): allow optional cursor in useInfiniteQuery
#4374
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
@lithdew is attempting to deploy a commit to the trpc Team on Vercel. A member of the Team first needs to authorize it. |
useInfiniteQuery
useInfiniteQuery
react-query
): relax input type conditions for exposing useInfiniteQuery
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I want some tests on this - you can see #4378 for reference.
Since it's only typescript-stuff, you can wrap it in ignoreErrors(() =>
and add some tests type tests.
react-query
): relax input type conditions for exposing useInfiniteQuery
react-query
): relax input type conditions for exposing useInfiniteQuery
f973b05
to
81ed5ae
Compare
Wrote some type-checking tests to ensure that |
ec2d42f
to
bc07ca2
Compare
…teQuery Suppose we define a router procedure's input with Zod as `z.object({ cursor: z.string().optional() }).default({})`. The inferred input type, which may be checked using `inferRouterInputs<Router>["procedure"]`, erroneously is the type union `void | {cursor?: string} | undefined`. The error is caused by `inferProcedureInput` union-ing the input type with void should the input potentially be undefined. useInfiniteQuery at the moment is only exposed for procedures whose inputs solely extend `{cursor?: any}`. Procedures whose inputs are potentially undefined, that guarantee** after parsing to set defaults to the `cursor` field however should also expose useInfiniteQuery. This PR relaxes the input types of useInfiniteQuery to allow inputs that are potentially undefined by exposing useInfiniteQuery for procedures whose inputs extends the type `{cursor?: any} | void`.
react-query
): relax input type conditions for exposing useInfiniteQuery
react-query
): allow optional cursor in useInfiniteQuery
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@trpc/client](https://trpc.io) ([source](https://togithub.com/trpc/trpc)) | [`10.27.1` -> `10.28.0`](https://renovatebot.com/diffs/npm/@trpc%2fclient/10.27.1/10.28.0) | [![age](https://badges.renovateapi.com/packages/npm/@trpc%2fclient/10.28.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@trpc%2fclient/10.28.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@trpc%2fclient/10.28.0/compatibility-slim/10.27.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@trpc%2fclient/10.28.0/confidence-slim/10.27.1)](https://docs.renovatebot.com/merge-confidence/) | | [@trpc/react-query](https://trpc.io) ([source](https://togithub.com/trpc/trpc)) | [`10.27.1` -> `10.28.0`](https://renovatebot.com/diffs/npm/@trpc%2freact-query/10.27.1/10.28.0) | [![age](https://badges.renovateapi.com/packages/npm/@trpc%2freact-query/10.28.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@trpc%2freact-query/10.28.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@trpc%2freact-query/10.28.0/compatibility-slim/10.27.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@trpc%2freact-query/10.28.0/confidence-slim/10.27.1)](https://docs.renovatebot.com/merge-confidence/) | | [@trpc/server](https://trpc.io) ([source](https://togithub.com/trpc/trpc)) | [`10.27.1` -> `10.28.0`](https://renovatebot.com/diffs/npm/@trpc%2fserver/10.27.1/10.28.0) | [![age](https://badges.renovateapi.com/packages/npm/@trpc%2fserver/10.28.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@trpc%2fserver/10.28.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@trpc%2fserver/10.28.0/compatibility-slim/10.27.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@trpc%2fserver/10.28.0/confidence-slim/10.27.1)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>trpc/trpc</summary> ### [`v10.28.0`](https://togithub.com/trpc/trpc/releases/tag/v10.28.0) [Compare Source](https://togithub.com/trpc/trpc/compare/v10.27.3...v10.28.0) #### What's Changed - feat(`client`): allow closing active subscriptions by [@​Dealerpriest](https://togithub.com/Dealerpriest) in [https://github.com/trpc/trpc/pull/4136](https://togithub.com/trpc/trpc/pull/4136) - feat(`client`): add ability to call `TRPCProxyClient`-methods with `.apply()` by [@​atoy40](https://togithub.com/atoy40) in [https://github.com/trpc/trpc/pull/3973](https://togithub.com/trpc/trpc/pull/3973) - feat(`react-query`): allow optional cursor in `useInfiniteQuery` by [@​lithdew](https://togithub.com/lithdew) in [https://github.com/trpc/trpc/pull/4374](https://togithub.com/trpc/trpc/pull/4374) - fix(`*`): exclude `*.test.*`-files in build outputs by [@​KATT](https://togithub.com/KATT) in [https://github.com/trpc/trpc/pull/4417](https://togithub.com/trpc/trpc/pull/4417) #### New Contributors - [@​atoy40](https://togithub.com/atoy40) made their first contribution in [https://github.com/trpc/trpc/pull/3973](https://togithub.com/trpc/trpc/pull/3973) - [@​miguelvelasquezdev](https://togithub.com/miguelvelasquezdev) made their first contribution in [https://github.com/trpc/trpc/pull/4341](https://togithub.com/trpc/trpc/pull/4341) - [@​lithdew](https://togithub.com/lithdew) made their first contribution in [https://github.com/trpc/trpc/pull/4374](https://togithub.com/trpc/trpc/pull/4374) **Full Changelog**: trpc/trpc@v10.27.3...v10.28.0 ### [`v10.27.3`](https://togithub.com/trpc/trpc/releases/tag/v10.27.3) [Compare Source](https://togithub.com/trpc/trpc/compare/v10.27.2...v10.27.3) #### What's Changed - fix(`react-query`): fix `useInfiniteQuery` `placeholderData` types by [@​SSHari](https://togithub.com/SSHari) in [https://github.com/trpc/trpc/pull/4402](https://togithub.com/trpc/trpc/pull/4402) #### New Contributors - [@​SSHari](https://togithub.com/SSHari) made their first contribution in [https://github.com/trpc/trpc/pull/4402](https://togithub.com/trpc/trpc/pull/4402) **Full Changelog**: trpc/trpc@v10.27.2...v10.27.3 ### [`v10.27.2`](https://togithub.com/trpc/trpc/releases/tag/v10.27.2) [Compare Source](https://togithub.com/trpc/trpc/compare/v10.27.1...v10.27.2) #### What's Changed - fix(`next)`: remove conditional hook in `withTRPC()` by [@​KATT](https://togithub.com/KATT) in [https://github.com/trpc/trpc/pull/4410](https://togithub.com/trpc/trpc/pull/4410) **Full Changelog**: trpc/trpc@v10.27.1...v10.27.2 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/synopsisgg/bot). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMDIuNCIsInVwZGF0ZWRJblZlciI6IjM1LjEwMi40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
🎯 Changes
Suppose we define a router procedure's input with Zod as
z.object({ cursor: z.string().optional() }).default({})
. The inferred input type, which may be checked usinginferRouterInputs<Router>["procedure"]
, erroneously is the type unionvoid | {cursor?: string} | undefined
.The error is caused by
inferProcedureInput
union-ing the input type with void should the input potentially be undefined.useInfiniteQuery at the moment is only exposed for procedures whose inputs solely extend
{cursor?: any}
. Procedures whose inputs are potentially undefined, that guarantee** after parsing to set defaults to thecursor
field however should also expose useInfiniteQuery.This PR relaxes the input types of useInfiniteQuery to allow inputs that are potentially undefined by exposing useInfiniteQuery for procedures whose inputs extends the type
{cursor?: any} | void
.✅ Checklist