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: typed query filters #8670

Merged
merged 11 commits into from
Mar 3, 2025
Merged

feat: typed query filters #8670

merged 11 commits into from
Mar 3, 2025

Conversation

TkDodo
Copy link
Collaborator

@TkDodo TkDodo commented Feb 19, 2025

No description provided.

Copy link

nx-cloud bot commented Feb 19, 2025

View your CI Pipeline Execution ↗ for commit e281fd9.

Command Status Duration Result
nx affected --targets=test:sherif,test:knip,tes... ✅ Succeeded 3m 41s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 2m 8s View ↗

☁️ Nx Cloud last updated this comment at 2025-03-03 15:40:14 UTC

Copy link

pkg-pr-new bot commented Feb 20, 2025

Open in Stackblitz

More templates

@tanstack/angular-query-devtools-experimental

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

@tanstack/angular-query-experimental

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

@tanstack/eslint-plugin-query

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

@tanstack/query-async-storage-persister

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

@tanstack/query-broadcast-client-experimental

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

@tanstack/query-core

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

@tanstack/query-devtools

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

@tanstack/query-persist-client-core

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

@tanstack/query-sync-storage-persister

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

@tanstack/react-query

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

@tanstack/react-query-devtools

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

@tanstack/react-query-next-experimental

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

@tanstack/react-query-persist-client

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

@tanstack/solid-query

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

@tanstack/solid-query-devtools

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

@tanstack/solid-query-persist-client

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

@tanstack/svelte-query

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

@tanstack/svelte-query-devtools

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

@tanstack/svelte-query-persist-client

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

@tanstack/vue-query

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

@tanstack/vue-query-devtools

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

commit: e281fd9

Copy link

github-actions bot commented Feb 20, 2025

Sizes for commit e281fd9:

Branch Bundle Size
Main
This PR

Copy link

codecov bot commented Feb 20, 2025

Codecov Report

Attention: Patch coverage is 90.00000% with 1 line in your changes missing coverage. Please review.

Project coverage is 63.14%. Comparing base (e85df7a) to head (e281fd9).
Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##             main    #8670       +/-   ##
===========================================
+ Coverage   46.34%   63.14%   +16.79%     
===========================================
  Files         199      135       -64     
  Lines        7552     4854     -2698     
  Branches     1732     1370      -362     
===========================================
- Hits         3500     3065      -435     
+ Misses       3672     1544     -2128     
+ Partials      380      245      -135     
Components Coverage Δ
@tanstack/angular-query-devtools-experimental ∅ <ø> (∅)
@tanstack/angular-query-experimental 88.65% <ø> (ø)
@tanstack/eslint-plugin-query ∅ <ø> (∅)
@tanstack/query-async-storage-persister 43.85% <ø> (ø)
@tanstack/query-broadcast-client-experimental ∅ <ø> (∅)
@tanstack/query-codemods ∅ <ø> (∅)
@tanstack/query-core 94.19% <100.00%> (-0.01%) ⬇️
@tanstack/query-devtools 4.78% <ø> (ø)
@tanstack/query-persist-client-core 57.73% <ø> (ø)
@tanstack/query-sync-storage-persister 84.61% <ø> (ø)
@tanstack/react-query 95.09% <ø> (ø)
@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.01% <50.00%> (ø)
@tanstack/vue-query-devtools ∅ <ø> (∅)

Comment on lines 172 to 187
invalidateQueries<
TQueryFnData = unknown,
TError = DefaultError,
TTaggedQueryKey extends QueryKey = QueryKey,
TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>,
TInferredError = InferErrorFromTag<TError, TTaggedQueryKey>,
>(
filters?: InvalidateQueryFilters<
TInferredQueryFnData,
TInferredError,
TInferredQueryFnData,
TTaggedQueryKey
>,
options?: MaybeRefDeep<InvalidateOptions>,
): Promise<void>
invalidateQueries(
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@DamianOsipiuk I don’t really know what I’m doing here 😂 but I’m getting type errors if I don’t add an overload that has the same signature as the base version 🤔 . Is this correct ?

Copy link
Contributor

Choose a reason for hiding this comment

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

To make TS happy i guess you would need something like below.
And yes, you need to include both base and MaybeRefDeep if you are using TS inference.

invalidateQueries<
  TQueryFnData = unknown,
  TError = DefaultError,
  TTaggedQueryKey extends QueryKey = QueryKey,
  TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>,
  TInferredError = InferErrorFromTag<TError, TTaggedQueryKey>,
>(
  filters: InvalidateQueryFilters<
    TInferredQueryFnData,
    TInferredError,
    TInferredQueryFnData,
    TTaggedQueryKey
  >,
  options: InvalidateOptions,
): Promise<void>
invalidateQueries<
  TQueryFnData = unknown,
  TError = DefaultError,
  TTaggedQueryKey extends QueryKey = QueryKey,
  TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>,
  TInferredError = InferErrorFromTag<TError, TTaggedQueryKey>,
>(
  filters: MaybeRefDeep<
    InvalidateQueryFilters<
      TInferredQueryFnData,
      TInferredError,
      TInferredQueryFnData,
      TTaggedQueryKey
    >
  > = {},
  options: MaybeRefDeep<InvalidateOptions> = {},
): Promise<void> {
  const filtersCloned = cloneDeepUnref(filters)
  const optionsCloned = cloneDeepUnref(options)

  super.invalidateQueries(
    { ...filtersCloned, refetchType: 'none' },
    optionsCloned,
  )

  if (filtersCloned.refetchType === 'none') {
    return Promise.resolve()
  }

  const refetchFilters: RefetchQueryFilters<
    TInferredQueryFnData,
    TInferredError,
    TInferredQueryFnData,
    TTaggedQueryKey
  > = {
    ...filtersCloned,
    type: filtersCloned.refetchType ?? filtersCloned.type ?? 'active',
  }

  // (dosipiuk): We need to delay `refetchQueries` execution to next macro task for all reactive values to be updated.
  // This ensures that `context` in `queryFn` while `invalidating` along reactive variable change has correct
  return nextTick().then(() => {
    return super.refetchQueries(refetchFilters, optionsCloned)
  })
}

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Can you explain why the versions with MaybeDeepRef are optional, but without it, the params are required ? I think they should be optional in both overloads ...

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

like so?

06414eb

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh yeah, overload should include optionals.
MaybeRef just does not like | undefined union, so to get rid of it and properly infer types, it's instead defaulted to empty object = {}

Looks good 👍

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@DamianOsipiuk I don’t understand where this type error now comes from:

../vue-query/src/__tests__/queryClient.test.ts(198,11): error TS2322: Type 'Ref<boolean, boolean>' is not assignable to type 'boolean | undefined'.

{ cancelRefetch: ref(false) },

I had to change options again: 3401096

Copy link
Contributor

Choose a reason for hiding this comment

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

Interesting. But should be fine

@Nick-Lucas Nick-Lucas mentioned this pull request Feb 20, 2025
3 tasks
@TkDodo TkDodo marked this pull request as ready for review February 26, 2025 09:45
@TkDodo TkDodo linked an issue Feb 28, 2025 that may be closed by this pull request
@TkDodo TkDodo merged commit 1b54251 into main Mar 3, 2025
9 checks passed
@TkDodo TkDodo deleted the feature/typed-predicate branch March 3, 2025 15:42
Nick-Lucas added a commit to trpc/trpc that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-formdata that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-minimal-react that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-app-dir that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-sse-chat that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-big-router that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-prisma-websockets-starter that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-minimal-starter that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-prisma-starter that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
trpc-bot pushed a commit to trpc/examples-next-prisma-todomvc that referenced this pull request Mar 3, 2025
Related to TanStack/query#8670

## 🎯 Changes

What changes are made in this PR? Is it a feature or a bug fix?

<!--
Note: once you create a Pull request, we will automatically fix
auto-fixable lint issues in your branch
-->

## ✅ Checklist

- [ ] I have followed the steps listed in the [Contributing
guide](https://github.com/trpc/trpc/blob/main/CONTRIBUTING.md).
- [ ] If necessary, I have added documentation related to the changes
made.
- [ ] I have added or updated the tests related to the changes made.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Upgraded the data query library to version 5.67.1 across the project.
This update may deliver enhanced performance, improved stability, and
bug fixes for a smoother user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
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.

Dangerous missing type validation on invalidateQueries queryKey
2 participants