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

Include optional TError on DataTag so that getQueryState can infer the error type correctly #8361

Merged
merged 11 commits into from
Nov 29, 2024

Conversation

Nick-Lucas
Copy link
Contributor

@Nick-Lucas Nick-Lucas commented Nov 27, 2024

Current getQueryState can infer the data type correctly via the DataTag type.

DataTag does not include any type information for the Error type however.

At tRPC we are working on a package to generate query keys, query filters, and query options automatically based on your tRPC type. This will provide the ability to call getQueryState but currently no ability to create inference for the error because of the current limitations of DataTag. trpc/trpc#6265 - similar to #8332 it seems right to improve this upstream so everybody can benefit, though this time it also can't be easily improved downstream

This PR updates DataTag with a 3rd optional type parameter for TError, defaulting to unknown to avoid breaking changes for RQ users. getQueryState now infers the error type from this information or automatically falls back on its own TError value if the DataTag is unset

Alternative implementation could be to do an ErrorTag alongside DataTag but this one seems more in-line with how type params are set up elsewhere in RQ

Copy link

nx-cloud bot commented Nov 27, 2024

☁️ Nx Cloud Report

CI is running/has finished running commands for commit 10420a4. As they complete they will appear below. Click to see the status, the terminal output, and the build insights.

📂 See all runs for this CI Pipeline Execution


✅ Successfully ran 2 targets

Sent with 💌 from NxCloud.

Copy link

pkg-pr-new bot commented Nov 27, 2024

Open in Stackblitz

More templates

@tanstack/angular-query-devtools-experimental

npm i https://pkg.pr.new/@tanstack/angular-query-devtools-experimental@8361

@tanstack/angular-query-experimental

npm i https://pkg.pr.new/@tanstack/angular-query-experimental@8361

@tanstack/query-async-storage-persister

npm i https://pkg.pr.new/@tanstack/query-async-storage-persister@8361

@tanstack/eslint-plugin-query

npm i https://pkg.pr.new/@tanstack/eslint-plugin-query@8361

@tanstack/query-broadcast-client-experimental

npm i https://pkg.pr.new/@tanstack/query-broadcast-client-experimental@8361

@tanstack/query-core

npm i https://pkg.pr.new/@tanstack/query-core@8361

@tanstack/query-devtools

npm i https://pkg.pr.new/@tanstack/query-devtools@8361

@tanstack/query-persist-client-core

npm i https://pkg.pr.new/@tanstack/query-persist-client-core@8361

@tanstack/query-sync-storage-persister

npm i https://pkg.pr.new/@tanstack/query-sync-storage-persister@8361

@tanstack/react-query

npm i https://pkg.pr.new/@tanstack/react-query@8361

@tanstack/react-query-devtools

npm i https://pkg.pr.new/@tanstack/react-query-devtools@8361

@tanstack/react-query-next-experimental

npm i https://pkg.pr.new/@tanstack/react-query-next-experimental@8361

@tanstack/react-query-persist-client

npm i https://pkg.pr.new/@tanstack/react-query-persist-client@8361

@tanstack/solid-query

npm i https://pkg.pr.new/@tanstack/solid-query@8361

@tanstack/solid-query-devtools

npm i https://pkg.pr.new/@tanstack/solid-query-devtools@8361

@tanstack/solid-query-persist-client

npm i https://pkg.pr.new/@tanstack/solid-query-persist-client@8361

@tanstack/svelte-query

npm i https://pkg.pr.new/@tanstack/svelte-query@8361

@tanstack/svelte-query-devtools

npm i https://pkg.pr.new/@tanstack/svelte-query-devtools@8361

@tanstack/svelte-query-persist-client

npm i https://pkg.pr.new/@tanstack/svelte-query-persist-client@8361

@tanstack/vue-query

npm i https://pkg.pr.new/@tanstack/vue-query@8361

@tanstack/vue-query-devtools

npm i https://pkg.pr.new/@tanstack/vue-query-devtools@8361

commit: 10420a4

@Nick-Lucas Nick-Lucas changed the title Include TError on DataTag so that getQueryState can infer the error type correctly Include optional TError on DataTag so that getQueryState can infer the error type correctly Nov 27, 2024
Copy link

codecov bot commented Nov 27, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 62.90%. Comparing base (f245792) to head (10420a4).
Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##             main    #8361       +/-   ##
===========================================
+ Coverage   46.12%   62.90%   +16.78%     
===========================================
  Files         200      136       -64     
  Lines        7504     4799     -2705     
  Branches     1712     1345      -367     
===========================================
- Hits         3461     3019      -442     
+ Misses       3668     1540     -2128     
+ Partials      375      240      -135     
Components Coverage Δ
@tanstack/angular-query-devtools-experimental ∅ <ø> (∅)
@tanstack/angular-query-experimental 87.13% <ø> (ø)
@tanstack/eslint-plugin-query ∅ <ø> (∅)
@tanstack/query-async-storage-persister 43.85% <ø> (ø)
@tanstack/query-broadcast-client-experimental ∅ <ø> (∅)
@tanstack/query-codemods ∅ <ø> (∅)
@tanstack/query-core 94.52% <100.00%> (ø)
@tanstack/query-devtools 4.78% <ø> (ø)
@tanstack/query-persist-client-core 57.73% <ø> (ø)
@tanstack/query-sync-storage-persister 84.61% <ø> (ø)
@tanstack/react-query 95.54% <ø> (ø)
@tanstack/react-query-devtools 10.00% <ø> (ø)
@tanstack/react-query-next-experimental ∅ <ø> (∅)
@tanstack/react-query-persist-client 100.00% <ø> (ø)
@tanstack/solid-query 78.20% <ø> (ø)
@tanstack/solid-query-devtools ∅ <ø> (∅)
@tanstack/solid-query-persist-client 100.00% <ø> (ø)
@tanstack/svelte-query 87.33% <ø> (ø)
@tanstack/svelte-query-devtools ∅ <ø> (∅)
@tanstack/svelte-query-persist-client 100.00% <ø> (ø)
@tanstack/vue-query 71.45% <ø> (ø)
@tanstack/vue-query-devtools ∅ <ø> (∅)

@Nick-Lucas
Copy link
Contributor Author

The tRPC PR now has this implemented and looks good, though you'd need to locally link to this PR to make it work: trpc/trpc#6265

pnpm up @tanstack/react-query@path/to/tanstack-query/packages/react-query -r

packages/query-core/src/queryClient.ts Outdated Show resolved Hide resolved
packages/query-core/src/utils.ts Outdated Show resolved Hide resolved
packages/query-core/src/types.ts Outdated Show resolved Hide resolved
@Nick-Lucas Nick-Lucas requested a review from TkDodo November 29, 2024 11:02
@TkDodo TkDodo merged commit 0fa1f01 into TanStack:main Nov 29, 2024
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants