Showing preview only (6,065K chars total). Download the full file or copy to clipboard to get everything.
Repository: TanStack/query
Branch: main
Commit: e79176a72b57
Files: 2057
Total size: 21.4 MB
Directory structure:
gitextract_d__inhuu/
├── .changeset/
│ └── config.json
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── config.yml
│ ├── pull_request_template.md
│ ├── renovate.json
│ └── workflows/
│ ├── autofix.yml
│ ├── detect-agent.yml
│ ├── labeler.yml
│ ├── pr.yml
│ └── release.yml
├── .gitignore
├── .npmrc
├── .nvmrc
├── .nx/
│ └── workflows/
│ └── dynamic-changesets.yaml
├── .prettierignore
├── .size-limit.json
├── CONTRIBUTING.md
├── FUNDING.json
├── LICENSE
├── README.md
├── docs/
│ ├── community-resources.md
│ ├── config.json
│ ├── eslint/
│ │ ├── eslint-plugin-query.md
│ │ ├── exhaustive-deps.md
│ │ ├── infinite-query-property-order.md
│ │ ├── mutation-property-order.md
│ │ ├── no-rest-destructuring.md
│ │ ├── no-unstable-deps.md
│ │ ├── no-void-query-fn.md
│ │ └── stable-query-client.md
│ ├── framework/
│ │ ├── angular/
│ │ │ ├── angular-httpclient-and-other-data-fetching-clients.md
│ │ │ ├── devtools.md
│ │ │ ├── guides/
│ │ │ │ ├── background-fetching-indicators.md
│ │ │ │ ├── caching.md
│ │ │ │ ├── default-query-function.md
│ │ │ │ ├── dependent-queries.md
│ │ │ │ ├── disabling-queries.md
│ │ │ │ ├── does-this-replace-client-state.md
│ │ │ │ ├── filters.md
│ │ │ │ ├── important-defaults.md
│ │ │ │ ├── infinite-queries.md
│ │ │ │ ├── initial-query-data.md
│ │ │ │ ├── invalidations-from-mutations.md
│ │ │ │ ├── mutation-options.md
│ │ │ │ ├── mutations.md
│ │ │ │ ├── network-mode.md
│ │ │ │ ├── optimistic-updates.md
│ │ │ │ ├── paginated-queries.md
│ │ │ │ ├── parallel-queries.md
│ │ │ │ ├── placeholder-query-data.md
│ │ │ │ ├── queries.md
│ │ │ │ ├── query-cancellation.md
│ │ │ │ ├── query-functions.md
│ │ │ │ ├── query-invalidation.md
│ │ │ │ ├── query-keys.md
│ │ │ │ ├── query-options.md
│ │ │ │ ├── query-retries.md
│ │ │ │ ├── scroll-restoration.md
│ │ │ │ ├── testing.md
│ │ │ │ └── window-focus-refetching.md
│ │ │ ├── installation.md
│ │ │ ├── overview.md
│ │ │ ├── quick-start.md
│ │ │ ├── reference/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── infiniteQueryOptions.md
│ │ │ │ │ ├── injectInfiniteQuery.md
│ │ │ │ │ ├── injectIsFetching.md
│ │ │ │ │ ├── injectIsMutating.md
│ │ │ │ │ ├── injectIsRestoring.md
│ │ │ │ │ ├── injectMutation.md
│ │ │ │ │ ├── injectMutationState.md
│ │ │ │ │ ├── injectQuery.md
│ │ │ │ │ ├── injectQueryClient.md
│ │ │ │ │ ├── mutationOptions.md
│ │ │ │ │ ├── provideAngularQuery.md
│ │ │ │ │ ├── provideIsRestoring.md
│ │ │ │ │ ├── provideQueryClient.md
│ │ │ │ │ ├── provideTanStackQuery.md
│ │ │ │ │ ├── queryFeature.md
│ │ │ │ │ └── queryOptions.md
│ │ │ │ ├── index.md
│ │ │ │ ├── interfaces/
│ │ │ │ │ ├── BaseMutationNarrowing.md
│ │ │ │ │ ├── BaseQueryNarrowing.md
│ │ │ │ │ ├── CreateBaseQueryOptions.md
│ │ │ │ │ ├── CreateInfiniteQueryOptions.md
│ │ │ │ │ ├── CreateMutationOptions.md
│ │ │ │ │ ├── CreateQueryOptions.md
│ │ │ │ │ ├── InjectInfiniteQueryOptions.md
│ │ │ │ │ ├── InjectIsFetchingOptions.md
│ │ │ │ │ ├── InjectIsMutatingOptions.md
│ │ │ │ │ ├── InjectMutationOptions.md
│ │ │ │ │ ├── InjectMutationStateOptions.md
│ │ │ │ │ ├── InjectQueryOptions.md
│ │ │ │ │ └── QueryFeature.md
│ │ │ │ └── type-aliases/
│ │ │ │ ├── CreateBaseMutationResult.md
│ │ │ │ ├── CreateBaseQueryResult.md
│ │ │ │ ├── CreateInfiniteQueryResult.md
│ │ │ │ ├── CreateMutateAsyncFunction.md
│ │ │ │ ├── CreateMutateFunction.md
│ │ │ │ ├── CreateMutationResult.md
│ │ │ │ ├── CreateQueryResult.md
│ │ │ │ ├── DefinedCreateInfiniteQueryResult.md
│ │ │ │ ├── DefinedCreateQueryResult.md
│ │ │ │ ├── DefinedInitialDataInfiniteOptions.md
│ │ │ │ ├── DefinedInitialDataOptions.md
│ │ │ │ ├── DevtoolsFeature.md
│ │ │ │ ├── PersistQueryClientFeature.md
│ │ │ │ ├── QueriesOptions.md
│ │ │ │ ├── QueriesResults.md
│ │ │ │ ├── QueryFeatures.md
│ │ │ │ ├── UndefinedInitialDataInfiniteOptions.md
│ │ │ │ ├── UndefinedInitialDataOptions.md
│ │ │ │ ├── UnusedSkipTokenInfiniteOptions.md
│ │ │ │ └── UnusedSkipTokenOptions.md
│ │ │ ├── typescript.md
│ │ │ └── zoneless.md
│ │ ├── preact/
│ │ │ ├── devtools.md
│ │ │ ├── graphql.md
│ │ │ ├── guides/
│ │ │ │ ├── background-fetching-indicators.md
│ │ │ │ ├── caching.md
│ │ │ │ ├── default-query-function.md
│ │ │ │ ├── dependent-queries.md
│ │ │ │ ├── disabling-queries.md
│ │ │ │ ├── does-this-replace-client-state.md
│ │ │ │ ├── filters.md
│ │ │ │ ├── important-defaults.md
│ │ │ │ ├── infinite-queries.md
│ │ │ │ ├── initial-query-data.md
│ │ │ │ ├── invalidations-from-mutations.md
│ │ │ │ ├── mutations.md
│ │ │ │ ├── network-mode.md
│ │ │ │ ├── optimistic-updates.md
│ │ │ │ ├── paginated-queries.md
│ │ │ │ ├── parallel-queries.md
│ │ │ │ ├── placeholder-query-data.md
│ │ │ │ ├── prefetching.md
│ │ │ │ ├── queries.md
│ │ │ │ ├── query-cancellation.md
│ │ │ │ ├── query-functions.md
│ │ │ │ ├── query-invalidation.md
│ │ │ │ ├── query-keys.md
│ │ │ │ ├── query-options.md
│ │ │ │ ├── query-retries.md
│ │ │ │ ├── render-optimizations.md
│ │ │ │ ├── request-waterfalls.md
│ │ │ │ ├── scroll-restoration.md
│ │ │ │ ├── updates-from-mutation-responses.md
│ │ │ │ └── window-focus-refetching.md
│ │ │ ├── installation.md
│ │ │ ├── overview.md
│ │ │ ├── plugins/
│ │ │ │ ├── broadcastQueryClient.md
│ │ │ │ ├── createAsyncStoragePersister.md
│ │ │ │ ├── createPersister.md
│ │ │ │ ├── createSyncStoragePersister.md
│ │ │ │ └── persistQueryClient.md
│ │ │ ├── quick-start.md
│ │ │ ├── reference/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── HydrationBoundary.md
│ │ │ │ │ ├── QueryClientProvider.md
│ │ │ │ │ ├── QueryErrorResetBoundary.md
│ │ │ │ │ ├── infiniteQueryOptions.md
│ │ │ │ │ ├── mutationOptions.md
│ │ │ │ │ ├── queryOptions.md
│ │ │ │ │ ├── useInfiniteQuery.md
│ │ │ │ │ ├── useIsFetching.md
│ │ │ │ │ ├── useIsMutating.md
│ │ │ │ │ ├── useIsRestoring.md
│ │ │ │ │ ├── useMutation.md
│ │ │ │ │ ├── useMutationState.md
│ │ │ │ │ ├── usePrefetchInfiniteQuery.md
│ │ │ │ │ ├── usePrefetchQuery.md
│ │ │ │ │ ├── useQueries.md
│ │ │ │ │ ├── useQuery.md
│ │ │ │ │ ├── useQueryClient.md
│ │ │ │ │ ├── useQueryErrorResetBoundary.md
│ │ │ │ │ ├── useSuspenseInfiniteQuery.md
│ │ │ │ │ ├── useSuspenseQueries.md
│ │ │ │ │ └── useSuspenseQuery.md
│ │ │ │ ├── index.md
│ │ │ │ ├── interfaces/
│ │ │ │ │ ├── HydrationBoundaryProps.md
│ │ │ │ │ ├── QueryErrorResetBoundaryProps.md
│ │ │ │ │ ├── UseBaseQueryOptions.md
│ │ │ │ │ ├── UseInfiniteQueryOptions.md
│ │ │ │ │ ├── UseMutationOptions.md
│ │ │ │ │ ├── UsePrefetchQueryOptions.md
│ │ │ │ │ ├── UseQueryOptions.md
│ │ │ │ │ ├── UseSuspenseInfiniteQueryOptions.md
│ │ │ │ │ └── UseSuspenseQueryOptions.md
│ │ │ │ ├── type-aliases/
│ │ │ │ │ ├── AnyUseBaseQueryOptions.md
│ │ │ │ │ ├── AnyUseInfiniteQueryOptions.md
│ │ │ │ │ ├── AnyUseMutationOptions.md
│ │ │ │ │ ├── AnyUseQueryOptions.md
│ │ │ │ │ ├── AnyUseSuspenseInfiniteQueryOptions.md
│ │ │ │ │ ├── AnyUseSuspenseQueryOptions.md
│ │ │ │ │ ├── DefinedInitialDataInfiniteOptions.md
│ │ │ │ │ ├── DefinedInitialDataOptions.md
│ │ │ │ │ ├── DefinedUseInfiniteQueryResult.md
│ │ │ │ │ ├── DefinedUseQueryResult.md
│ │ │ │ │ ├── QueriesOptions.md
│ │ │ │ │ ├── QueriesResults.md
│ │ │ │ │ ├── QueryClientProviderProps.md
│ │ │ │ │ ├── QueryErrorClearResetFunction.md
│ │ │ │ │ ├── QueryErrorIsResetFunction.md
│ │ │ │ │ ├── QueryErrorResetBoundaryFunction.md
│ │ │ │ │ ├── QueryErrorResetFunction.md
│ │ │ │ │ ├── SuspenseQueriesOptions.md
│ │ │ │ │ ├── SuspenseQueriesResults.md
│ │ │ │ │ ├── UndefinedInitialDataInfiniteOptions.md
│ │ │ │ │ ├── UndefinedInitialDataOptions.md
│ │ │ │ │ ├── UnusedSkipTokenInfiniteOptions.md
│ │ │ │ │ ├── UnusedSkipTokenOptions.md
│ │ │ │ │ ├── UseBaseMutationResult.md
│ │ │ │ │ ├── UseBaseQueryResult.md
│ │ │ │ │ ├── UseInfiniteQueryResult.md
│ │ │ │ │ ├── UseMutateAsyncFunction.md
│ │ │ │ │ ├── UseMutateFunction.md
│ │ │ │ │ ├── UseMutationResult.md
│ │ │ │ │ ├── UseQueryResult.md
│ │ │ │ │ ├── UseSuspenseInfiniteQueryResult.md
│ │ │ │ │ └── UseSuspenseQueryResult.md
│ │ │ │ └── variables/
│ │ │ │ ├── IsRestoringProvider.md
│ │ │ │ └── QueryClientContext.md
│ │ │ └── typescript.md
│ │ ├── react/
│ │ │ ├── comparison.md
│ │ │ ├── devtools.md
│ │ │ ├── graphql.md
│ │ │ ├── guides/
│ │ │ │ ├── advanced-ssr.md
│ │ │ │ ├── background-fetching-indicators.md
│ │ │ │ ├── caching.md
│ │ │ │ ├── default-query-function.md
│ │ │ │ ├── dependent-queries.md
│ │ │ │ ├── disabling-queries.md
│ │ │ │ ├── does-this-replace-client-state.md
│ │ │ │ ├── filters.md
│ │ │ │ ├── important-defaults.md
│ │ │ │ ├── infinite-queries.md
│ │ │ │ ├── initial-query-data.md
│ │ │ │ ├── invalidations-from-mutations.md
│ │ │ │ ├── migrating-to-react-query-3.md
│ │ │ │ ├── migrating-to-react-query-4.md
│ │ │ │ ├── migrating-to-v5.md
│ │ │ │ ├── mutations.md
│ │ │ │ ├── network-mode.md
│ │ │ │ ├── optimistic-updates.md
│ │ │ │ ├── paginated-queries.md
│ │ │ │ ├── parallel-queries.md
│ │ │ │ ├── placeholder-query-data.md
│ │ │ │ ├── prefetching.md
│ │ │ │ ├── queries.md
│ │ │ │ ├── query-cancellation.md
│ │ │ │ ├── query-functions.md
│ │ │ │ ├── query-invalidation.md
│ │ │ │ ├── query-keys.md
│ │ │ │ ├── query-options.md
│ │ │ │ ├── query-retries.md
│ │ │ │ ├── render-optimizations.md
│ │ │ │ ├── request-waterfalls.md
│ │ │ │ ├── scroll-restoration.md
│ │ │ │ ├── ssr.md
│ │ │ │ ├── suspense.md
│ │ │ │ ├── testing.md
│ │ │ │ ├── updates-from-mutation-responses.md
│ │ │ │ └── window-focus-refetching.md
│ │ │ ├── installation.md
│ │ │ ├── overview.md
│ │ │ ├── plugins/
│ │ │ │ ├── broadcastQueryClient.md
│ │ │ │ ├── createAsyncStoragePersister.md
│ │ │ │ ├── createPersister.md
│ │ │ │ ├── createSyncStoragePersister.md
│ │ │ │ └── persistQueryClient.md
│ │ │ ├── quick-start.md
│ │ │ ├── react-native.md
│ │ │ ├── reference/
│ │ │ │ ├── QueryClientProvider.md
│ │ │ │ ├── QueryErrorResetBoundary.md
│ │ │ │ ├── hydration.md
│ │ │ │ ├── infiniteQueryOptions.md
│ │ │ │ ├── mutationOptions.md
│ │ │ │ ├── queryOptions.md
│ │ │ │ ├── useInfiniteQuery.md
│ │ │ │ ├── useIsFetching.md
│ │ │ │ ├── useIsMutating.md
│ │ │ │ ├── useMutation.md
│ │ │ │ ├── useMutationState.md
│ │ │ │ ├── usePrefetchInfiniteQuery.md
│ │ │ │ ├── usePrefetchQuery.md
│ │ │ │ ├── useQueries.md
│ │ │ │ ├── useQuery.md
│ │ │ │ ├── useQueryClient.md
│ │ │ │ ├── useQueryErrorResetBoundary.md
│ │ │ │ ├── useSuspenseInfiniteQuery.md
│ │ │ │ ├── useSuspenseQueries.md
│ │ │ │ └── useSuspenseQuery.md
│ │ │ └── typescript.md
│ │ ├── solid/
│ │ │ ├── devtools.md
│ │ │ ├── guides/
│ │ │ │ ├── advanced-ssr.md
│ │ │ │ ├── background-fetching-indicators.md
│ │ │ │ ├── caching.md
│ │ │ │ ├── default-query-function.md
│ │ │ │ ├── dependent-queries.md
│ │ │ │ ├── disabling-queries.md
│ │ │ │ ├── does-this-replace-client-state.md
│ │ │ │ ├── filters.md
│ │ │ │ ├── important-defaults.md
│ │ │ │ ├── infinite-queries.md
│ │ │ │ ├── initial-query-data.md
│ │ │ │ ├── invalidations-from-mutations.md
│ │ │ │ ├── mutations.md
│ │ │ │ ├── network-mode.md
│ │ │ │ ├── optimistic-updates.md
│ │ │ │ ├── paginated-queries.md
│ │ │ │ ├── parallel-queries.md
│ │ │ │ ├── placeholder-query-data.md
│ │ │ │ ├── prefetching.md
│ │ │ │ ├── queries.md
│ │ │ │ ├── query-cancellation.md
│ │ │ │ ├── query-functions.md
│ │ │ │ ├── query-invalidation.md
│ │ │ │ ├── query-keys.md
│ │ │ │ ├── query-options.md
│ │ │ │ ├── query-retries.md
│ │ │ │ ├── request-waterfalls.md
│ │ │ │ ├── scroll-restoration.md
│ │ │ │ ├── ssr.md
│ │ │ │ ├── suspense.md
│ │ │ │ ├── testing.md
│ │ │ │ ├── updates-from-mutation-responses.md
│ │ │ │ └── window-focus-refetching.md
│ │ │ ├── installation.md
│ │ │ ├── overview.md
│ │ │ ├── plugins/
│ │ │ │ ├── broadcastQueryClient.md
│ │ │ │ └── createPersister.md
│ │ │ ├── quick-start.md
│ │ │ ├── reference/
│ │ │ │ ├── hydration.md
│ │ │ │ ├── infiniteQueryOptions.md
│ │ │ │ ├── mutationOptions.md
│ │ │ │ ├── queryOptions.md
│ │ │ │ ├── useInfiniteQuery.md
│ │ │ │ ├── useIsFetching.md
│ │ │ │ ├── useIsMutating.md
│ │ │ │ ├── useMutation.md
│ │ │ │ ├── useMutationState.md
│ │ │ │ ├── useQueries.md
│ │ │ │ └── useQuery.md
│ │ │ └── typescript.md
│ │ ├── svelte/
│ │ │ ├── devtools.md
│ │ │ ├── installation.md
│ │ │ ├── migrate-from-v5-to-v6.md
│ │ │ ├── overview.md
│ │ │ ├── reference/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── createInfiniteQuery.md
│ │ │ │ │ ├── createMutation.md
│ │ │ │ │ ├── createQueries.md
│ │ │ │ │ ├── createQuery.md
│ │ │ │ │ ├── getIsRestoringContext.md
│ │ │ │ │ ├── getQueryClientContext.md
│ │ │ │ │ ├── infiniteQueryOptions.md
│ │ │ │ │ ├── mutationOptions.md
│ │ │ │ │ ├── queryOptions.md
│ │ │ │ │ ├── setIsRestoringContext.md
│ │ │ │ │ ├── setQueryClientContext.md
│ │ │ │ │ ├── useHydrate.md
│ │ │ │ │ ├── useIsFetching.md
│ │ │ │ │ ├── useIsMutating.md
│ │ │ │ │ ├── useIsRestoring.md
│ │ │ │ │ ├── useMutationState.md
│ │ │ │ │ └── useQueryClient.md
│ │ │ │ ├── index.md
│ │ │ │ ├── type-aliases/
│ │ │ │ │ ├── Accessor.md
│ │ │ │ │ ├── CreateBaseMutationResult.md
│ │ │ │ │ ├── CreateBaseQueryOptions.md
│ │ │ │ │ ├── CreateBaseQueryResult.md
│ │ │ │ │ ├── CreateInfiniteQueryOptions.md
│ │ │ │ │ ├── CreateInfiniteQueryResult.md
│ │ │ │ │ ├── CreateMutateAsyncFunction.md
│ │ │ │ │ ├── CreateMutateFunction.md
│ │ │ │ │ ├── CreateMutationOptions.md
│ │ │ │ │ ├── CreateMutationResult.md
│ │ │ │ │ ├── CreateQueryOptions.md
│ │ │ │ │ ├── CreateQueryResult.md
│ │ │ │ │ ├── DefinedCreateBaseQueryResult.md
│ │ │ │ │ ├── DefinedCreateQueryResult.md
│ │ │ │ │ ├── DefinedInitialDataOptions.md
│ │ │ │ │ ├── HydrationBoundary.md
│ │ │ │ │ ├── MutationStateOptions.md
│ │ │ │ │ ├── QueriesOptions.md
│ │ │ │ │ ├── QueriesResults.md
│ │ │ │ │ ├── QueryClientProviderProps.md
│ │ │ │ │ └── UndefinedInitialDataOptions.md
│ │ │ │ └── variables/
│ │ │ │ └── HydrationBoundary.md
│ │ │ └── ssr.md
│ │ └── vue/
│ │ ├── devtools.md
│ │ ├── graphql.md
│ │ ├── guides/
│ │ │ ├── background-fetching-indicators.md
│ │ │ ├── caching.md
│ │ │ ├── custom-client.md
│ │ │ ├── default-query-function.md
│ │ │ ├── dependent-queries.md
│ │ │ ├── disabling-queries.md
│ │ │ ├── does-this-replace-client-state.md
│ │ │ ├── filters.md
│ │ │ ├── important-defaults.md
│ │ │ ├── infinite-queries.md
│ │ │ ├── initial-query-data.md
│ │ │ ├── invalidations-from-mutations.md
│ │ │ ├── migrating-to-v5.md
│ │ │ ├── mutations.md
│ │ │ ├── network-mode.md
│ │ │ ├── optimistic-updates.md
│ │ │ ├── paginated-queries.md
│ │ │ ├── parallel-queries.md
│ │ │ ├── placeholder-query-data.md
│ │ │ ├── prefetching.md
│ │ │ ├── queries.md
│ │ │ ├── query-cancellation.md
│ │ │ ├── query-functions.md
│ │ │ ├── query-invalidation.md
│ │ │ ├── query-keys.md
│ │ │ ├── query-options.md
│ │ │ ├── query-retries.md
│ │ │ ├── scroll-restoration.md
│ │ │ ├── ssr.md
│ │ │ ├── suspense.md
│ │ │ ├── testing.md
│ │ │ ├── updates-from-mutation-responses.md
│ │ │ └── window-focus-refetching.md
│ │ ├── installation.md
│ │ ├── overview.md
│ │ ├── plugins/
│ │ │ ├── broadcastQueryClient.md
│ │ │ └── createPersister.md
│ │ ├── quick-start.md
│ │ ├── reactivity.md
│ │ ├── reference/
│ │ │ ├── hydration.md
│ │ │ ├── infiniteQueryOptions.md
│ │ │ ├── queryOptions.md
│ │ │ ├── useInfiniteQuery.md
│ │ │ ├── useIsFetching.md
│ │ │ ├── useIsMutating.md
│ │ │ ├── useMutation.md
│ │ │ ├── useMutationState.md
│ │ │ ├── useQueries.md
│ │ │ ├── useQuery.md
│ │ │ └── useQueryClient.md
│ │ └── typescript.md
│ └── reference/
│ ├── InfiniteQueryObserver.md
│ ├── MutationCache.md
│ ├── QueriesObserver.md
│ ├── QueryCache.md
│ ├── QueryClient.md
│ ├── QueryObserver.md
│ ├── environmentManager.md
│ ├── focusManager.md
│ ├── notifyManager.md
│ ├── onlineManager.md
│ ├── streamedQuery.md
│ └── timeoutManager.md
├── eslint.config.js
├── examples/
│ ├── angular/
│ │ ├── auto-refetching/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── auto-refetching.component.html
│ │ │ │ │ │ └── auto-refetching.component.ts
│ │ │ │ │ ├── interceptor/
│ │ │ │ │ │ └── mock-api.interceptor.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── tasks.service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── basic/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.component.html
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── post.component.html
│ │ │ │ │ │ ├── post.component.ts
│ │ │ │ │ │ ├── posts.component.html
│ │ │ │ │ │ └── posts.component.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── posts-service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── basic-persister/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.component.html
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── post.component.html
│ │ │ │ │ │ ├── post.component.ts
│ │ │ │ │ │ ├── posts.component.html
│ │ │ │ │ │ └── posts.component.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── posts-service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── devtools-panel/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── app.routes.ts
│ │ │ │ │ └── components/
│ │ │ │ │ ├── basic-devtools-panel-example.component.ts
│ │ │ │ │ ├── example-query.component.ts
│ │ │ │ │ └── lazy-load-devtools-panel-example.component.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── infinite-query-with-max-pages/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── api/
│ │ │ │ │ │ └── projects-mock.interceptor.ts
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── example.component.html
│ │ │ │ │ │ └── example.component.ts
│ │ │ │ │ ├── directives/
│ │ │ │ │ │ └── project-style.directive.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── projects.service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── optimistic-updates/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── optimistic-updates.component.ts
│ │ │ │ │ ├── interceptor/
│ │ │ │ │ │ └── mock-api.interceptor.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── tasks.service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── pagination/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── api/
│ │ │ │ │ │ └── projects-mock.interceptor.ts
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── example.component.html
│ │ │ │ │ │ └── example.component.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── projects.service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── query-options-from-a-service/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.component.html
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── app.routes.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── post.component.html
│ │ │ │ │ │ ├── post.component.ts
│ │ │ │ │ │ ├── posts.component.html
│ │ │ │ │ │ └── posts.component.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── queries-service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── router/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.component.html
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── app.routes.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── post.component.html
│ │ │ │ │ │ ├── post.component.ts
│ │ │ │ │ │ ├── posts.component.html
│ │ │ │ │ │ └── posts.component.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── posts-service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ ├── rxjs/
│ │ │ ├── .devcontainer/
│ │ │ │ └── devcontainer.json
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── angular.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── api/
│ │ │ │ │ │ └── autocomplete-mock.interceptor.ts
│ │ │ │ │ ├── app.component.ts
│ │ │ │ │ ├── app.config.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── example.component.html
│ │ │ │ │ │ └── example.component.ts
│ │ │ │ │ └── services/
│ │ │ │ │ └── autocomplete-service.ts
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.json
│ │ └── simple/
│ │ ├── .devcontainer/
│ │ │ └── devcontainer.json
│ │ ├── .eslintrc.cjs
│ │ ├── README.md
│ │ ├── angular.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ └── components/
│ │ │ │ ├── simple-example.component.html
│ │ │ │ └── simple-example.component.ts
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ └── styles.css
│ │ ├── tsconfig.app.json
│ │ └── tsconfig.json
│ ├── preact/
│ │ └── simple/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── index.tsx
│ │ │ └── style.css
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── react/
│ │ ├── algolia/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── eslint.config.js
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── Search.tsx
│ │ │ │ ├── SearchResults.tsx
│ │ │ │ ├── algolia.ts
│ │ │ │ ├── index.tsx
│ │ │ │ ├── styles.css
│ │ │ │ └── useAlgolia.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── auto-refetching/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── pages/
│ │ │ │ ├── api/
│ │ │ │ │ └── data.ts
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── basic/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── eslint.config.js
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── basic-graphql-request/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── eslint.config.js
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── chat/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── chat.ts
│ │ │ │ ├── index.tsx
│ │ │ │ ├── message.tsx
│ │ │ │ └── style.css
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── default-query-function/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── devtools-panel/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── eslint-legacy/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── infinite-query-with-max-pages/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── pages/
│ │ │ │ ├── api/
│ │ │ │ │ └── projects.ts
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── load-more-infinite-scroll/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── pages/
│ │ │ │ ├── about.tsx
│ │ │ │ ├── api/
│ │ │ │ │ └── projects.ts
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── nextjs/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── components/
│ │ │ │ │ ├── Header.tsx
│ │ │ │ │ ├── InfoBox.tsx
│ │ │ │ │ ├── Layout.tsx
│ │ │ │ │ ├── PostList.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── hooks/
│ │ │ │ │ └── usePosts.ts
│ │ │ │ └── pages/
│ │ │ │ ├── _app.tsx
│ │ │ │ ├── client-only.tsx
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── nextjs-app-prefetching/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── get-query-client.ts
│ │ │ │ ├── layout.tsx
│ │ │ │ ├── page.tsx
│ │ │ │ ├── pokemon-info.tsx
│ │ │ │ ├── pokemon.ts
│ │ │ │ └── providers.tsx
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ └── tsconfig.json
│ │ ├── nextjs-suspense-streaming/
│ │ │ ├── .gitignore
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── app/
│ │ │ │ ├── api/
│ │ │ │ │ └── wait/
│ │ │ │ │ └── route.ts
│ │ │ │ ├── layout.tsx
│ │ │ │ ├── page.tsx
│ │ │ │ └── providers.tsx
│ │ │ └── tsconfig.json
│ │ ├── offline/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── public/
│ │ │ │ └── mockServiceWorker.js
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── api.ts
│ │ │ │ ├── index.tsx
│ │ │ │ └── movies.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── optimistic-updates-cache/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── pages/
│ │ │ │ ├── api/
│ │ │ │ │ └── data.ts
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── optimistic-updates-ui/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── pages/
│ │ │ │ ├── api/
│ │ │ │ │ └── data.ts
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── pagination/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── pages/
│ │ │ │ ├── api/
│ │ │ │ │ └── projects.ts
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── playground/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── index.tsx
│ │ │ │ └── styles.css
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── prefetching/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── next.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── pages/
│ │ │ │ ├── [user]/
│ │ │ │ │ └── [repo].tsx
│ │ │ │ ├── _app.tsx
│ │ │ │ └── index.tsx
│ │ │ └── tsconfig.json
│ │ ├── react-native/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── App.tsx
│ │ │ ├── README.md
│ │ │ ├── app.json
│ │ │ ├── babel.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── components/
│ │ │ │ │ ├── Divider.tsx
│ │ │ │ │ ├── ErrorMessage.tsx
│ │ │ │ │ ├── ListItem.tsx
│ │ │ │ │ └── LoadingIndicator.tsx
│ │ │ │ ├── data/
│ │ │ │ │ └── movies.json
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useAppState.ts
│ │ │ │ │ ├── useOnlineManager.ts
│ │ │ │ │ ├── useRefreshByUser.ts
│ │ │ │ │ └── useRefreshOnFocus.ts
│ │ │ │ ├── lib/
│ │ │ │ │ └── api.ts
│ │ │ │ ├── navigation/
│ │ │ │ │ ├── MoviesStack.tsx
│ │ │ │ │ └── types.ts
│ │ │ │ └── screens/
│ │ │ │ ├── MovieDetailsScreen.tsx
│ │ │ │ └── MoviesListScreen.tsx
│ │ │ └── tsconfig.json
│ │ ├── react-router/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── contacts.ts
│ │ │ │ ├── error-page.tsx
│ │ │ │ ├── index.css
│ │ │ │ ├── index.tsx
│ │ │ │ └── routes/
│ │ │ │ ├── contact.tsx
│ │ │ │ ├── destroy.tsx
│ │ │ │ ├── edit.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── new.tsx
│ │ │ │ └── root.tsx
│ │ │ └── tsconfig.json
│ │ ├── rick-morty/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── Character.tsx
│ │ │ │ ├── Characters.tsx
│ │ │ │ ├── Episode.tsx
│ │ │ │ ├── Episodes.tsx
│ │ │ │ ├── Home.tsx
│ │ │ │ ├── Layout.tsx
│ │ │ │ ├── api.ts
│ │ │ │ ├── index.tsx
│ │ │ │ └── styles.css
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── shadow-dom/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── eslint.config.js
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── DogList.tsx
│ │ │ │ ├── index.css
│ │ │ │ ├── main.tsx
│ │ │ │ └── vite-env.d.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── simple/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── star-wars/
│ │ │ ├── .eslintrc
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── Character.tsx
│ │ │ │ ├── Characters.tsx
│ │ │ │ ├── Film.tsx
│ │ │ │ ├── Films.tsx
│ │ │ │ ├── Home.tsx
│ │ │ │ ├── Layout.tsx
│ │ │ │ ├── api.ts
│ │ │ │ ├── index.tsx
│ │ │ │ └── styles.css
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ └── suspense/
│ │ ├── .eslintrc
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── Button.tsx
│ │ │ │ ├── Project.tsx
│ │ │ │ ├── Projects.tsx
│ │ │ │ └── Spinner.tsx
│ │ │ ├── index.tsx
│ │ │ └── queries.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── solid/
│ │ ├── astro/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── astro.config.mjs
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── components/
│ │ │ │ │ ├── Link.tsx
│ │ │ │ │ └── SolidApp.tsx
│ │ │ │ ├── env.d.ts
│ │ │ │ ├── layouts/
│ │ │ │ │ └── MainLayout.astro
│ │ │ │ ├── pages/
│ │ │ │ │ └── index.astro
│ │ │ │ └── utils/
│ │ │ │ └── index.ts
│ │ │ ├── tailwind.config.mjs
│ │ │ └── tsconfig.json
│ │ ├── basic/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── basic-graphql-request/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── default-query-function/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── offline/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── api.ts
│ │ │ │ ├── index.tsx
│ │ │ │ └── movies.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── simple/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ └── solid-start-streaming/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app.config.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app.css
│ │ │ ├── app.tsx
│ │ │ ├── components/
│ │ │ │ ├── example.tsx
│ │ │ │ ├── post-viewer.tsx
│ │ │ │ ├── query-boundary.tsx
│ │ │ │ └── user-info.tsx
│ │ │ ├── entry-client.tsx
│ │ │ ├── entry-server.tsx
│ │ │ ├── global.d.ts
│ │ │ ├── routes/
│ │ │ │ ├── [...404].tsx
│ │ │ │ ├── batch-methods.tsx
│ │ │ │ ├── deferred.tsx
│ │ │ │ ├── hydration.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── mixed.tsx
│ │ │ │ ├── prefetch.tsx
│ │ │ │ ├── streamed.tsx
│ │ │ │ └── with-error.tsx
│ │ │ └── utils/
│ │ │ └── api.ts
│ │ └── tsconfig.json
│ ├── svelte/
│ │ ├── auto-refetching/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app.css
│ │ │ │ ├── app.d.ts
│ │ │ │ ├── app.html
│ │ │ │ └── routes/
│ │ │ │ ├── +layout.svelte
│ │ │ │ ├── +page.svelte
│ │ │ │ └── api/
│ │ │ │ └── data/
│ │ │ │ └── +server.ts
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── basic/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app.css
│ │ │ │ ├── app.d.ts
│ │ │ │ ├── app.html
│ │ │ │ ├── lib/
│ │ │ │ │ ├── Post.svelte
│ │ │ │ │ ├── Posts.svelte
│ │ │ │ │ ├── data.ts
│ │ │ │ │ └── types.ts
│ │ │ │ └── routes/
│ │ │ │ ├── +layout.svelte
│ │ │ │ ├── +page.svelte
│ │ │ │ └── [postId]/
│ │ │ │ ├── +page.svelte
│ │ │ │ └── +page.ts
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── load-more-infinite-scroll/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app.css
│ │ │ │ ├── app.d.ts
│ │ │ │ ├── app.html
│ │ │ │ ├── lib/
│ │ │ │ │ └── LoadMore.svelte
│ │ │ │ └── routes/
│ │ │ │ ├── +layout.svelte
│ │ │ │ └── +page.svelte
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── optimistic-updates/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app.css
│ │ │ │ ├── app.d.ts
│ │ │ │ ├── app.html
│ │ │ │ └── routes/
│ │ │ │ ├── +layout.svelte
│ │ │ │ ├── +page.svelte
│ │ │ │ └── api/
│ │ │ │ └── data/
│ │ │ │ └── +server.ts
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── playground/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app.css
│ │ │ │ ├── app.d.ts
│ │ │ │ ├── app.html
│ │ │ │ ├── lib/
│ │ │ │ │ └── stores.svelte.ts
│ │ │ │ └── routes/
│ │ │ │ ├── +layout.svelte
│ │ │ │ ├── +page.svelte
│ │ │ │ ├── AddTodo.svelte
│ │ │ │ ├── App.svelte
│ │ │ │ ├── EditTodo.svelte
│ │ │ │ └── TodosList.svelte
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── simple/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── App.svelte
│ │ │ │ ├── app.css
│ │ │ │ ├── lib/
│ │ │ │ │ └── Simple.svelte
│ │ │ │ ├── main.ts
│ │ │ │ └── vite-env.d.ts
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ ├── ssr/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── app.css
│ │ │ │ ├── app.d.ts
│ │ │ │ ├── app.html
│ │ │ │ ├── lib/
│ │ │ │ │ ├── Post.svelte
│ │ │ │ │ ├── Posts.svelte
│ │ │ │ │ ├── api.ts
│ │ │ │ │ └── types.ts
│ │ │ │ └── routes/
│ │ │ │ ├── +layout.svelte
│ │ │ │ ├── +layout.ts
│ │ │ │ ├── +page.svelte
│ │ │ │ ├── +page.ts
│ │ │ │ └── [postId]/
│ │ │ │ ├── +page.svelte
│ │ │ │ └── +page.ts
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.ts
│ │ └── star-wars/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app.css
│ │ │ ├── app.d.ts
│ │ │ ├── app.html
│ │ │ ├── lib/
│ │ │ │ └── api.ts
│ │ │ └── routes/
│ │ │ ├── +layout.svelte
│ │ │ ├── +page.svelte
│ │ │ ├── characters/
│ │ │ │ ├── +page.svelte
│ │ │ │ └── [characterId]/
│ │ │ │ ├── +page.svelte
│ │ │ │ ├── Film.svelte
│ │ │ │ └── Homeworld.svelte
│ │ │ └── films/
│ │ │ ├── +page.svelte
│ │ │ └── [filmId]/
│ │ │ ├── +page.svelte
│ │ │ └── Character.svelte
│ │ ├── svelte.config.js
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ └── vue/
│ ├── 2.6-basic/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── Post.vue
│ │ │ ├── Posts.vue
│ │ │ ├── main.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── types.d.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── 2.7-basic/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── Post.vue
│ │ │ ├── Posts.vue
│ │ │ ├── main.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── types.d.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── basic/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── Post.vue
│ │ │ ├── Posts.vue
│ │ │ ├── main.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── types.d.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── dependent-queries/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── Post.vue
│ │ │ ├── Posts.vue
│ │ │ ├── main.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── types.d.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── nuxt3/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app.vue
│ │ ├── nuxt.config.ts
│ │ ├── package.json
│ │ ├── plugins/
│ │ │ └── vue-query.ts
│ │ └── tsconfig.json
│ ├── persister/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── Post.vue
│ │ │ ├── Posts.vue
│ │ │ ├── main.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── types.d.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ └── simple/
│ ├── .gitignore
│ ├── README.md
│ ├── index.html
│ ├── package.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── main.ts
│ │ ├── shims-vue.d.ts
│ │ └── types.d.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── integrations/
│ ├── angular-cli-20/
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── angular.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.config.ts
│ │ │ │ └── app.ts
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ └── styles.css
│ │ ├── tsconfig.app.json
│ │ └── tsconfig.json
│ ├── react-next-14/
│ │ ├── .eslintrc.cjs
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── client-component.tsx
│ │ │ ├── layout.tsx
│ │ │ ├── page.tsx
│ │ │ └── providers.tsx
│ │ ├── next.config.js
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── react-next-15/
│ │ ├── .eslintrc.cjs
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── _action.ts
│ │ │ ├── client-component.tsx
│ │ │ ├── count/
│ │ │ │ └── route.ts
│ │ │ ├── layout.tsx
│ │ │ ├── make-query-client.ts
│ │ │ ├── page.tsx
│ │ │ └── providers.tsx
│ │ ├── next.config.js
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── react-next-16/
│ │ ├── .eslintrc.cjs
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── _action.ts
│ │ │ ├── client-component.tsx
│ │ │ ├── count/
│ │ │ │ └── route.ts
│ │ │ ├── layout.tsx
│ │ │ ├── make-query-client.ts
│ │ │ ├── page.tsx
│ │ │ └── providers.tsx
│ │ ├── next.config.js
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── react-vite/
│ │ ├── .eslintrc.cjs
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.jsx
│ │ │ └── main.jsx
│ │ ├── tsconfig.json
│ │ └── vite.config.js
│ ├── react-webpack-4/
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── App.js
│ │ │ └── index.js
│ │ └── webpack.config.js
│ ├── react-webpack-5/
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── App.js
│ │ │ └── index.js
│ │ └── webpack.config.js
│ ├── solid-vite/
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.jsx
│ │ │ └── index.jsx
│ │ └── vite.config.js
│ ├── svelte-vite/
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.svelte
│ │ │ ├── Simple.svelte
│ │ │ ├── main.js
│ │ │ └── vite-env.d.ts
│ │ ├── svelte.config.js
│ │ └── vite.config.js
│ └── vue-vite/
│ ├── .gitignore
│ ├── index.html
│ ├── package.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── main.ts
│ │ └── vite-env.d.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── knip.json
├── labeler-config.yml
├── media/
│ └── logo.sketch
├── nx.json
├── package.json
├── packages/
│ ├── angular-query-experimental/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ └── prepack.js
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ ├── infinite-query-options.test-d.ts
│ │ │ │ ├── infinite-query-options.test.ts
│ │ │ │ ├── inject-devtools-panel.test.ts
│ │ │ │ ├── inject-infinite-query.test-d.ts
│ │ │ │ ├── inject-infinite-query.test.ts
│ │ │ │ ├── inject-is-fetching.test.ts
│ │ │ │ ├── inject-is-mutating.test.ts
│ │ │ │ ├── inject-is-restoring.test.ts
│ │ │ │ ├── inject-mutation-state.test-d.ts
│ │ │ │ ├── inject-mutation-state.test.ts
│ │ │ │ ├── inject-mutation.test-d.ts
│ │ │ │ ├── inject-mutation.test.ts
│ │ │ │ ├── inject-queries.test-d.ts
│ │ │ │ ├── inject-queries.test.ts
│ │ │ │ ├── inject-query.test-d.ts
│ │ │ │ ├── inject-query.test.ts
│ │ │ │ ├── mutation-options.test-d.ts
│ │ │ │ ├── mutation-options.test.ts
│ │ │ │ ├── pending-tasks.test.ts
│ │ │ │ ├── provide-query-client.test.ts
│ │ │ │ ├── provide-tanstack-query.test.ts
│ │ │ │ ├── query-options.test-d.ts
│ │ │ │ ├── query-options.test.ts
│ │ │ │ ├── signal-proxy.test.ts
│ │ │ │ ├── test-utils.ts
│ │ │ │ └── with-devtools.test.ts
│ │ │ ├── create-base-query.ts
│ │ │ ├── devtools/
│ │ │ │ ├── index.ts
│ │ │ │ ├── production/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── stub.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── with-devtools.ts
│ │ │ ├── devtools-panel/
│ │ │ │ ├── index.ts
│ │ │ │ ├── inject-devtools-panel.ts
│ │ │ │ ├── production/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── stub.ts
│ │ │ │ └── types.ts
│ │ │ ├── index.ts
│ │ │ ├── infinite-query-options.ts
│ │ │ ├── inject-infinite-query.ts
│ │ │ ├── inject-is-fetching.ts
│ │ │ ├── inject-is-mutating.ts
│ │ │ ├── inject-is-restoring.ts
│ │ │ ├── inject-mutation-state.ts
│ │ │ ├── inject-mutation.ts
│ │ │ ├── inject-queries-experimental/
│ │ │ │ └── index.ts
│ │ │ ├── inject-queries.ts
│ │ │ ├── inject-query-client.ts
│ │ │ ├── inject-query.ts
│ │ │ ├── mutation-options.ts
│ │ │ ├── pending-tasks-compat.ts
│ │ │ ├── providers.ts
│ │ │ ├── query-options.ts
│ │ │ ├── signal-proxy.ts
│ │ │ └── types.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ └── vite.config.ts
│ ├── angular-query-persist-client/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ └── with-persist-query-client.test.ts
│ │ │ ├── index.ts
│ │ │ └── with-persist-query-client.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── eslint-plugin-query/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── root.tsup.config.js
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ ├── exhaustive-deps.test.ts
│ │ │ │ ├── infinite-query-property-order.rule.test.ts
│ │ │ │ ├── mutation-property-order.rule.test.ts
│ │ │ │ ├── no-rest-destructuring.test.ts
│ │ │ │ ├── no-unstable-deps.test.ts
│ │ │ │ ├── no-void-query-fn.test.ts
│ │ │ │ ├── sort-data-by-order.utils.test.ts
│ │ │ │ ├── stable-query-client.test.ts
│ │ │ │ ├── test-utils.test.ts
│ │ │ │ ├── test-utils.ts
│ │ │ │ └── ts-fixture/
│ │ │ │ ├── file.ts
│ │ │ │ └── tsconfig.json
│ │ │ ├── index.ts
│ │ │ ├── rules/
│ │ │ │ ├── exhaustive-deps/
│ │ │ │ │ ├── exhaustive-deps.rule.ts
│ │ │ │ │ └── exhaustive-deps.utils.ts
│ │ │ │ ├── infinite-query-property-order/
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ └── infinite-query-property-order.rule.ts
│ │ │ │ ├── mutation-property-order/
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ └── mutation-property-order.rule.ts
│ │ │ │ ├── no-rest-destructuring/
│ │ │ │ │ ├── no-rest-destructuring.rule.ts
│ │ │ │ │ └── no-rest-destructuring.utils.ts
│ │ │ │ ├── no-unstable-deps/
│ │ │ │ │ └── no-unstable-deps.rule.ts
│ │ │ │ ├── no-void-query-fn/
│ │ │ │ │ └── no-void-query-fn.rule.ts
│ │ │ │ └── stable-query-client/
│ │ │ │ └── stable-query-client.rule.ts
│ │ │ ├── rules.ts
│ │ │ ├── types.ts
│ │ │ └── utils/
│ │ │ ├── ast-utils.ts
│ │ │ ├── create-property-order-rule.ts
│ │ │ ├── detect-react-query-imports.ts
│ │ │ ├── get-docs-url.ts
│ │ │ ├── sort-data-by-order.ts
│ │ │ └── unique-by.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── preact-query/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── HydrationBoundary.tsx
│ │ │ ├── IsRestoringProvider.ts
│ │ │ ├── QueryClientProvider.tsx
│ │ │ ├── QueryErrorResetBoundary.tsx
│ │ │ ├── __tests__/
│ │ │ │ ├── ErrorBoundary/
│ │ │ │ │ ├── ErrorBoundary.ts
│ │ │ │ │ ├── ErrorBoundaryContext.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── HydrationBoundary.test.tsx
│ │ │ │ ├── QueryClientProvider.test.tsx
│ │ │ │ ├── QueryResetErrorBoundary.test.tsx
│ │ │ │ ├── fine-grained-persister.test.tsx
│ │ │ │ ├── infiniteQueryOptions.test-d.tsx
│ │ │ │ ├── infiniteQueryOptions.test.tsx
│ │ │ │ ├── mutationOptions.test-d.tsx
│ │ │ │ ├── mutationOptions.test.tsx
│ │ │ │ ├── queryOptions.test-d.tsx
│ │ │ │ ├── queryOptions.test.tsx
│ │ │ │ ├── ssr-hydration.test.tsx
│ │ │ │ ├── ssr.test.tsx
│ │ │ │ ├── suspense.test.tsx
│ │ │ │ ├── useInfiniteQuery.test-d.tsx
│ │ │ │ ├── useInfiniteQuery.test.tsx
│ │ │ │ ├── useIsFetching.test.tsx
│ │ │ │ ├── useMutation.test.tsx
│ │ │ │ ├── useMutationState.test-d.tsx
│ │ │ │ ├── useMutationState.test.tsx
│ │ │ │ ├── usePrefetchInfiniteQuery.test-d.tsx
│ │ │ │ ├── usePrefetchInfiniteQuery.test.tsx
│ │ │ │ ├── usePrefetchQuery.test-d.tsx
│ │ │ │ ├── usePrefetchQuery.test.tsx
│ │ │ │ ├── useQueries.test-d.tsx
│ │ │ │ ├── useQueries.test.tsx
│ │ │ │ ├── useQuery.test-d.tsx
│ │ │ │ ├── useQuery.test.tsx
│ │ │ │ ├── useSuspenseInfiniteQuery.test-d.tsx
│ │ │ │ ├── useSuspenseInfiniteQuery.test.tsx
│ │ │ │ ├── useSuspenseQueries.test-d.tsx
│ │ │ │ ├── useSuspenseQueries.test.tsx
│ │ │ │ ├── useSuspenseQuery.test-d.tsx
│ │ │ │ ├── useSuspenseQuery.test.tsx
│ │ │ │ └── utils.tsx
│ │ │ ├── errorBoundaryUtils.ts
│ │ │ ├── index.ts
│ │ │ ├── infiniteQueryOptions.ts
│ │ │ ├── mutationOptions.ts
│ │ │ ├── queryOptions.ts
│ │ │ ├── suspense.ts
│ │ │ ├── types.ts
│ │ │ ├── useBaseQuery.ts
│ │ │ ├── useInfiniteQuery.ts
│ │ │ ├── useIsFetching.ts
│ │ │ ├── useMutation.ts
│ │ │ ├── useMutationState.ts
│ │ │ ├── usePrefetchInfiniteQuery.tsx
│ │ │ ├── usePrefetchQuery.tsx
│ │ │ ├── useQueries.ts
│ │ │ ├── useQuery.ts
│ │ │ ├── useSuspenseInfiniteQuery.ts
│ │ │ ├── useSuspenseQueries.ts
│ │ │ ├── useSuspenseQuery.ts
│ │ │ └── utils.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── preact-query-devtools/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── root.eslint.config.js
│ │ ├── root.tsup.config.js
│ │ ├── src/
│ │ │ ├── PreactQueryDevtools.tsx
│ │ │ ├── PreactQueryDevtoolsPanel.tsx
│ │ │ ├── index.ts
│ │ │ └── production.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── preact-query-persist-client/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── PersistQueryClientProvider.tsx
│ │ │ ├── __tests__/
│ │ │ │ ├── PersistQueryClientProvider.test.tsx
│ │ │ │ ├── testPersistProvider.tsx
│ │ │ │ └── use-queries-with-persist.test.tsx
│ │ │ └── index.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── query-async-storage-persister/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ └── asyncThrottle.test.ts
│ │ │ ├── asyncThrottle.ts
│ │ │ ├── index.ts
│ │ │ └── utils.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── query-broadcast-client-experimental/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ └── index.test.ts
│ │ │ └── index.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── query-codemods/
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── utils/
│ │ │ │ ├── index.cjs
│ │ │ │ └── transformers/
│ │ │ │ ├── query-cache-transformer.cjs
│ │ │ │ ├── query-client-transformer.cjs
│ │ │ │ └── use-query-like-transformer.cjs
│ │ │ ├── v4/
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ ├── default-import.input.tsx
│ │ │ │ │ ├── default-import.output.tsx
│ │ │ │ │ ├── named-import.input.tsx
│ │ │ │ │ ├── named-import.output.tsx
│ │ │ │ │ ├── namespaced-import.input.tsx
│ │ │ │ │ ├── namespaced-import.output.tsx
│ │ │ │ │ ├── parameter-is-identifier.input.tsx
│ │ │ │ │ ├── parameter-is-identifier.output.tsx
│ │ │ │ │ ├── parameter-is-object-expression.input.tsx
│ │ │ │ │ ├── parameter-is-object-expression.output.tsx
│ │ │ │ │ ├── replace-import-specifier.input.tsx
│ │ │ │ │ ├── replace-import-specifier.output.tsx
│ │ │ │ │ ├── type-arguments.input.tsx
│ │ │ │ │ └── type-arguments.output.tsx
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── key-transformation.test.cjs
│ │ │ │ │ └── replace-import-specifier.test.cjs
│ │ │ │ ├── key-transformation.cjs
│ │ │ │ ├── replace-import-specifier.cjs
│ │ │ │ └── utils/
│ │ │ │ └── replacers/
│ │ │ │ └── key-replacer.cjs
│ │ │ └── v5/
│ │ │ ├── is-loading/
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ ├── default-import.input.tsx
│ │ │ │ │ ├── default-import.output.tsx
│ │ │ │ │ ├── named-import.input.tsx
│ │ │ │ │ └── named-import.output.tsx
│ │ │ │ ├── __tests__/
│ │ │ │ │ └── is-loading.test.cjs
│ │ │ │ └── is-loading.cjs
│ │ │ ├── keep-previous-data/
│ │ │ │ ├── README.md
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ ├── default.input.tsx
│ │ │ │ │ ├── default.output.tsx
│ │ │ │ │ ├── named.input.tsx
│ │ │ │ │ └── named.output.tsx
│ │ │ │ ├── __tests__/
│ │ │ │ │ └── keep-previous-data.test.cjs
│ │ │ │ ├── keep-previous-data.cjs
│ │ │ │ └── utils/
│ │ │ │ └── already-has-placeholder-data-property.cjs
│ │ │ ├── remove-overloads/
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ ├── bug-reports.input.tsx
│ │ │ │ │ ├── bug-reports.output.tsx
│ │ │ │ │ ├── default-import.input.tsx
│ │ │ │ │ └── default-import.output.tsx
│ │ │ │ ├── __tests__/
│ │ │ │ │ └── remove-overloads.test.cjs
│ │ │ │ ├── remove-overloads.cjs
│ │ │ │ ├── transformers/
│ │ │ │ │ ├── filter-aware-usage-transformer.cjs
│ │ │ │ │ └── query-fn-aware-usage-transformer.cjs
│ │ │ │ └── utils/
│ │ │ │ ├── index.cjs
│ │ │ │ └── unknown-usage-error.cjs
│ │ │ ├── rename-hydrate/
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ ├── default-import.input.tsx
│ │ │ │ │ ├── default-import.output.tsx
│ │ │ │ │ ├── named-import.input.tsx
│ │ │ │ │ └── named-import.output.tsx
│ │ │ │ ├── __tests__/
│ │ │ │ │ └── rename-hydrate.test.cjs
│ │ │ │ └── rename-hydrate.cjs
│ │ │ └── rename-properties/
│ │ │ ├── __testfixtures__/
│ │ │ │ ├── rename-cache-time.input.tsx
│ │ │ │ ├── rename-cache-time.output.tsx
│ │ │ │ ├── rename-use-error-boundary.input.tsx
│ │ │ │ └── rename-use-error-boundary.output.tsx
│ │ │ ├── __tests__/
│ │ │ │ └── rename-properties.test.cjs
│ │ │ └── rename-properties.cjs
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── query-core/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ ├── OmitKeyof.test-d.ts
│ │ │ │ ├── environmentManager.test.tsx
│ │ │ │ ├── focusManager.test.tsx
│ │ │ │ ├── hydration.test.tsx
│ │ │ │ ├── infiniteQueryBehavior.test.tsx
│ │ │ │ ├── infiniteQueryObserver.test-d.tsx
│ │ │ │ ├── infiniteQueryObserver.test.tsx
│ │ │ │ ├── mutation.test-d.tsx
│ │ │ │ ├── mutationCache.test.tsx
│ │ │ │ ├── mutationObserver.test.tsx
│ │ │ │ ├── mutations.test.tsx
│ │ │ │ ├── notifyManager.test.tsx
│ │ │ │ ├── onlineManager.test.tsx
│ │ │ │ ├── queriesObserver.test.tsx
│ │ │ │ ├── query.test.tsx
│ │ │ │ ├── queryCache.test.tsx
│ │ │ │ ├── queryClient.test-d.tsx
│ │ │ │ ├── queryClient.test.tsx
│ │ │ │ ├── queryObserver.test-d.tsx
│ │ │ │ ├── queryObserver.test.tsx
│ │ │ │ ├── streamedQuery.test.tsx
│ │ │ │ ├── timeoutManager.test.tsx
│ │ │ │ ├── utils.test-d.tsx
│ │ │ │ ├── utils.test.tsx
│ │ │ │ └── utils.ts
│ │ │ ├── environmentManager.ts
│ │ │ ├── focusManager.ts
│ │ │ ├── hydration.ts
│ │ │ ├── index.ts
│ │ │ ├── infiniteQueryBehavior.ts
│ │ │ ├── infiniteQueryObserver.ts
│ │ │ ├── mutation.ts
│ │ │ ├── mutationCache.ts
│ │ │ ├── mutationObserver.ts
│ │ │ ├── notifyManager.ts
│ │ │ ├── onlineManager.ts
│ │ │ ├── queriesObserver.ts
│ │ │ ├── query.ts
│ │ │ ├── queryCache.ts
│ │ │ ├── queryClient.ts
│ │ │ ├── queryObserver.ts
│ │ │ ├── removable.ts
│ │ │ ├── retryer.ts
│ │ │ ├── streamedQuery.ts
│ │ │ ├── subscribable.ts
│ │ │ ├── thenable.ts
│ │ │ ├── timeoutManager.ts
│ │ │ ├── types.ts
│ │ │ └── utils.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── query-devtools/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── Devtools.tsx
│ │ │ ├── DevtoolsComponent.tsx
│ │ │ ├── DevtoolsPanelComponent.tsx
│ │ │ ├── Explorer.tsx
│ │ │ ├── TanstackQueryDevtools.tsx
│ │ │ ├── TanstackQueryDevtoolsPanel.tsx
│ │ │ ├── __tests__/
│ │ │ │ ├── devtools.test.tsx
│ │ │ │ └── utils.test.ts
│ │ │ ├── constants.ts
│ │ │ ├── contexts/
│ │ │ │ ├── PiPContext.tsx
│ │ │ │ ├── QueryDevtoolsContext.ts
│ │ │ │ ├── ThemeContext.ts
│ │ │ │ └── index.ts
│ │ │ ├── icons/
│ │ │ │ └── index.tsx
│ │ │ ├── index.ts
│ │ │ ├── theme.ts
│ │ │ └── utils.tsx
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── query-persist-client-core/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ ├── createPersister.test.ts
│ │ │ │ ├── persist.test.ts
│ │ │ │ └── utils.ts
│ │ │ ├── createPersister.ts
│ │ │ ├── index.ts
│ │ │ ├── persist.ts
│ │ │ └── retryStrategies.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── query-sync-storage-persister/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ └── storageIsFull.test.ts
│ │ │ ├── index.ts
│ │ │ └── utils.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── query-test-utils/
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __test__/
│ │ │ │ ├── queryKey.test.ts
│ │ │ │ └── sleep.test.ts
│ │ │ ├── index.ts
│ │ │ ├── mockVisibilityState.ts
│ │ │ ├── queryKey.ts
│ │ │ └── sleep.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── react-query/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── HydrationBoundary.tsx
│ │ │ ├── IsRestoringProvider.ts
│ │ │ ├── QueryClientProvider.tsx
│ │ │ ├── QueryErrorResetBoundary.tsx
│ │ │ ├── __tests__/
│ │ │ │ ├── HydrationBoundary.test.tsx
│ │ │ │ ├── QueryClientProvider.test.tsx
│ │ │ │ ├── QueryResetErrorBoundary.test.tsx
│ │ │ │ ├── fine-grained-persister.test.tsx
│ │ │ │ ├── infiniteQueryOptions.test-d.tsx
│ │ │ │ ├── infiniteQueryOptions.test.tsx
│ │ │ │ ├── mutationOptions.test-d.tsx
│ │ │ │ ├── mutationOptions.test.tsx
│ │ │ │ ├── queryOptions.test-d.tsx
│ │ │ │ ├── queryOptions.test.tsx
│ │ │ │ ├── ssr-hydration.test.tsx
│ │ │ │ ├── ssr.test.tsx
│ │ │ │ ├── suspense.test.tsx
│ │ │ │ ├── useInfiniteQuery.test-d.tsx
│ │ │ │ ├── useInfiniteQuery.test.tsx
│ │ │ │ ├── useIsFetching.test.tsx
│ │ │ │ ├── useMutation.test.tsx
│ │ │ │ ├── useMutationState.test-d.tsx
│ │ │ │ ├── useMutationState.test.tsx
│ │ │ │ ├── usePrefetchInfiniteQuery.test-d.tsx
│ │ │ │ ├── usePrefetchInfiniteQuery.test.tsx
│ │ │ │ ├── usePrefetchQuery.test-d.tsx
│ │ │ │ ├── usePrefetchQuery.test.tsx
│ │ │ │ ├── useQueries.test-d.tsx
│ │ │ │ ├── useQueries.test.tsx
│ │ │ │ ├── useQuery.promise.test.tsx
│ │ │ │ ├── useQuery.test-d.tsx
│ │ │ │ ├── useQuery.test.tsx
│ │ │ │ ├── useSuspenseInfiniteQuery.test-d.tsx
│ │ │ │ ├── useSuspenseInfiniteQuery.test.tsx
│ │ │ │ ├── useSuspenseQueries.test-d.tsx
│ │ │ │ ├── useSuspenseQueries.test.tsx
│ │ │ │ ├── useSuspenseQuery.test-d.tsx
│ │ │ │ ├── useSuspenseQuery.test.tsx
│ │ │ │ └── utils.tsx
│ │ │ ├── errorBoundaryUtils.ts
│ │ │ ├── index.ts
│ │ │ ├── infiniteQueryOptions.ts
│ │ │ ├── mutationOptions.ts
│ │ │ ├── queryOptions.ts
│ │ │ ├── suspense.ts
│ │ │ ├── types.ts
│ │ │ ├── useBaseQuery.ts
│ │ │ ├── useInfiniteQuery.ts
│ │ │ ├── useIsFetching.ts
│ │ │ ├── useMutation.ts
│ │ │ ├── useMutationState.ts
│ │ │ ├── usePrefetchInfiniteQuery.tsx
│ │ │ ├── usePrefetchQuery.tsx
│ │ │ ├── useQueries.ts
│ │ │ ├── useQuery.ts
│ │ │ ├── useSuspenseInfiniteQuery.ts
│ │ │ ├── useSuspenseQueries.ts
│ │ │ └── useSuspenseQuery.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── react-query-devtools/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── ReactQueryDevtools.tsx
│ │ │ ├── ReactQueryDevtoolsPanel.tsx
│ │ │ ├── __tests__/
│ │ │ │ ├── devtools.test.tsx
│ │ │ │ └── not-development.test.tsx
│ │ │ ├── index.ts
│ │ │ └── production.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── react-query-next-experimental/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── HydrationStreamProvider.tsx
│ │ │ ├── ReactQueryStreamedHydration.tsx
│ │ │ ├── htmlescape.ts
│ │ │ └── index.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── react-query-persist-client/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── PersistQueryClientProvider.tsx
│ │ │ ├── __tests__/
│ │ │ │ ├── PersistQueryClientProvider.test.tsx
│ │ │ │ └── use-queries-with-persist.test.tsx
│ │ │ └── index.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── solid-query/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── QueryClient.ts
│ │ │ ├── QueryClientProvider.tsx
│ │ │ ├── __tests__/
│ │ │ │ ├── QueryClientProvider.test.tsx
│ │ │ │ ├── createQueries.test-d.tsx
│ │ │ │ ├── mutationOptions.test-d.tsx
│ │ │ │ ├── mutationOptions.test.tsx
│ │ │ │ ├── queryOptions.test-d.tsx
│ │ │ │ ├── queryOptions.test.tsx
│ │ │ │ ├── suspense.test.tsx
│ │ │ │ ├── transition.test.tsx
│ │ │ │ ├── useInfiniteQuery.test.tsx
│ │ │ │ ├── useIsFetching.test.tsx
│ │ │ │ ├── useIsMutating.test.tsx
│ │ │ │ ├── useMutation.test.tsx
│ │ │ │ ├── useMutationState.test-d.tsx
│ │ │ │ ├── useMutationState.test.tsx
│ │ │ │ ├── useQueries.test.tsx
│ │ │ │ ├── useQuery.test-d.tsx
│ │ │ │ ├── useQuery.test.tsx
│ │ │ │ ├── useQueryOptions.test-d.tsx
│ │ │ │ └── utils.tsx
│ │ │ ├── index.ts
│ │ │ ├── infiniteQueryOptions.ts
│ │ │ ├── isRestoring.ts
│ │ │ ├── mutationOptions.ts
│ │ │ ├── queryOptions.ts
│ │ │ ├── types.ts
│ │ │ ├── useBaseQuery.ts
│ │ │ ├── useInfiniteQuery.ts
│ │ │ ├── useIsFetching.ts
│ │ │ ├── useIsMutating.ts
│ │ │ ├── useMutation.ts
│ │ │ ├── useMutationState.ts
│ │ │ ├── useQueries.ts
│ │ │ └── useQuery.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── solid-query-devtools/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __tests__/
│ │ │ │ ├── devtools.test.tsx
│ │ │ │ └── devtoolsPanel.test.tsx
│ │ │ ├── clientOnly.tsx
│ │ │ ├── devtools.tsx
│ │ │ ├── devtoolsPanel.tsx
│ │ │ └── index.tsx
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── solid-query-persist-client/
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── PersistQueryClientProvider.tsx
│ │ │ ├── __tests__/
│ │ │ │ └── PersistQueryClientProvider.test.tsx
│ │ │ └── index.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ ├── svelte-query/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── HydrationBoundary.svelte
│ │ │ ├── QueryClientProvider.svelte
│ │ │ ├── containers.svelte.ts
│ │ │ ├── context.ts
│ │ │ ├── createBaseQuery.svelte.ts
│ │ │ ├── createInfiniteQuery.ts
│ │ │ ├── createMutation.svelte.ts
│ │ │ ├── createQueries.svelte.ts
│ │ │ ├── createQuery.ts
│ │ │ ├── index.ts
│ │ │ ├── infiniteQueryOptions.ts
│ │ │ ├── mutationOptions.ts
│ │ │ ├── queryOptions.ts
│ │ │ ├── types.ts
│ │ │ ├── useHydrate.ts
│ │ │ ├── useIsFetching.svelte.ts
│ │ │ ├── useIsMutating.svelte.ts
│ │ │ ├── useIsRestoring.ts
│ │ │ ├── useMutationState.svelte.ts
│ │ │ ├── useQueryClient.ts
│ │ │ └── utils.svelte.ts
│ │ ├── svelte.config.js
│ │ ├── tests/
│ │ │ ├── HydrationBoundary/
│ │ │ │ ├── BaseExample.svelte
│ │ │ │ └── HydrationBoundary.svelte.test.ts
│ │ │ ├── ProviderWrapper.svelte
│ │ │ ├── QueryClientProvider/
│ │ │ │ ├── ChildComponent.svelte
│ │ │ │ ├── ParentComponent.svelte
│ │ │ │ └── QueryClientProvider.svelte.test.ts
│ │ │ ├── containers.svelte.test.ts
│ │ │ ├── context/
│ │ │ │ ├── BaseExample.svelte
│ │ │ │ └── context.svelte.test.ts
│ │ │ ├── createInfiniteQuery/
│ │ │ │ ├── BaseExample.svelte
│ │ │ │ ├── ChangeClient.svelte
│ │ │ │ ├── SelectExample.svelte
│ │ │ │ └── createInfiniteQuery.svelte.test.ts
│ │ │ ├── createMutation/
│ │ │ │ ├── FailureExample.svelte
│ │ │ │ ├── OnSuccessExample.svelte
│ │ │ │ ├── ResetExample.svelte
│ │ │ │ └── createMutation.svelte.test.ts
│ │ │ ├── createQueries.svelte.test.ts
│ │ │ ├── createQueries.test-d.ts
│ │ │ ├── createQuery.svelte.test.ts
│ │ │ ├── createQuery.test-d.ts
│ │ │ ├── infiniteQueryOptions.svelte.test.ts
│ │ │ ├── infiniteQueryOptions.test-d.ts
│ │ │ ├── mutationOptions/
│ │ │ │ ├── BaseExample.svelte
│ │ │ │ ├── MultiExample.svelte
│ │ │ │ ├── mutationOptions.svelte.test.ts
│ │ │ │ └── mutationOptions.test-d.ts
│ │ │ ├── queryOptions.svelte.test.ts
│ │ │ ├── queryOptions.test-d.ts
│ │ │ ├── test-setup.ts
│ │ │ ├── useIsFetching/
│ │ │ │ ├── BaseExample.svelte
│ │ │ │ ├── FetchStatus.svelte
│ │ │ │ ├── Query.svelte
│ │ │ │ └── useIsFetching.svelte.test.ts
│ │ │ ├── useIsMutating/
│ │ │ │ ├── BaseExample.svelte
│ │ │ │ ├── MutatingStatus.svelte
│ │ │ │ ├── Query.svelte
│ │ │ │ └── useIsMutating.svelte.test.ts
│ │ │ ├── useMutationState/
│ │ │ │ ├── BaseExample.svelte
│ │ │ │ ├── SelectExample.svelte
│ │ │ │ └── useMutationState.svelte.test.ts
│ │ │ └── utils.svelte.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── svelte-query-devtools/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── Devtools.svelte
│ │ │ └── index.ts
│ │ ├── svelte.config.js
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── svelte-query-persist-client/
│ │ ├── .attw.json
│ │ ├── CHANGELOG.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── PersistQueryClientProvider.svelte
│ │ │ ├── index.ts
│ │ │ └── utils.svelte.ts
│ │ ├── svelte.config.js
│ │ ├── tests/
│ │ │ ├── AwaitOnSuccess/
│ │ │ │ ├── AwaitOnSuccess.svelte
│ │ │ │ └── Provider.svelte
│ │ │ ├── FreshData/
│ │ │ │ ├── FreshData.svelte
│ │ │ │ └── Provider.svelte
│ │ │ ├── InitialData/
│ │ │ │ ├── InitialData.svelte
│ │ │ │ └── Provider.svelte
│ │ │ ├── OnSuccess/
│ │ │ │ ├── OnSuccess.svelte
│ │ │ │ └── Provider.svelte
│ │ │ ├── PersistQueryClientProvider.svelte.test.ts
│ │ │ ├── RemoveCache/
│ │ │ │ ├── Provider.svelte
│ │ │ │ └── RemoveCache.svelte
│ │ │ ├── RestoreCache/
│ │ │ │ ├── Provider.svelte
│ │ │ │ └── RestoreCache.svelte
│ │ │ ├── UseQueries/
│ │ │ │ ├── Provider.svelte
│ │ │ │ └── UseQueries.svelte
│ │ │ ├── test-setup.ts
│ │ │ └── utils.svelte.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── vue-query/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── __mocks__/
│ │ │ │ ├── useBaseQuery.ts
│ │ │ │ └── useQueryClient.ts
│ │ │ ├── __tests__/
│ │ │ │ ├── infiniteQueryOptions.test-d.ts
│ │ │ │ ├── mutationCache.test.ts
│ │ │ │ ├── queryCache.test.ts
│ │ │ │ ├── queryClient.test-d.ts
│ │ │ │ ├── queryClient.test.ts
│ │ │ │ ├── queryOptions.test-d.ts
│ │ │ │ ├── queryOptions.test.ts
│ │ │ │ ├── useInfiniteQuery.test-d.tsx
│ │ │ │ ├── useInfiniteQuery.test.ts
│ │ │ │ ├── useIsFetching.test.ts
│ │ │ │ ├── useIsMutating.test.ts
│ │ │ │ ├── useMutation.test-d.tsx
│ │ │ │ ├── useMutation.test.ts
│ │ │ │ ├── useMutationState.test.ts
│ │ │ │ ├── useQueries.test-d.ts
│ │ │ │ ├── useQueries.test.ts
│ │ │ │ ├── useQuery.test-d.ts
│ │ │ │ ├── useQuery.test.ts
│ │ │ │ ├── useQueryClient.test.ts
│ │ │ │ ├── utils.test.ts
│ │ │ │ └── vueQueryPlugin.test.ts
│ │ │ ├── devtools/
│ │ │ │ ├── devtools.ts
│ │ │ │ └── utils.ts
│ │ │ ├── index.ts
│ │ │ ├── infiniteQueryOptions.ts
│ │ │ ├── mutationCache.ts
│ │ │ ├── queryCache.ts
│ │ │ ├── queryClient.ts
│ │ │ ├── queryOptions.ts
│ │ │ ├── types.ts
│ │ │ ├── useBaseQuery.ts
│ │ │ ├── useInfiniteQuery.ts
│ │ │ ├── useIsFetching.ts
│ │ │ ├── useMutation.ts
│ │ │ ├── useMutationState.ts
│ │ │ ├── useQueries.ts
│ │ │ ├── useQuery.ts
│ │ │ ├── useQueryClient.ts
│ │ │ ├── utils.ts
│ │ │ └── vueQueryPlugin.ts
│ │ ├── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.legacy.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsup.config.ts
│ │ └── vite.config.ts
│ └── vue-query-devtools/
│ ├── .attw.json
│ ├── CHANGELOG.md
│ ├── eslint.config.js
│ ├── package.json
│ ├── src/
│ │ ├── devtools.vue
│ │ ├── devtoolsPanel.vue
│ │ ├── index.ts
│ │ ├── production.ts
│ │ └── types.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── pnpm-workspace.yaml
├── prettier.config.js
├── scripts/
│ ├── create-github-release.mjs
│ ├── generate-docs.ts
│ ├── generate-labeler-config.ts
│ ├── getTsupConfig.js
│ ├── getViteAliases.js
│ ├── tsconfig.json
│ └── verify-links.ts
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .changeset/config.json
================================================
{
"$schema": "https://unpkg.com/@changesets/config@3.1.2/schema.json",
"changelog": [
"@svitejs/changesets-changelog-github-compact",
{ "repo": "TanStack/query" }
],
"commit": false,
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"fixed": [],
"linked": [],
"ignore": [],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"onlyUpdatePeerDependentsWhenOutOfRange": true
}
}
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto eol=lf
================================================
FILE: .github/FUNDING.yml
================================================
github: [tannerlinsley, tkdodo]
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: '🐛 Bug report'
description: Report a reproducible bug or regression
body:
- type: markdown
attributes:
value: |
Thank you for reporting an issue :pray:.
This issue tracker is for reporting reproducible bugs or regression's found in [TanStack Query](https://github.com/TanStack/query)
If you have a question about how to achieve something and are struggling, please post a question
inside of TanStack Query's [Discussions tab](https://github.com/TanStack/query/discussions)
Before submitting a new bug/issue, please check the links below to see if there is a solution or question posted there already:
- TanStack Query's [Discussions tab](https://github.com/TanStack/query/discussions)
- TanStack Query's [Open Issues](https://github.com/TanStack/query/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc)
- TanStack Query's [Closed Issues](https://github.com/TanStack/query/issues?q=is%3Aissue+sort%3Aupdated-desc+is%3Aclosed)
The more information you fill in, the better the community can help you.
- type: textarea
id: description
attributes:
label: Describe the bug
description: Provide a clear and concise description of the challenge you are running into.
validations:
required: true
- type: input
id: link
attributes:
label: Your minimal, reproducible example
description: |
Please add a link to a minimal reproduction.
Note:
- Your bug may get fixed much faster if we can run your code and it doesn't have dependencies other than React/Solid/Vue/Svelte.
- To create a shareable code example for web, you can use CodeSandbox (https://codesandbox.io/s/new) or Stackblitz (https://stackblitz.com/).
- Please make sure the example is complete and runnable - e.g. avoid localhost URLs.
- To stub out real api requests - Promise.resolve and Promise.reject are good options for easy reproduction
- Feel free to fork any of the official examples to reproduce your issue: https://tanstack.com/query/latest/docs/framework/react/examples/simple
- For React Native, you can use: https://snack.expo.dev/
- For TypeScript related issues only, a TypeScript Playground link might be sufficient: https://www.typescriptlang.org/play
- Please read these tips for providing a minimal example: https://stackoverflow.com/help/mcve.
placeholder: |
e.g. Code Sandbox, Stackblitz, Expo Snack or TypeScript playground
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Describe the steps we have to take to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: Provide a clear and concise description of what you expected to happen.
placeholder: |
As a user, I expected ___ behavior but i am seeing ___
validations:
required: true
- type: dropdown
attributes:
label: How often does this bug happen?
description: |
Following the repro steps above, how easily are you able to reproduce this bug?
options:
- Every time
- Often
- Sometimes
- Only once
- type: textarea
id: screenshots_or_videos
attributes:
label: Screenshots or Videos
description: |
If applicable, add screenshots or a video to help explain your problem.
For more information on the supported file image/file types and the file size limits, please refer
to the following link: https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/attaching-files
placeholder: |
You can drag your video or image files inside of this editor ↓
- type: textarea
id: platform
attributes:
label: Platform
description: |
Please let us know which Operting System, Browser and Browser version you were using when the issue occurred.
placeholder: |
- OS: [e.g. macOS, Windows, Linux, iOS, Android]
- Browser: [e.g. Chrome, Safari, Firefox, React Native]
- Version: [e.g. 91.1]
validations:
required: true
- type: dropdown
id: adapter
attributes:
label: Tanstack Query adapter
description: |
Please let us know which adapter of TanStack Query you were using when the issue occurred.
options:
- react-query
- solid-query
- svelte-query
- vue-query
- angular-query
- vanilla
- type: input
id: rq-version
attributes:
label: TanStack Query version
description: |
Please let us know the exact version of TanStack Query you were using when the issue occurred. Please don't just put in "latest", as this is subject to change.
placeholder: |
e.g. v5.51.9
validations:
required: true
- type: input
id: ts-version
attributes:
label: TypeScript version
description: |
If you are using TypeScript, please let us know the exact version of TypeScript you were using when the issue occurred.
placeholder: |
e.g. v5.5.4
- type: textarea
id: additional
attributes:
label: Additional context
description: Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: 🤔 Feature Requests & Questions
url: https://github.com/TanStack/query/discussions
about: Please ask and answer questions here.
- name: 💬 Community Chat
url: https://discord.gg/mQd7egN
about: A dedicated discord server hosted by TanStack
- name: 🦋 TanStack Bluesky
url: https://bsky.app/profile/tanstack.com
about: Stay up to date with new releases of our libraries
================================================
FILE: .github/pull_request_template.md
================================================
## 🎯 Changes
<!-- What changes are made in this PR? Describe the change and its motivation. -->
## ✅ Checklist
- [ ] I have followed the steps in the [Contributing guide](https://github.com/TanStack/query/blob/main/CONTRIBUTING.md).
- [ ] I have tested this code locally with `pnpm run test:pr`.
## 🚀 Release Impact
- [ ] This change affects published code, and I have generated a [changeset](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).
- [ ] This change is docs/CI/dev-only (no release).
================================================
FILE: .github/renovate.json
================================================
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"configMigration": true,
"extends": [
"config:recommended",
"group:allNonMajor",
"schedule:weekly",
":approveMajorUpdates",
":automergeMinor",
":disablePeerDependencies",
":maintainLockFilesMonthly",
":semanticCommits",
":semanticCommitTypeAll(chore)"
],
"ignorePresets": [":ignoreModulesAndTests"],
"labels": ["dependencies"],
"rangeStrategy": "bump",
"postUpdateOptions": ["pnpmDedupe"],
"ignoreDeps": [
"@types/node",
"@types/react",
"@types/react-dom",
"node",
"react",
"react-dom",
"tsup",
"typescript",
"typescript54",
"typescript55",
"typescript56",
"typescript57",
"typescript58",
"typescript59",
"typescript60",
"vue",
"vue-tsc",
"vue2",
"vue2.7",
"webpack"
]
}
================================================
FILE: .github/workflows/autofix.yml
================================================
name: autofix.ci # needed to securely identify the workflow
on:
pull_request:
push:
branches: [main, 'v[0-9]', '*-pre', '*-maint']
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
autofix:
name: autofix
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup Tools
uses: TanStack/config/.github/setup@main
- name: Fix formatting
run: pnpm run format
- name: Apply fixes
uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
with:
commit-message: 'ci: apply automated fixes'
================================================
FILE: .github/workflows/detect-agent.yml
================================================
name: Detect Agent
on:
pull_request_target:
types: [opened]
workflow_dispatch: {}
permissions:
issues: write
pull-requests: write
jobs:
detect:
if: github.event_name != 'workflow_dispatch'
uses: bombshell-dev/automation/.github/workflows/detect-agent.yml@a1553cebd9318d416f6a8e9f38f363b6aaa19c72
backfill:
if: github.event_name == 'workflow_dispatch'
uses: bombshell-dev/automation/.github/workflows/detect-agent-backfill.yml@a1553cebd9318d416f6a8e9f38f363b6aaa19c72
================================================
FILE: .github/workflows/labeler.yml
================================================
name: Labeler
on:
pull_request_target:
permissions:
contents: read
pull-requests: write
jobs:
labeler:
name: Labeler
runs-on: ubuntu-latest
steps:
- name: Labeler
uses: actions/labeler@v6.0.1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
configuration-path: labeler-config.yml
================================================
FILE: .github/workflows/pr.yml
================================================
name: PR
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
permissions:
contents: read
pull-requests: write
issues: write
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
with:
fetch-depth: 0
- name: Start Nx Agents
run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml"
- name: Setup Tools
uses: TanStack/config/.github/setup@main
- name: Get base and head commits for `nx affected`
uses: nrwl/nx-set-shas@v4.4.0
with:
main-branch-name: main
- name: Run Checks
run: pnpm run test:pr
- name: Stop Nx Agents
if: ${{ always() }}
run: npx nx-cloud stop-all-agents
preview:
name: Preview
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup Tools
uses: TanStack/config/.github/setup@main
- name: Build Packages
run: pnpm run build:all
- name: Publish Previews
run: pnpx pkg-pr-new publish --pnpm --compact './packages/*' --template './examples/*/*'
- name: Determine commit SHA
id: determine-sha
run: |
echo "COMMIT_SHA=${{ github.event.pull_request.head.sha || github.sha }}" >> $GITHUB_ENV
- name: Size Limit
uses: andresz1/size-limit-action@94bc357df29c36c8f8d50ea497c3e225c3c95d1d
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
skip_step: install
build_script: build:all
provenance:
name: Provenance
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Check Provenance
uses: danielroe/provenance-action@v0.1.1
with:
fail-on-downgrade: true
version-preview:
name: Version Preview
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup Tools
uses: TanStack/config/.github/setup@main
- name: Changeset Preview
uses: TanStack/config/.github/changeset-preview@main
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
push:
branches: [main, 'v[0-9]', '*-pre', '*-maint']
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
permissions:
contents: write
id-token: write
pull-requests: write
jobs:
release:
name: Release
if: "!contains(github.event.head_commit.message, 'ci: changeset release')"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
with:
fetch-depth: 0
- name: Check for changesets
id: changesets
run: |
CHANGESET_FILES=$(ls .changeset/*.md 2>/dev/null | grep -v README.md || true)
if [ -z "$CHANGESET_FILES" ]; then
echo "has_changesets=false" >> "$GITHUB_OUTPUT"
else
echo "has_changesets=true" >> "$GITHUB_OUTPUT"
fi
- name: Start Nx Agents
if: steps.changesets.outputs.has_changesets == 'true'
run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml"
- name: Setup Tools
uses: TanStack/config/.github/setup@main
- name: Run Tests
if: steps.changesets.outputs.has_changesets == 'true'
run: pnpm run test:ci
- name: Stop Nx Agents
if: ${{ always() && steps.changesets.outputs.has_changesets == 'true' }}
run: npx nx-cloud stop-all-agents
- name: Enter Pre-Release Mode
if: "contains(github.ref_name, '-pre') && !hashFiles('.changeset/pre.json')"
run: pnpm changeset pre enter pre
- name: Version Packages
run: pnpm run changeset:version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Commit and Push Version Changes
id: commit
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .
if git commit -m "ci: changeset release"; then
git push
echo "committed=true" >> "$GITHUB_OUTPUT"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Determine dist-tag
if: steps.commit.outputs.committed == 'true'
id: dist-tag
run: |
BRANCH="${GITHUB_REF_NAME}"
if [[ "$BRANCH" == *-pre ]]; then
echo "prerelease=true" >> "$GITHUB_OUTPUT"
elif [[ "$BRANCH" == *-maint ]]; then
echo "tag=maint" >> "$GITHUB_OUTPUT"
elif [[ "$BRANCH" =~ ^v[0-9]+$ ]]; then
echo "tag=$BRANCH" >> "$GITHUB_OUTPUT"
else
echo "latest=true" >> "$GITHUB_OUTPUT"
fi
- name: Publish Packages
if: steps.commit.outputs.committed == 'true'
run: pnpm run changeset:publish ${{ steps.dist-tag.outputs.tag && format('--tag {0}', steps.dist-tag.outputs.tag) }}
- name: Create GitHub Release
if: steps.commit.outputs.committed == 'true'
run: node scripts/create-github-release.mjs ${{ steps.dist-tag.outputs.prerelease == 'true' && '--prerelease' }} ${{ steps.dist-tag.outputs.latest == 'true' && '--latest' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
# See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies
node_modules
package-lock.json
yarn.lock
# builds
build
coverage
dist
dist-ts
# misc
.DS_Store
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
.next
next-env.d.ts
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.history
size-plugin.json
stats-hydration.json
stats.json
stats.html
.vscode/settings.json
.vscode/mcp.json
.cursor/rules
.github/instructions/nx.instructions.md
*.log
*.tsbuildinfo
.angular
.cache
.idea
.nx/cache
.nx/workspace-data
.pnpm-store
.svelte-kit
.tsup
.vinxi
temp
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
================================================
FILE: .npmrc
================================================
provenance=true
================================================
FILE: .nvmrc
================================================
24.8.0
================================================
FILE: .nx/workflows/dynamic-changesets.yaml
================================================
distribute-on:
small-changeset: 3 linux-medium-js
medium-changeset: 4 linux-medium-js
large-changeset: 5 linux-medium-js
================================================
FILE: .prettierignore
================================================
**/.next
**/.nx/cache
**/.svelte-kit
**/build
**/coverage
**/dist
**/query-codemods/**/__testfixtures__
.changeset/*.md
pnpm-lock.yaml
packages/**/tsup.config.bundled*.mjs
**/tsconfig.vitest-temp.json
docs/framework/*/reference
================================================
FILE: .size-limit.json
================================================
[
{
"name": "react full",
"path": "packages/react-query/build/modern/index.js",
"limit": "13.00 kB",
"ignore": ["react", "react-dom"]
},
{
"name": "react minimal",
"path": "packages/react-query/build/modern/index.js",
"limit": "9.99 kB",
"import": "{ useQuery, QueryClient, QueryClientProvider }",
"ignore": ["react", "react-dom"]
}
]
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
## Questions
If you have questions about implementation details, help or support, then please use our dedicated community forum at [GitHub Discussions](https://github.com/TanStack/query/discussions) **PLEASE NOTE:** If you choose to instead open an issue for your question, your issue will be immediately closed and redirected to the forum.
## Reporting Issues
If you have found what you think is a bug, please [file an issue](https://github.com/TanStack/query/issues/new/choose). **PLEASE NOTE:** Issues that are identified as implementation questions or non-issues will be immediately closed and redirected to [GitHub Discussions](https://github.com/TanStack/query/discussions)
## Suggesting new features
If you are here to suggest a feature, first create an issue if it does not already exist. From there, we will discuss use-cases for the feature and then finally discuss how it could be implemented.
## Development
_TanStack/query uses **symlink-based** configuration files. For smooth development in a local environment, we recommend developing in an environment that supports symlinks(ex: Linux, macOS, Windows Subsystem for Linux / WSL)._
If you have been assigned to fix an issue or develop a new feature, please follow these steps to get started:
- Fork this repository.
- Install dependencies
```bash
pnpm install
```
- We use [pnpm](https://pnpm.io/) v10 for package management (run in case of pnpm-related issues).
```bash
corepack enable && corepack prepare
```
- We use [nvm](https://github.com/nvm-sh/nvm) to manage node versions - please make sure to use the version mentioned in `.nvmrc`
```bash
nvm use
```
- Build all packages.
```bash
pnpm build:all
```
- Run development server.
```bash
pnpm run watch
```
- Implement your changes and tests to files in the `src/` directory and corresponding test files.
- Document your changes in the appropriate doc page.
- Git stage your required changes and commit (see below commit guidelines).
- Submit PR for review.
### Editing the docs locally and previewing the changes
The documentations for all the TanStack projects are hosted on [tanstack.com](https://tanstack.com), which is a TanStack Start application (https://github.com/TanStack/tanstack.com). You need to run this app locally to preview your changes in the `TanStack/query` docs.
> [!NOTE]
> The website fetches the doc pages from GitHub in production, and searches for them at `../query/docs` in development. Your local clone of `TanStack/query` needs to be in the same directory as the local clone of `TanStack/tanstack.com`.
You can follow these steps to set up the docs for local development:
1. Make a new directory called `tanstack`.
```sh
mkdir tanstack
```
2. Enter that directory and clone the [`TanStack/query`](https://github.com/TanStack/query) and [`TanStack/tanstack.com`](https://github.com/TanStack/tanstack.com) repos.
```sh
cd tanstack
git clone git@github.com:TanStack/query.git
# We probably don't need all the branches and commit history
# from the `tanstack.com` repo, so let's just create a shallow
# clone of the latest version of the `main` branch.
# Read more about shallow clones here:
# https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/#user-content-shallow-clones
git clone git@github.com:TanStack/tanstack.com.git --depth=1 --single-branch --branch=main
```
> [!NOTE]
> Your `tanstack` directory should look like this:
>
> ```
> tanstack/
> |
> +-- query/ (<-- this directory cannot be called anything else!)
> |
> +-- tanstack.com/
> ```
3. Enter the `tanstack/tanstack.com` directory, install the dependencies and run the app in dev mode:
```sh
cd tanstack.com
pnpm i
# The app will run on https://localhost:3000 by default
pnpm dev
```
4. Now you can visit http://localhost:3000/query/latest/docs/framework/react/overview in the browser and see the changes you make in `tanstack/query/docs` there.
> [!WARNING]
> You will need to update the `docs/config.json` file (in `TanStack/query`) if you add a new documentation page!
You can see the whole process in the screen capture below:
https://github.com/fulopkovacs/form/assets/43729152/9d35a3c3-8153-4e74-9cb2-af275f7a269b
### Running examples
- Make sure you've installed the dependencies in the repo's root directory.
```bash
pnpm install
```
- If you want to run the example against your local changes, run below in the repo's root directory. Otherwise, it will be run against the latest TanStack Query release.
```bash
pnpm run watch
```
- Run below in the selected examples' directory.
```bash
pnpm run dev
```
#### Note on standalone execution
If you want to run an example without installing dependencies for the whole repo, just follow the instructions from the example's README.md file. It will then be run against the latest TanStack Query release.
## Online one-click setup
You can use Gitpod (An Online open-source VS Code-like IDE that is free for Open Source) for developing online. With a single click it will start a workspace and automatically:
- clone the `TanStack/query` repo.
- install all the dependencies in `/` and `/docs`.
- run below in the root(`/`) to Auto-build files.
```bash
npm start
```
- run below in `/docs`.
```bash
npm run dev
```
[](https://gitpod.io/#https://github.com/TanStack/query)
## Changesets
This repo uses [Changesets](https://github.com/changesets/changesets) to automate releases. If your PR should release a new package version (patch, minor, or major), please run `pnpm changeset` and commit the file. If needed, changeset descriptions can be more descriptive, and will be included in the changelog. If your PR affects docs, examples, styles, etc., you probably don't need to generate a changeset.
## Pull requests
Maintainers merge pull requests by squashing all commits and editing the commit message if necessary using the GitHub user interface.
Use an appropriate commit type. Be especially careful with breaking changes.
## Releases
For each new commit added to `main`, a GitHub Workflow is triggered which runs the [Changesets Action](https://github.com/changesets/action). This generates a preview PR showing the impact of all changesets. When this PR is merged, the package will be published to NPM.
## 🧪 Test
TanStack Query uses [Nx](https://nx.dev/) as its monorepo tool.
To run tests in a local environment, you should use `nx` commands from the root directory.
### ✅ Run all tests
To run tests for **all packages**, run:
```bash
npm run test
```
### ✅ Run tests for a specific package
To run tests for a specific package, use the following command:
```bash
npx nx run @tanstack/{package-name}:test:lib
```
For example:
```bash
npx nx run @tanstack/react-query:test:lib
```
### ⚠️ Caution
Do not run `pnpm run test:lib` inside individual package folders.
This can cause test failures due to dependencies between packages.
Always run tests from the **root folder** using `nx` commands.
================================================
FILE: FUNDING.json
================================================
{
"drips": {
"ethereum": {
"ownedBy": "0xD5371B61b35E13F2ae354BE95081aD63FB383452"
}
}
}
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2021-present Tanner Linsley
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=be2d8a11-9712-4c1d-9963-580b2d4fb133" />
<div align="center">
<img src="./media/header_query.png" alt="TanStack Query" />
</div>
<br />
<div align="center">
<a href="https://www.npmjs.com/package/@tanstack/query-core" target="_parent">
<img alt="" src="https://img.shields.io/npm/dm/@tanstack/query-core.svg" alt="npm downloads" />
</a>
<a href="https://github.com/TanStack/query/stargazers" target="_parent">
<img alt="" src="https://img.shields.io/github/stars/TanStack/query.svg?style=social&label=Star" alt="GitHub stars" />
</a>
<a href="https://bundlejs.com/?q=%40tanstack%2Freact-query&config=%7B%22esbuild%22%3A%7B%22external%22%3A%5B%22react%22%2C%22react-dom%22%5D%7D%7D&badge=" target="_parent">
<img alt="" src="https://deno.bundlejs.com/?q=@tanstack/react-query&config={%22esbuild%22:{%22external%22:[%22react%22,%22react-dom%22]}}&badge=detailed" alt="Bundle size" />
</a>
</div>
<div align="center">
<a href="#badge">
<img src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg" alt="semantic-release">
</a>
<a href="https://bestofjs.org/projects/tanstack-query"><img src="https://img.shields.io/endpoint?url=https://bestofjs-serverless.now.sh/api/project-badge?fullName=TanStack%2Fquery%26since=daily" alt="Best of JS" /></a>
<a href="https://twitter.com/tan_stack"><img src="https://img.shields.io/twitter/follow/tan_stack.svg?style=social" alt="Follow @TanStack"/></a>
</div>
<div align="center">
### [Become a Sponsor!](https://github.com/sponsors/tannerlinsley/)
</div>
# TanStack Query
An async state management library built to simplify fetching, caching, synchronizing, and updating server state.
- Protocol‑agnostic fetching (REST, GraphQL, promises, etc.)
- Caching, refetching, pagination & infinite scroll
- Mutations, dependent queries & background updates
- Prefetching, cancellation & React Suspense support
### <a href="https://tanstack.com/query">Read the docs →</b></a>
## Get Involved
- We welcome issues and pull requests!
- Participate in [GitHub discussions](https://github.com/TanStack/query/discussions)
- Chat with the community on [Discord](https://discord.com/invite/WrRKjPJ)
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for setup instructions
## Partners
<table align="center">
<tr>
<td>
<a href="https://www.coderabbit.ai/?via=tanstack&dub_id=aCcEEdAOqqutX6OS" >
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://tanstack.com/assets/coderabbit-dark-D643Zkrv.svg" />
<source media="(prefers-color-scheme: light)" srcset="https://tanstack.com/assets/coderabbit-light-CIzGLYU_.svg" />
<img src="https://tanstack.com/assets/coderabbit-light-CIzGLYU_.svg" height="40" alt="CodeRabbit" />
</picture>
</a>
</td>
<td>
<a href="https://www.cloudflare.com?utm_source=tanstack">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://tanstack.com/assets/cloudflare-white-Co-Tyjbl.svg" />
<source media="(prefers-color-scheme: light)" srcset="https://tanstack.com/assets/cloudflare-black-6Ojsn8yh.svg" />
<img src="https://tanstack.com/assets/cloudflare-white-Co-Tyjbl.svg" height="60" alt="Cloudflare" />
</picture>
</a>
</td>
</tr>
</table>
<div align="center">
<img src="./media/partner_logo.svg" alt="Query & you?" height="65">
<p>
We're looking for TanStack Query Partners to join our mission! Partner with us to push the boundaries of TanStack Query and build amazing things together.
</p>
<a href="mailto:partners@tanstack.com?subject=TanStack Query Partnership"><b>LET'S CHAT</b></a>
</div>
</div>
## Explore the TanStack Ecosystem
- <a href="https://github.com/tanstack/config"><b>TanStack Config</b></a> – Tooling for JS/TS packages
- <a href="https://github.com/tanstack/db"><b>TanStack DB</b></a> – Reactive sync client store
- <a href="https://github.com/tanstack/devtools"><b>TanStack DevTools</b></a> – Unified devtools panel
- <a href="https://github.com/tanstack/form"><b>TanStack Form</b></a> – Type‑safe form state
- <a href="https://github.com/tanstack/pacer"><b>TanStack Pacer</b></a> – Debouncing, throttling, batching <br/>
- <a href="https://github.com/tanstack/query"><b>TanStack Query</b></a> – Async state & caching
- <a href="https://github.com/tanstack/ranger"><b>TanStack Ranger</b></a> – Range & slider primitives
- <a href="https://github.com/tanstack/router"><b>TanStack Router</b></a> – Type‑safe routing, caching & URL state
- <a href="https://github.com/tanstack/router"><b>TanStack Start</b></a> – Full‑stack SSR & streaming
- <a href="https://github.com/tanstack/store"><b>TanStack Store</b></a> – Reactive data store
- <a href="https://github.com/tanstack/table"><b>TanStack Table</b></a> – Headless datagrids
- <a href="https://github.com/tanstack/virtual"><b>TanStack Virtual</b></a> – Virtualized rendering
… and more at <a href="https://tanstack.com"><b>TanStack.com »</b></a>
<!-- Use the force, Luke -->
================================================
FILE: docs/community-resources.md
================================================
---
title: Community Resources
articles:
[
{
title: "TkDodo's Blog Posts",
url: 'https://tkdodo.eu/blog/practical-react-query',
description: 'TkDodo, a maintainer of TanStack Query, writes a series of blog posts about the library. These articles offer general best practices and often present opinionated perspectives on using TanStack Query.',
},
]
media:
[
{
title: 'React Query: It’s Time to Break up with your Global State! – Tanner Linsley',
url: 'https://www.youtube.com/watch?v=seU46c6Jz7E',
description: 'Get the lowdown on “global state” and how React Query can help you fetch, cache and manage your asynchronous data with a fraction of the effort and code that you’re used to',
},
{
title: 'All About React Query (with Tanner Linsley) — Learn With Jason',
url: 'https://www.youtube.com/watch?v=DocXo3gqGdI',
description: 'Learn all about React Query with its creator Tanner Linsley.',
},
{
title: 'Hooks for Fetching with ReactQuery Creator Tanner Linsley aka @tannerlinsley',
url: 'https://www.youtube.com/watch?v=PPvWXbSCtBU',
description: 'Learn how React Query simplifies asynchronous data fetching in React applications.',
},
{
title: 'React Query - Open Source Friday stream with Tanner Linsley from',
url: 'https://www.youtube.com/watch?v=B3cJDT3j19I',
description: 'An Open Source Friday stream featuring Tanner Linsley.',
},
{
title: 'React Query Presentation - Tanner Linsley',
url: 'https://www.youtube.com/watch?v=_ehibado6rU',
description: 'Tanner Linsley gives a talk to Lambda School students about the React Query.',
},
{
title: 'TanStack Query v4 (with Dominik Dorfmeister) — Learn With Jason',
url: 'https://www.youtube.com/watch?v=SPPQm0dvEes',
description: 'Dominik Dorfmeister covering TanStack Query v4.',
},
{
title: 'React Query Exposed by Its Maintainer',
url: 'https://www.youtube.com/watch?v=8-RTNnn9GR8',
description: 'Dominik Dorfmeister explores the less favorable aspects of React Query and situations where it may not be the best fit.',
},
{
title: 'React Query API Design: Lessons Learned - Dominik Dorfmeister',
url: 'https://www.youtube.com/watch?v=l3PxErcKeAI',
description: 'Dominik Dorfmeister walks through some of the API design choices that were made in React Query to get to the DX.',
},
]
utilities:
[
{
title: 'batshit',
url: 'https://github.com/yornaath/batshit',
description: 'A batch manager that will deduplicate and batch requests for a certain data type made within a window',
},
{
title: 'GraphQL Code Generator',
url: 'https://the-guild.dev/graphql/codegen',
description: 'Generate React Query hooks from your GraphQL schema',
},
{
title: 'Http-wizard',
url: 'https://http-wizard.com',
description: 'End-to-end type-safe Fastify API with typeScript magic ✨',
},
{
title: 'Normy',
url: 'https://github.com/klis87/normy',
description: 'Automatic normalization and data updates for data fetching libraries',
},
{
title: 'Orval',
url: 'https://orval.dev/',
description: 'Generate TypeScript client from OpenAPI specifications.',
},
{
title: 'Query Key Factory',
url: 'https://github.com/lukemorales/query-key-factory',
description: 'A library for creating typesafe standardized query keys, useful for cache management in @tanstack/query',
},
{
title: 'React Query Kit',
url: 'https://github.com/liaoliao666/react-query-kit',
description: '🕊️ A toolkit for ReactQuery that makes ReactQuery hooks reusable and typesafe',
},
{
title: 'React Query Rewind',
url: 'https://reactqueryrewind.com/',
description: 'Time travel and visualize state during development',
},
{
title: 'React Query Swagger',
url: 'https://github.com/Shaddix/react-query-swagger',
description: 'Generate React Query hooks based on Swagger API definitions',
},
{
title: 'Suspensive React Query',
url: 'https://suspensive.org/docs/react-query/motivation',
description: 'Enhances React Query with Suspense support, allowing for simpler and more declarative data fetching',
},
{
title: 'tRPC',
url: 'https://trpc.io/',
description: 'End-to-end typesafe APIs made easy',
},
]
others:
[
{
title: 'Atomic CRM',
url: 'https://marmelab.com/atomic-crm/',
description: 'A full-featured CRM built with React, react-admin, and Supabase.',
},
{
title: 'Blitz',
url: 'https://blitzjs.com/',
description: 'The Missing Fullstack Toolkit for Next.js',
},
{
title: 'Connect',
url: 'https://connectrpc.com/docs',
description: 'A family of libraries for building browser and gRPC-compatible HTTP APIs.',
},
{
title: 'Hey API',
url: 'https://heyapi.dev/openapi-ts/plugins/tanstack-query',
description: 'OpenAPI to TypeScript codegen. Production-ready SDKs, Zod schemas, TanStack Query hooks, and 20+ plugins. Used by Vercel, OpenCode, and PayPal.',
},
{
title: 'Kubb',
url: 'https://www.kubb.dev/',
description: 'Generate SDKs for all your APIs',
},
{
title: 'OpenAPI codegen',
url: 'https://github.com/fabien0102/openapi-codegen',
description: 'A tool for generating code based on an OpenAPI schema.',
},
{
title: 'OpenAPI Qraft React',
url: 'https://github.com/OpenAPI-Qraft/openapi-qraft',
description: 'Generate type-safe API clients and Hooks for TanStack Query directly from OpenAPI Documents.Zero-runtime overhead, Proxy-based design, seamless SSR support, and full TanStack Query functionality.',
},
{
title: 'OpenAPI React Query codegen',
url: 'https://github.com/7nohe/openapi-react-query-codegen',
description: 'Generate TanStack Query hooks based on an OpenAPI specification file.',
},
{
title: 'OpenAPI zod client',
url: 'https://github.com/astahmer/openapi-zod-client',
description: 'Generate a zodios client from an OpenAPI specification',
},
{
title: 'openapi-fetch',
url: 'https://openapi-ts.dev/openapi-react-query/',
description: 'A 2KB min, typesafe fetch wrapper that uses static TypeScript type inference and no runtime checks.',
},
{
title: 'oRPC',
url: 'https://orpc.unnoq.com/docs/integrations/tanstack-query',
description: 'Easy to build APIs that are end-to-end type-safe and adhere to OpenAPI standards.',
},
{
title: 'Rapini',
url: 'https://github.com/rametta/rapini',
description: '🥬 OpenAPI to React Query (or SWR) & Axios',
},
{
title: 'Tanstack Query Visualizer',
url: 'https://tanstack-query-visualizer.sofi.coop/',
description: 'An interactive sandbox that visualizes the relationship between mutations and query keys.',
},
{
title: 'ts-rest',
url: 'https://ts-rest.com/',
description: 'Incrementally adoptable type-safety for your new and existing APIs',
},
{
title: 'wagmi',
url: 'https://wagmi.sh/',
description: 'React Hooks for Ethereum based on @tanstack/react-query',
},
{
title: 'zodios',
url: 'https://www.zodios.org/',
description: 'End-to-end typesafe REST API toolbox',
},
]
---
================================================
FILE: docs/config.json
================================================
{
"$schema": "https://raw.githubusercontent.com/TanStack/tanstack.com/main/tanstack-docs-config.schema.json",
"docSearch": {
"appId": "20TOVD6LOE",
"apiKey": "35bc6c51aa322700d1383e17c4f669f4",
"indexName": "tanstackquery"
},
"sections": [
{
"label": "Community Resources",
"children": [],
"frameworks": []
},
{
"label": "Getting Started",
"children": [],
"frameworks": [
{
"label": "react",
"children": [
{
"label": "Overview",
"to": "framework/react/overview"
},
{
"label": "Installation",
"to": "framework/react/installation"
},
{
"label": "Quick Start",
"to": "framework/react/quick-start"
},
{
"label": "Devtools",
"to": "framework/react/devtools"
},
{
"label": "Comparison",
"to": "framework/react/comparison"
},
{
"label": "TypeScript",
"to": "framework/react/typescript"
},
{
"label": "GraphQL",
"to": "framework/react/graphql"
},
{
"label": "React Native",
"to": "framework/react/react-native"
}
]
},
{
"label": "solid",
"children": [
{
"label": "Overview",
"to": "framework/solid/overview"
},
{
"label": "Quick Start",
"to": "framework/solid/quick-start"
},
{
"label": "Installation",
"to": "framework/solid/installation"
},
{
"label": "Devtools",
"to": "framework/solid/devtools"
},
{
"label": "TypeScript",
"to": "framework/solid/typescript"
}
]
},
{
"label": "vue",
"children": [
{
"label": "Overview",
"to": "framework/vue/overview"
},
{
"label": "Installation",
"to": "framework/vue/installation"
},
{
"label": "Quick Start",
"to": "framework/vue/quick-start"
},
{
"label": "Devtools",
"to": "framework/vue/devtools"
},
{
"label": "TypeScript",
"to": "framework/vue/typescript"
},
{
"label": "Reactivity",
"to": "framework/vue/reactivity"
},
{
"label": "GraphQL",
"to": "framework/vue/graphql"
}
]
},
{
"label": "svelte",
"children": [
{
"label": "Overview",
"to": "framework/svelte/overview"
},
{
"label": "Installation",
"to": "framework/svelte/installation"
},
{
"label": "Devtools",
"to": "framework/svelte/devtools"
},
{
"label": "SSR & SvelteKit",
"to": "framework/svelte/ssr"
},
{
"label": "Migrate from v5 to v6",
"to": "framework/svelte/migrate-from-v5-to-v6"
}
]
},
{
"label": "angular",
"children": [
{
"label": "Overview",
"to": "framework/angular/overview"
},
{
"label": "Installation",
"to": "framework/angular/installation"
},
{
"label": "Quick Start",
"to": "framework/angular/quick-start"
},
{
"label": "Angular HttpClient and other data fetching clients",
"to": "framework/angular/angular-httpclient-and-other-data-fetching-clients"
},
{
"label": "Devtools",
"to": "framework/angular/devtools"
},
{
"label": "TypeScript",
"to": "framework/angular/typescript"
},
{
"label": "Zoneless",
"to": "framework/angular/zoneless"
}
]
},
{
"label": "preact",
"children": [
{
"label": "Overview",
"to": "framework/preact/overview"
},
{
"label": "Installation",
"to": "framework/preact/installation"
},
{
"label": "Quick Start",
"to": "framework/preact/quick-start"
},
{
"label": "Devtools",
"to": "framework/preact/devtools"
},
{
"label": "TypeScript",
"to": "framework/preact/typescript"
},
{
"label": "GraphQL",
"to": "framework/preact/graphql"
}
]
}
]
},
{
"label": "Guides & Concepts",
"children": [],
"frameworks": [
{
"label": "react",
"children": [
{
"label": "Important Defaults",
"to": "framework/react/guides/important-defaults"
},
{
"label": "Queries",
"to": "framework/react/guides/queries"
},
{
"label": "Query Keys",
"to": "framework/react/guides/query-keys"
},
{
"label": "Query Functions",
"to": "framework/react/guides/query-functions"
},
{
"label": "Query Options",
"to": "framework/react/guides/query-options"
},
{
"label": "Network Mode",
"to": "framework/react/guides/network-mode"
},
{
"label": "Parallel Queries",
"to": "framework/react/guides/parallel-queries"
},
{
"label": "Dependent Queries",
"to": "framework/react/guides/dependent-queries"
},
{
"label": "Background Fetching Indicators",
"to": "framework/react/guides/background-fetching-indicators"
},
{
"label": "Window Focus Refetching",
"to": "framework/react/guides/window-focus-refetching"
},
{
"label": "Disabling/Pausing Queries",
"to": "framework/react/guides/disabling-queries"
},
{
"label": "Query Retries",
"to": "framework/react/guides/query-retries"
},
{
"label": "Paginated Queries",
"to": "framework/react/guides/paginated-queries"
},
{
"label": "Infinite Queries",
"to": "framework/react/guides/infinite-queries"
},
{
"label": "Initial Query Data",
"to": "framework/react/guides/initial-query-data"
},
{
"label": "Placeholder Query Data",
"to": "framework/react/guides/placeholder-query-data"
},
{
"label": "Mutations",
"to": "framework/react/guides/mutations"
},
{
"label": "Query Invalidation",
"to": "framework/react/guides/query-invalidation"
},
{
"label": "Invalidation from Mutations",
"to": "framework/react/guides/invalidations-from-mutations"
},
{
"label": "Updates from Mutation Responses",
"to": "framework/react/guides/updates-from-mutation-responses"
},
{
"label": "Optimistic Updates",
"to": "framework/react/guides/optimistic-updates"
},
{
"label": "Query Cancellation",
"to": "framework/react/guides/query-cancellation"
},
{
"label": "Scroll Restoration",
"to": "framework/react/guides/scroll-restoration"
},
{
"label": "Filters",
"to": "framework/react/guides/filters"
},
{
"label": "Performance & Request Waterfalls",
"to": "framework/react/guides/request-waterfalls"
},
{
"label": "Prefetching & Router Integration",
"to": "framework/react/guides/prefetching"
},
{
"label": "Server Rendering & Hydration",
"to": "framework/react/guides/ssr"
},
{
"label": "Advanced Server Rendering",
"to": "framework/react/guides/advanced-ssr"
},
{
"label": "Caching",
"to": "framework/react/guides/caching"
},
{
"label": "Render Optimizations",
"to": "framework/react/guides/render-optimizations"
},
{
"label": "Default Query Fn",
"to": "framework/react/guides/default-query-function"
},
{
"label": "Suspense",
"to": "framework/react/guides/suspense"
},
{
"label": "Testing",
"to": "framework/react/guides/testing"
},
{
"label": "Does this replace [Redux, MobX, etc]?",
"to": "framework/react/guides/does-this-replace-client-state"
},
{
"label": "Migrating to v3",
"to": "framework/react/guides/migrating-to-react-query-3"
},
{
"label": "Migrating to v4",
"to": "framework/react/guides/migrating-to-react-query-4"
},
{
"label": "Migrating to v5",
"to": "framework/react/guides/migrating-to-v5"
}
]
},
{
"label": "solid",
"children": [
{
"label": "Important Defaults",
"to": "framework/solid/guides/important-defaults"
},
{
"label": "Queries",
"to": "framework/solid/guides/queries"
},
{
"label": "Query Keys",
"to": "framework/solid/guides/query-keys"
},
{
"label": "Query Functions",
"to": "framework/solid/guides/query-functions"
},
{
"label": "Query Options",
"to": "framework/solid/guides/query-options"
},
{
"label": "Network Mode",
"to": "framework/solid/guides/network-mode"
},
{
"label": "Parallel Queries",
"to": "framework/solid/guides/parallel-queries"
},
{
"label": "Dependent Queries",
"to": "framework/solid/guides/dependent-queries"
},
{
"label": "Background Fetching Indicators",
"to": "framework/solid/guides/background-fetching-indicators"
},
{
"label": "Window Focus Refetching",
"to": "framework/solid/guides/window-focus-refetching"
},
{
"label": "Disabling/Pausing Queries",
"to": "framework/solid/guides/disabling-queries"
},
{
"label": "Query Retries",
"to": "framework/solid/guides/query-retries"
},
{
"label": "Paginated Queries",
"to": "framework/solid/guides/paginated-queries"
},
{
"label": "Infinite Queries",
"to": "framework/solid/guides/infinite-queries"
},
{
"label": "Initial Query Data",
"to": "framework/solid/guides/initial-query-data"
},
{
"label": "Placeholder Query Data",
"to": "framework/solid/guides/placeholder-query-data"
},
{
"label": "Mutations",
"to": "framework/solid/guides/mutations"
},
{
"label": "Query Invalidation",
"to": "framework/solid/guides/query-invalidation"
},
{
"label": "Invalidation from Mutations",
"to": "framework/solid/guides/invalidations-from-mutations"
},
{
"label": "Updates from Mutation Responses",
"to": "framework/solid/guides/updates-from-mutation-responses"
},
{
"label": "Optimistic Updates",
"to": "framework/solid/guides/optimistic-updates"
},
{
"label": "Query Cancellation",
"to": "framework/solid/guides/query-cancellation"
},
{
"label": "Scroll Restoration",
"to": "framework/solid/guides/scroll-restoration"
},
{
"label": "Filters",
"to": "framework/solid/guides/filters"
},
{
"label": "Request Waterfalls",
"to": "framework/solid/guides/request-waterfalls"
},
{
"label": "Prefetching",
"to": "framework/solid/guides/prefetching"
},
{
"label": "SSR",
"to": "framework/solid/guides/ssr"
},
{
"label": "Advanced SSR",
"to": "framework/solid/guides/advanced-ssr"
},
{
"label": "Caching",
"to": "framework/solid/guides/caching"
},
{
"label": "Default Query Fn",
"to": "framework/solid/guides/default-query-function"
},
{
"label": "Suspense",
"to": "framework/solid/guides/suspense"
},
{
"label": "Testing",
"to": "framework/solid/guides/testing"
},
{
"label": "Does this replace state managers?",
"to": "framework/solid/guides/does-this-replace-client-state"
}
]
},
{
"label": "vue",
"children": [
{
"label": "Important Defaults",
"to": "framework/vue/guides/important-defaults"
},
{
"label": "Queries",
"to": "framework/vue/guides/queries"
},
{
"label": "Query Keys",
"to": "framework/vue/guides/query-keys"
},
{
"label": "Query Functions",
"to": "framework/vue/guides/query-functions"
},
{
"label": "Query Options",
"to": "framework/vue/guides/query-options"
},
{
"label": "Network Mode",
"to": "framework/vue/guides/network-mode"
},
{
"label": "Parallel Queries",
"to": "framework/vue/guides/parallel-queries"
},
{
"label": "Dependent Queries",
"to": "framework/vue/guides/dependent-queries"
},
{
"label": "Background Fetching Indicators",
"to": "framework/vue/guides/background-fetching-indicators"
},
{
"label": "Window Focus Refetching",
"to": "framework/vue/guides/window-focus-refetching"
},
{
"label": "Disabling/Pausing Queries",
"to": "framework/vue/guides/disabling-queries"
},
{
"label": "Query Retries",
"to": "framework/vue/guides/query-retries"
},
{
"label": "Paginated Queries",
"to": "framework/vue/guides/paginated-queries"
},
{
"label": "Infinite Queries",
"to": "framework/vue/guides/infinite-queries"
},
{
"label": "Initial Query Data",
"to": "framework/vue/guides/initial-query-data"
},
{
"label": "Placeholder Query Data",
"to": "framework/vue/guides/placeholder-query-data"
},
{
"label": "Mutations",
"to": "framework/vue/guides/mutations"
},
{
"label": "Query Invalidation",
"to": "framework/vue/guides/query-invalidation"
},
{
"label": "Invalidation from Mutations",
"to": "framework/vue/guides/invalidations-from-mutations"
},
{
"label": "Updates from Mutation Responses",
"to": "framework/vue/guides/updates-from-mutation-responses"
},
{
"label": "Optimistic Updates",
"to": "framework/vue/guides/optimistic-updates"
},
{
"label": "Query Cancellation",
"to": "framework/vue/guides/query-cancellation"
},
{
"label": "Scroll Restoration",
"to": "framework/vue/guides/scroll-restoration"
},
{
"label": "Filters",
"to": "framework/vue/guides/filters"
},
{
"label": "Prefetching",
"to": "framework/vue/guides/prefetching"
},
{
"label": "SSR & Nuxt",
"to": "framework/vue/guides/ssr"
},
{
"label": "Caching",
"to": "framework/vue/guides/caching"
},
{
"label": "Default Query Fn",
"to": "framework/vue/guides/default-query-function"
},
{
"label": "Suspense",
"to": "framework/vue/guides/suspense"
},
{
"label": "Testing",
"to": "framework/vue/guides/testing"
},
{
"label": "Custom Client",
"to": "framework/vue/guides/custom-client"
},
{
"label": "Does this replace [Vuex, Pinia]?",
"to": "framework/vue/guides/does-this-replace-client-state"
},
{
"label": "Migrating to v5",
"to": "framework/vue/guides/migrating-to-v5"
}
]
},
{
"label": "angular",
"children": [
{
"label": "Important Defaults",
"to": "framework/angular/guides/important-defaults"
},
{
"label": "Queries",
"to": "framework/angular/guides/queries"
},
{
"label": "Query Keys",
"to": "framework/angular/guides/query-keys"
},
{
"label": "Query Functions",
"to": "framework/angular/guides/query-functions"
},
{
"label": "Query Options",
"to": "framework/angular/guides/query-options"
},
{
"label": "Network Mode",
"to": "framework/angular/guides/network-mode"
},
{
"label": "Parallel Queries",
"to": "framework/angular/guides/parallel-queries"
},
{
"label": "Dependent Queries",
"to": "framework/angular/guides/dependent-queries"
},
{
"label": "Background Fetching Indicators",
"to": "framework/angular/guides/background-fetching-indicators"
},
{
"label": "Window Focus Refetching",
"to": "framework/angular/guides/window-focus-refetching"
},
{
"label": "Disabling/Pausing Queries",
"to": "framework/angular/guides/disabling-queries"
},
{
"label": "Query Retries",
"to": "framework/angular/guides/query-retries"
},
{
"label": "Paginated Queries",
"to": "framework/angular/guides/paginated-queries"
},
{
"label": "Infinite Queries",
"to": "framework/angular/guides/infinite-queries"
},
{
"label": "Initial Query Data",
"to": "framework/angular/guides/initial-query-data"
},
{
"label": "Placeholder Query Data",
"to": "framework/angular/guides/placeholder-query-data"
},
{
"label": "Mutations",
"to": "framework/angular/guides/mutations"
},
{
"label": "Mutation Options",
"to": "framework/angular/guides/mutation-options"
},
{
"label": "Query Invalidation",
"to": "framework/angular/guides/query-invalidation"
},
{
"label": "Invalidation from Mutations",
"to": "framework/angular/guides/invalidations-from-mutations"
},
{
"label": "Optimistic Updates",
"to": "framework/angular/guides/optimistic-updates"
},
{
"label": "Query Cancellation",
"to": "framework/angular/guides/query-cancellation"
},
{
"label": "Scroll Restoration",
"to": "framework/angular/guides/scroll-restoration"
},
{
"label": "Filters",
"to": "framework/angular/guides/filters"
},
{
"label": "Caching",
"to": "framework/angular/guides/caching"
},
{
"label": "Default Query Fn",
"to": "framework/angular/guides/default-query-function"
},
{
"label": "Testing",
"to": "framework/angular/guides/testing"
},
{
"label": "Does this replace state managers?",
"to": "framework/angular/guides/does-this-replace-client-state"
}
]
},
{
"label": "preact",
"children": [
{
"label": "Important Defaults",
"to": "framework/preact/guides/important-defaults"
},
{
"label": "Queries",
"to": "framework/preact/guides/queries"
},
{
"label": "Query Keys",
"to": "framework/preact/guides/query-keys"
},
{
"label": "Query Functions",
"to": "framework/preact/guides/query-functions"
},
{
"label": "Query Options",
"to": "framework/preact/guides/query-options"
},
{
"label": "Network Mode",
"to": "framework/preact/guides/network-mode"
},
{
"label": "Parallel Queries",
"to": "framework/preact/guides/parallel-queries"
},
{
"label": "Dependent Queries",
"to": "framework/preact/guides/dependent-queries"
},
{
"label": "Background Fetching Indicators",
"to": "framework/preact/guides/background-fetching-indicators"
},
{
"label": "Window Focus Refetching",
"to": "framework/preact/guides/window-focus-refetching"
},
{
"label": "Disabling/Pausing Queries",
"to": "framework/preact/guides/disabling-queries"
},
{
"label": "Query Retries",
"to": "framework/preact/guides/query-retries"
},
{
"label": "Paginated Queries",
"to": "framework/preact/guides/paginated-queries"
},
{
"label": "Infinite Queries",
"to": "framework/preact/guides/infinite-queries"
},
{
"label": "Initial Query Data",
"to": "framework/preact/guides/initial-query-data"
},
{
"label": "Placeholder Query Data",
"to": "framework/preact/guides/placeholder-query-data"
},
{
"label": "Mutations",
"to": "framework/preact/guides/mutations"
},
{
"label": "Query Invalidation",
"to": "framework/preact/guides/query-invalidation"
},
{
"label": "Invalidation from Mutations",
"to": "framework/preact/guides/invalidations-from-mutations"
},
{
"label": "Updates from Mutation Responses",
"to": "framework/preact/guides/updates-from-mutation-responses"
},
{
"label": "Optimistic Updates",
"to": "framework/preact/guides/optimistic-updates"
},
{
"label": "Query Cancellation",
"to": "framework/preact/guides/query-cancellation"
},
{
"label": "Scroll Restoration",
"to": "framework/preact/guides/scroll-restoration"
},
{
"label": "Filters",
"to": "framework/preact/guides/filters"
},
{
"label": "Performance & Request Waterfalls",
"to": "framework/preact/guides/request-waterfalls"
},
{
"label": "Prefetching & Router Integration",
"to": "framework/preact/guides/prefetching"
},
{
"label": "Caching",
"to": "framework/preact/guides/caching"
},
{
"label": "Render Optimizations",
"to": "framework/preact/guides/render-optimizations"
},
{
"label": "Default Query Fn",
"to": "framework/preact/guides/default-query-function"
},
{
"label": "Does this replace [Redux, MobX, etc]?",
"to": "framework/preact/guides/does-this-replace-client-state"
}
]
}
]
},
{
"label": "API Reference",
"children": [
{
"label": "QueryClient",
"to": "reference/QueryClient"
},
{
"label": "QueryCache",
"to": "reference/QueryCache"
},
{
"label": "MutationCache",
"to": "reference/MutationCache"
},
{
"label": "QueryObserver",
"to": "reference/QueryObserver"
},
{
"label": "InfiniteQueryObserver",
"to": "reference/InfiniteQueryObserver"
},
{
"label": "QueriesObserver",
"to": "reference/QueriesObserver"
},
{
"label": "streamedQuery",
"to": "reference/streamedQuery"
},
{
"label": "focusManager",
"to": "reference/focusManager"
},
{
"label": "onlineManager",
"to": "reference/onlineManager"
},
{
"label": "environmentManager",
"to": "reference/environmentManager"
},
{
"label": "notifyManager",
"to": "reference/notifyManager"
},
{
"label": "timeoutManager",
"to": "reference/timeoutManager"
}
],
"frameworks": [
{
"label": "react",
"children": [
{
"label": "useQuery",
"to": "framework/react/reference/useQuery"
},
{
"label": "useQueries",
"to": "framework/react/reference/useQueries"
},
{
"label": "useInfiniteQuery",
"to": "framework/react/reference/useInfiniteQuery"
},
{
"label": "useMutation",
"to": "framework/react/reference/useMutation"
},
{
"label": "useIsFetching",
"to": "framework/react/reference/useIsFetching"
},
{
"label": "useIsMutating",
"to": "framework/react/reference/useIsMutating"
},
{
"label": "useMutationState",
"to": "framework/react/reference/useMutationState"
},
{
"label": "useSuspenseQuery",
"to": "framework/react/reference/useSuspenseQuery"
},
{
"label": "useSuspenseInfiniteQuery",
"to": "framework/react/reference/useSuspenseInfiniteQuery"
},
{
"label": "useSuspenseQueries",
"to": "framework/react/reference/useSuspenseQueries"
},
{
"label": "QueryClientProvider",
"to": "framework/react/reference/QueryClientProvider"
},
{
"label": "useQueryClient",
"to": "framework/react/reference/useQueryClient"
},
{
"label": "queryOptions",
"to": "framework/react/reference/queryOptions"
},
{
"label": "infiniteQueryOptions",
"to": "framework/react/reference/infiniteQueryOptions"
},
{
"label": "mutationOptions",
"to": "framework/react/reference/mutationOptions"
},
{
"label": "usePrefetchQuery",
"to": "framework/react/reference/usePrefetchQuery"
},
{
"label": "usePrefetchInfiniteQuery",
"to": "framework/react/reference/usePrefetchInfiniteQuery"
},
{
"label": "QueryErrorResetBoundary",
"to": "framework/react/reference/QueryErrorResetBoundary"
},
{
"label": "useQueryErrorResetBoundary",
"to": "framework/react/reference/useQueryErrorResetBoundary"
},
{
"label": "hydration",
"to": "framework/react/reference/hydration"
}
]
},
{
"label": "vue",
"children": [
{
"label": "useQuery",
"to": "framework/vue/reference/useQuery"
},
{
"label": "useQueries",
"to": "framework/vue/reference/useQueries"
},
{
"label": "useInfiniteQuery",
"to": "framework/vue/reference/useInfiniteQuery"
},
{
"label": "useMutation",
"to": "framework/vue/reference/useMutation"
},
{
"label": "useIsFetching",
"to": "framework/vue/reference/useIsFetching"
},
{
"label": "useIsMutating",
"to": "framework/vue/reference/useIsMutating"
},
{
"label": "useMutationState",
"to": "framework/vue/reference/useMutationState"
},
{
"label": "useQueryClient",
"to": "framework/vue/reference/useQueryClient"
},
{
"label": "queryOptions",
"to": "framework/vue/reference/queryOptions"
},
{
"label": "infiniteQueryOptions",
"to": "framework/vue/reference/infiniteQueryOptions"
},
{
"label": "hydration",
"to": "framework/vue/reference/hydration"
}
]
},
{
"label": "solid",
"children": [
{
"label": "useQuery",
"to": "framework/solid/reference/useQuery"
},
{
"label": "useQueries",
"to": "framework/solid/reference/useQueries"
},
{
"label": "useInfiniteQuery",
"to": "framework/solid/reference/useInfiniteQuery"
},
{
"label": "useMutation",
"to": "framework/solid/reference/useMutation"
},
{
"label": "useIsFetching",
"to": "framework/solid/reference/useIsFetching"
},
{
"label": "useIsMutating",
"to": "framework/solid/reference/useIsMutating"
},
{
"label": "useMutationState",
"to": "framework/solid/reference/useMutationState"
},
{
"label": "queryOptions",
"to": "framework/solid/reference/queryOptions"
},
{
"label": "infiniteQueryOptions",
"to": "framework/solid/reference/infiniteQueryOptions"
},
{
"label": "hydration",
"to": "framework/solid/reference/hydration"
}
]
},
{
"label": "svelte",
"children": [
{
"label": "Svelte Reference",
"to": "framework/svelte/reference/index"
},
{
"label": "Functions / createQuery",
"to": "framework/svelte/reference/functions/createQuery"
},
{
"label": "Functions / createQueries",
"to": "framework/svelte/reference/functions/createQueries"
},
{
"label": "Functions / createInfiniteQuery",
"to": "framework/svelte/reference/functions/createInfiniteQuery"
},
{
"label": "Functions / createMutation",
"to": "framework/svelte/reference/functions/createMutation"
},
{
"label": "Functions / useIsFetching",
"to": "framework/svelte/reference/functions/useIsFetching"
},
{
"label": "Functions / useIsMutating",
"to": "framework/svelte/reference/functions/useIsMutating"
},
{
"label": "Functions / useMutationState",
"to": "framework/svelte/reference/functions/useMutationState"
},
{
"label": "Functions / queryOptions",
"to": "framework/svelte/reference/functions/queryOptions"
},
{
"label": "Functions / infiniteQueryOptions",
"to": "framework/svelte/reference/functions/infiniteQueryOptions"
},
{
"label": "Functions / mutationOptions",
"to": "framework/svelte/reference/functions/mutationOptions"
}
]
},
{
"label": "angular",
"children": [
{
"label": "Angular Reference",
"to": "framework/angular/reference/index"
},
{
"label": "Functions / injectQuery",
"to": "framework/angular/reference/functions/injectQuery"
},
{
"label": "Functions / injectMutation",
"to": "framework/angular/reference/functions/injectMutation"
}
]
},
{
"label": "preact",
"children": [
{
"label": "useQuery",
"to": "framework/preact/reference/functions/useQuery"
},
{
"label": "useQueries",
"to": "framework/preact/reference/functions/useQueries"
},
{
"label": "useInfiniteQuery",
"to": "framework/preact/reference/functions/useInfiniteQuery"
},
{
"label": "useMutation",
"to": "framework/preact/reference/functions/useMutation"
},
{
"label": "useIsFetching",
"to": "framework/preact/reference/functions/useIsFetching"
},
{
"label": "useIsMutating",
"to": "framework/preact/reference/functions/useIsMutating"
},
{
"label": "useMutationState",
"to": "framework/preact/reference/functions/useMutationState"
},
{
"label": "useSuspenseQuery",
"to": "framework/preact/reference/functions/useSuspenseQuery"
},
{
"label": "useSuspenseInfiniteQuery",
"to": "framework/preact/reference/functions/useSuspenseInfiniteQuery"
},
{
"label": "useSuspenseQueries",
"to": "framework/preact/reference/functions/useSuspenseQueries"
},
{
"label": "QueryClientProvider",
"to": "framework/preact/reference/functions/QueryClientProvider"
},
{
"label": "useQueryClient",
"to": "framework/preact/reference/functions/useQueryClient"
},
{
"label": "queryOptions",
"to": "framework/preact/reference/functions/queryOptions"
},
{
"label": "infiniteQueryOptions",
"to": "framework/preact/reference/functions/infiniteQueryOptions"
},
{
"label": "mutationOptions",
"to": "framework/preact/reference/functions/mutationOptions"
},
{
"label": "usePrefetchQuery",
"to": "framework/preact/reference/functions/usePrefetchQuery"
},
{
"label": "usePrefetchInfiniteQuery",
"to": "framework/preact/reference/functions/usePrefetchInfiniteQuery"
},
{
"label": "QueryErrorResetBoundary",
"to": "framework/preact/reference/functions/QueryErrorResetBoundary"
},
{
"label": "useQueryErrorResetBoundary",
"to": "framework/preact/reference/functions/useQueryErrorResetBoundary"
},
{
"label": "hydration",
"to": "framework/preact/reference/functions/HydrationBoundary"
}
]
}
]
},
{
"label": "ESLint",
"children": [
{
"label": "ESLint Plugin Query",
"to": "eslint/eslint-plugin-query"
},
{
"label": "Exhaustive Deps",
"to": "eslint/exhaustive-deps"
},
{
"label": "Stable Query Client",
"to": "eslint/stable-query-client"
},
{
"label": "No Rest Destructuring",
"to": "eslint/no-rest-destructuring"
},
{
"label": "No Unstable Deps",
"to": "eslint/no-unstable-deps"
},
{
"label": "Infinite Query Property Order",
"to": "eslint/infinite-query-property-order"
},
{
"label": "No void Query Functions",
"to": "eslint/no-void-query-fn"
},
{
"label": "Mutation Property Order",
"to": "eslint/mutation-property-order"
}
]
},
{
"label": "Examples",
"children": [],
"frameworks": [
{
"label": "react",
"children": [
{
"label": "Simple",
"to": "framework/react/examples/simple"
},
{
"label": "Basic",
"to": "framework/react/examples/basic"
},
{
"label": "Basic w/ GraphQL-Request",
"to": "framework/react/examples/basic-graphql-request"
},
{
"label": "Auto Refetching / Polling / Realtime",
"to": "framework/react/examples/auto-refetching"
},
{
"label": "Optimistic Updates (UI)",
"to": "framework/react/examples/optimistic-updates-ui"
},
{
"label": "Optimistic Updates (Cache)",
"to": "framework/react/examples/optimistic-updates-cache"
},
{
"label": "Pagination",
"to": "framework/react/examples/pagination"
},
{
"label": "Load-More & Infinite Scroll",
"to": "framework/react/examples/load-more-infinite-scroll"
},
{
"label": "Infinite query with Max pages",
"to": "framework/react/examples/infinite-query-with-max-pages"
},
{
"label": "Suspense",
"to": "framework/react/examples/suspense"
},
{
"label": "Default Query Function",
"to": "framework/react/examples/default-query-function"
},
{
"label": "Playground",
"to": "framework/react/examples/playground"
},
{
"label": "Prefetching",
"to": "framework/react/examples/prefetching"
},
{
"label": "Star Wars",
"to": "framework/react/examples/star-wars"
},
{
"label": "Rick And Morty",
"to": "framework/react/examples/rick-morty"
},
{
"label": "Next.js Pages",
"to": "framework/react/examples/nextjs"
},
{
"label": "Next.js app with prefetching",
"to": "framework/react/examples/nextjs-app-prefetching"
},
{
"label": "Next.js app with streaming",
"to": "framework/react/examples/nextjs-suspense-streaming"
},
{
"label": "React Native",
"to": "framework/react/examples/react-native"
},
{
"label": "React Router",
"to": "framework/react/examples/react-router"
},
{
"label": "Offline Queries and Mutations",
"to": "framework/react/examples/offline"
},
{
"label": "Algolia",
"to": "framework/react/examples/algolia"
},
{
"label": "Shadow DOM",
"to": "framework/react/examples/shadow-dom"
},
{
"label": "Devtools Embedded Panel",
"to": "framework/react/examples/devtools-panel"
},
{
"label": "Chat example (streaming)",
"to": "framework/react/examples/chat"
}
]
},
{
"label": "solid",
"children": [
{
"label": "Simple",
"to": "framework/solid/examples/simple"
},
{
"label": "Basic",
"to": "framework/solid/examples/basic"
},
{
"label": "Basic w/ GraphQL-Request",
"to": "framework/solid/examples/basic-graphql-request"
},
{
"label": "Default Query Function",
"to": "framework/solid/examples/default-query-function"
},
{
"label": "Solid Start",
"to": "framework/solid/examples/solid-start-streaming"
},
{
"label": "Astro",
"to": "framework/solid/examples/astro"
},
{
"label": "Offline Queries and Mutations",
"to": "framework/solid/examples/offline"
}
]
},
{
"label": "vue",
"children": [
{
"label": "Basic",
"to": "framework/vue/examples/basic"
},
{
"label": "Vue 2.6",
"to": "framework/vue/examples/2.6-basic"
},
{
"label": "Vue 2.7",
"to": "framework/vue/examples/2.7-basic"
},
{
"label": "Nuxt 3",
"to": "framework/vue/examples/nuxt3"
},
{
"label": "Persister",
"to": "framework/vue/examples/persister"
}
]
},
{
"label": "svelte",
"children": [
{
"label": "Simple",
"to": "framework/svelte/examples/simple"
},
{
"label": "Basic",
"to": "framework/svelte/examples/basic"
},
{
"label": "Auto Refetching / Polling / Realtime",
"to": "framework/svelte/examples/auto-refetching"
},
{
"label": "SSR",
"to": "framework/svelte/examples/ssr"
},
{
"label": "Optimistic Updates",
"to": "framework/svelte/examples/optimistic-updates"
},
{
"label": "Playground",
"to": "framework/svelte/examples/playground"
},
{
"label": "Star Wars",
"to": "framework/svelte/examples/star-wars"
},
{
"label": "Infinite Queries",
"to": "framework/svelte/examples/load-more-infinite-scroll"
}
]
},
{
"label": "angular",
"children": [
{
"label": "Simple",
"to": "framework/angular/examples/simple"
},
{
"label": "Basic",
"to": "framework/angular/examples/basic"
},
{
"label": "Auto Refetching / Polling / Realtime",
"to": "framework/angular/examples/auto-refetching"
},
{
"label": "Optimistic Updates",
"to": "framework/angular/examples/optimistic-updates"
},
{
"label": "Pagination",
"to": "framework/angular/examples/pagination"
},
{
"label": "Infinite query with maxPages",
"to": "framework/angular/examples/infinite-query-with-max-pages"
},
{
"label": "Angular Router",
"to": "framework/angular/examples/router"
},
{
"label": "RxJS autocomplete",
"to": "framework/angular/examples/rxjs"
},
{
"label": "Query options from a service",
"to": "framework/angular/examples/query-options-from-a-service"
},
{
"label": "Devtools embedded panel",
"to": "framework/angular/examples/devtools-panel"
}
]
}
]
},
{
"label": "Plugins",
"children": [],
"frameworks": [
{
"label": "react",
"children": [
{
"label": "persistQueryClient",
"to": "framework/react/plugins/persistQueryClient"
},
{
"label": "createSyncStoragePersister",
"to": "framework/react/plugins/createSyncStoragePersister"
},
{
"label": "createAsyncStoragePersister",
"to": "framework/react/plugins/createAsyncStoragePersister"
},
{
"label": "broadcastQueryClient (Experimental)",
"to": "framework/react/plugins/broadcastQueryClient"
},
{
"label": "createPersister (Experimental)",
"to": "framework/react/plugins/createPersister"
}
]
},
{
"label": "solid",
"children": [
{
"label": "broadcastQueryClient (Experimental)",
"to": "framework/solid/plugins/broadcastQueryClient"
},
{
"label": "createPersister (Experimental)",
"to": "framework/solid/plugins/createPersister"
}
]
},
{
"label": "vue",
"children": [
{
"label": "broadcastQueryClient (Experimental)",
"to": "framework/vue/plugins/broadcastQueryClient"
},
{
"label": "createPersister (Experimental)",
"to": "framework/vue/plugins/createPersister"
}
]
},
{
"label": "preact",
"children": [
{
"label": "persistQueryClient",
"to": "framework/preact/plugins/persistQueryClient"
},
{
"label": "createSyncStoragePersister",
"to": "framework/preact/plugins/createSyncStoragePersister"
},
{
"label": "createAsyncStoragePersister",
"to": "framework/preact/plugins/createAsyncStoragePersister"
},
{
"label": "broadcastQueryClient (Experimental)",
"to": "framework/preact/plugins/broadcastQueryClient"
},
{
"label": "createPersister (Experimental)",
"to": "framework/preact/plugins/createPersister"
}
]
}
]
}
],
"users": [
"Google",
"Walmart",
"Facebook",
"PayPal",
"Amazon",
"American Express",
"Microsoft",
"Target",
"Ebay",
"Autodesk",
"CarFAX",
"Docusign",
"HP",
"MLB",
"Volvo",
"Ocado",
"UPC.ch",
"EFI.com",
"ReactBricks",
"Nozzle.io",
"Uber"
]
}
================================================
FILE: docs/eslint/eslint-plugin-query.md
================================================
---
id: eslint-plugin-query
title: ESLint Plugin Query
---
TanStack Query comes with its own ESLint plugin. This plugin is used to enforce best practices and to help you avoid common mistakes.
## Installation
The plugin is a separate package that you need to install:
```bash
npm i -D @tanstack/eslint-plugin-query
```
or
```bash
pnpm add -D @tanstack/eslint-plugin-query
```
or
```bash
yarn add -D @tanstack/eslint-plugin-query
```
or
```bash
bun add -D @tanstack/eslint-plugin-query
```
## Flat Config (`eslint.config.js`)
### Recommended setup
To enable all of the recommended rules for our plugin, add the following config:
```js
import pluginQuery from '@tanstack/eslint-plugin-query'
export default [
...pluginQuery.configs['flat/recommended'],
// Any other config...
]
```
### Custom setup
Alternatively, you can load the plugin and configure only the rules you want to use:
```js
import pluginQuery from '@tanstack/eslint-plugin-query'
export default [
{
plugins: {
'@tanstack/query': pluginQuery,
},
rules: {
'@tanstack/query/exhaustive-deps': 'error',
},
},
// Any other config...
]
```
## Legacy Config (`.eslintrc`)
### Recommended setup
To enable all of the recommended rules for our plugin, add `plugin:@tanstack/query/recommended` in extends:
```json
{
"extends": ["plugin:@tanstack/query/recommended"]
}
```
### Custom setup
Alternatively, add `@tanstack/query` to the plugins section, and configure the rules you want to use:
```json
{
"plugins": ["@tanstack/query"],
"rules": {
"@tanstack/query/exhaustive-deps": "error"
}
}
```
## Rules
- [@tanstack/query/exhaustive-deps](./exhaustive-deps.md)
- [@tanstack/query/no-rest-destructuring](./no-rest-destructuring.md)
- [@tanstack/query/stable-query-client](./stable-query-client.md)
- [@tanstack/query/no-unstable-deps](./no-unstable-deps.md)
- [@tanstack/query/infinite-query-property-order](./infinite-query-property-order.md)
- [@tanstack/query/no-void-query-fn](./no-void-query-fn.md)
- [@tanstack/query/mutation-property-order](./mutation-property-order.md)
================================================
FILE: docs/eslint/exhaustive-deps.md
================================================
---
id: exhaustive-deps
title: Exhaustive dependencies for query keys
---
Query keys should be seen like a dependency array to your query function: Every variable that is used inside the queryFn should be added to the query key.
This makes sure that queries are cached independently and that queries are refetched automatically when the variables changes.
## Rule Details
Examples of **incorrect** code for this rule:
```tsx
/* eslint "@tanstack/query/exhaustive-deps": "error" */
useQuery({
queryKey: ['todo'],
queryFn: () => api.getTodo(todoId),
})
const todoQueries = {
detail: (id) => ({ queryKey: ['todo'], queryFn: () => api.getTodo(id) }),
}
```
Examples of **correct** code for this rule:
```tsx
useQuery({
queryKey: ['todo', todoId],
queryFn: () => api.getTodo(todoId),
})
const todoQueries = {
detail: (id) => ({ queryKey: ['todo', id], queryFn: () => api.getTodo(id) }),
}
```
## When Not To Use It
If you don't care about the rules of the query keys, then you will not need this rule.
## Attributes
- [x] ✅ Recommended
- [x] 🔧 Fixable
================================================
FILE: docs/eslint/infinite-query-property-order.md
================================================
---
id: infinite-query-property-order
title: Ensure correct order of inference sensitive properties for infinite queries
---
For the following functions, the property order of the passed in object matters due to type inference:
- `useInfiniteQuery`
- `useSuspenseInfiniteQuery`
- `infiniteQueryOptions`
The correct property order is as follows:
- `queryFn`
- `getPreviousPageParam`
- `getNextPageParam`
All other properties are insensitive to the order as they do not depend on type inference.
## Rule Details
Examples of **incorrect** code for this rule:
```tsx
/* eslint "@tanstack/query/infinite-query-property-order": "warn" */
import { useInfiniteQuery } from '@tanstack/react-query'
const query = useInfiniteQuery({
queryKey: ['projects'],
getNextPageParam: (lastPage) => lastPage.nextId ?? undefined,
queryFn: async ({ pageParam }) => {
const response = await fetch(`/api/projects?cursor=${pageParam}`)
return await response.json()
},
initialPageParam: 0,
getPreviousPageParam: (firstPage) => firstPage.previousId ?? undefined,
maxPages: 3,
})
```
Examples of **correct** code for this rule:
```tsx
/* eslint "@tanstack/query/infinite-query-property-order": "warn" */
import { useInfiniteQuery } from '@tanstack/react-query'
const query = useInfiniteQuery({
queryKey: ['projects'],
queryFn: async ({ pageParam }) => {
const response = await fetch(`/api/projects?cursor=${pageParam}`)
return await response.json()
},
initialPageParam: 0,
getPreviousPageParam: (firstPage) => firstPage.previousId ?? undefined,
getNextPageParam: (lastPage) => lastPage.nextId ?? undefined,
maxPages: 3,
})
```
## Attributes
- [x] ✅ Recommended
- [x] 🔧 Fixable
================================================
FILE: docs/eslint/mutation-property-order.md
================================================
---
id: mutation-property-order
title: Ensure correct order of inference-sensitive properties in useMutation()
---
For the following functions, the property order of the passed in object matters due to type inference:
- `useMutation()`
The correct property order is as follows:
- `onMutate`
- `onError`
- `onSettled`
All other properties are insensitive to the order as they do not depend on type inference.
## Rule Details
Examples of **incorrect** code for this rule:
```tsx
/* eslint "@tanstack/query/mutation-property-order": "warn" */
import { useMutation } from '@tanstack/react-query'
const mutation = useMutation({
mutationFn: () => Promise.resolve('success'),
onSettled: () => {
results.push('onSettled-promise')
return Promise.resolve('also-ignored') // Promise<string> (should be ignored)
},
onMutate: async () => {
results.push('onMutate-async')
await sleep(1)
return { backup: 'async-data' }
},
onError: async () => {
results.push('onError-async-start')
await sleep(1)
results.push('onError-async-end')
},
})
```
Examples of **correct** code for this rule:
```tsx
/* eslint "@tanstack/query/mutation-property-order": "warn" */
import { useMutation } from '@tanstack/react-query'
const mutation = useMutation({
mutationFn: () => Promise.resolve('success'),
onMutate: async () => {
results.push('onMutate-async')
await sleep(1)
return { backup: 'async-data' }
},
onError: async () => {
results.push('onError-async-start')
await sleep(1)
results.push('onError-async-end')
},
onSettled: () => {
results.push('onSettled-promise')
return Promise.resolve('also-ignored') // Promise<string> (should be ignored)
},
})
```
## Attributes
- [x] ✅ Recommended
- [x] 🔧 Fixable
================================================
FILE: docs/eslint/no-rest-destructuring.md
================================================
---
id: no-rest-destructuring
title: Disallow object rest destructuring on query results
---
Use object rest destructuring on query results automatically subscribes to every field of the query result, which may cause unnecessary re-renders.
This makes sure that you only subscribe to the fields that you actually need.
## Rule Details
Examples of **incorrect** code for this rule:
```tsx
/* eslint "@tanstack/query/no-rest-destructuring": "warn" */
const useTodos = () => {
const { data: todos, ...rest } = useQuery({
queryKey: ['todos'],
queryFn: () => api.getTodos(),
})
return { todos, ...rest }
}
```
Examples of **correct** code for this rule:
```tsx
const todosQuery = useQuery({
queryKey: ['todos'],
queryFn: () => api.getTodos(),
})
// normal object destructuring is fine
const { data: todos } = todosQuery
```
## When Not To Use It
If you set the `notifyOnChangeProps` options manually, you can disable this rule.
Since you are not using tracked queries, you are responsible for specifying which props should trigger a re-render.
## Attributes
- [x] ✅ Recommended
- [ ] 🔧 Fixable
================================================
FILE: docs/eslint/no-unstable-deps.md
================================================
---
id: no-unstable-deps
title: Disallow putting the result of query hooks directly in a React hook dependency array
---
The object returned from the following query hooks is **not** referentially stable:
- `useQuery`
- `useSuspenseQuery`
- `useQueries`
- `useSuspenseQueries`
- `useInfiniteQuery`
- `useSuspenseInfiniteQuery`
- `useMutation`
The object returned from those hooks should **not** be put directly into the dependency array of a React hook (e.g. `useEffect`, `useMemo`, `useCallback`).
Instead, destructure the return value of the query hook and pass the destructured values into the dependency array of the React hook.
## Rule Details
Examples of **incorrect** code for this rule:
```tsx
/* eslint "@tanstack/query/no-unstable-deps": "warn" */
import { useCallback } from 'React'
import { useMutation } from '@tanstack/react-query'
function Component() {
const mutation = useMutation({ mutationFn: (value: string) => value })
const callback = useCallback(() => {
mutation.mutate('hello')
}, [mutation])
return null
}
```
Examples of **correct** code for this rule:
```tsx
/* eslint "@tanstack/query/no-unstable-deps": "warn" */
import { useCallback } from 'React'
import { useMutation } from '@tanstack/react-query'
function Component() {
const { mutate } = useMutation({ mutationFn: (value: string) => value })
const callback = useCallback(() => {
mutate('hello')
}, [mutate])
return null
}
```
## Attributes
- [x] ✅ Recommended
- [ ] 🔧 Fixable
================================================
FILE: docs/eslint/no-void-query-fn.md
================================================
---
id: no-void-query-fn
title: Disallow returning void from query functions
---
Query functions must return a value that will be cached by TanStack Query. Functions that don't return a value (void functions) can lead to unexpected behavior and might indicate a mistake in the implementation.
## Rule Details
Example of **incorrect** code for this rule:
```tsx
/* eslint "@tanstack/query/no-void-query-fn": "error" */
useQuery({
queryKey: ['todos'],
queryFn: async () => {
await api.todos.fetch() // Function doesn't return the fetched data
},
})
```
Example of **correct** code for this rule:
```tsx
/* eslint "@tanstack/query/no-void-query-fn": "error" */
useQuery({
queryKey: ['todos'],
queryFn: async () => {
const todos = await api.todos.fetch()
return todos
},
})
```
## Attributes
- [x] ✅ Recommended
- [ ] 🔧 Fixable
================================================
FILE: docs/eslint/stable-query-client.md
================================================
---
id: stable-query-client
title: Stable Query Client
---
The QueryClient contains the QueryCache, so you'd only want to create one instance of the QueryClient for the lifecycle of your application - _not_ a new instance on every render.
> Exception: It's allowed to create a new QueryClient inside an async Server Component, because the async function is only called once on the server.
## Rule Details
Examples of **incorrect** code for this rule:
```tsx
/* eslint "@tanstack/query/stable-query-client": "error" */
function App() {
const queryClient = new QueryClient()
return (
<QueryClientProvider client={queryClient}>
<Home />
</QueryClientProvider>
)
}
```
Examples of **correct** code for this rule:
```tsx
function App() {
const [queryClient] = useState(() => new QueryClient())
return (
<QueryClientProvider client={queryClient}>
<Home />
</QueryClientProvider>
)
}
```
```tsx
const queryClient = new QueryClient()
function App() {
return (
<QueryClientProvider client={queryClient}>
<Home />
</QueryClientProvider>
)
}
```
```tsx
async function App() {
const queryClient = new QueryClient()
await queryClient.prefetchQuery(options)
}
```
## Attributes
- [x] ✅ Recommended
- [x] 🔧 Fixable
================================================
FILE: docs/framework/angular/angular-httpclient-and-other-data-fetching-clients.md
================================================
---
id: Angular-HttpClient-and-other-data-fetching-clients
title: Angular HttpClient and other data fetching clients
---
Because TanStack Query's fetching mechanisms are agnostically built on Promises, you can use literally any asynchronous data fetching client, including the browser native `fetch` API, `graphql-request`, and more.
## Using Angular's `HttpClient` for data fetching
`HttpClient` is a powerful and integrated part of Angular, which gives the following benefits:
- Mock responses in unit tests using [provideHttpClientTesting](https://angular.dev/guide/http/testing).
- [Interceptors](https://angular.dev/guide/http/interceptors) can be used for a wide range of functionality including adding authentication headers, performing logging, etc. While some data fetching libraries have their own interceptor system, `HttpClient` interceptors are integrated with Angular's dependency injection system.
- `HttpClient` automatically informs [`PendingTasks`](https://angular.dev/api/core/PendingTasks#), which enables Angular to be aware of pending requests. Unit tests and SSR can use the resulting application _stableness_ information to wait for pending requests to finish. This makes unit testing much easier for [Zoneless](https://angular.dev/guide/zoneless) applications.
- When using SSR, `HttpClient` will [cache requests](https://angular.dev/guide/ssr#caching-data-when-using-HttpClient) performed on the server. This will prevent unneeded requests on the client. `HttpClient` SSR caching works out of the box. TanStack Query has its own hydration functionality which may be more powerful but requires some setup. Which one fits your needs best depends on your use case.
### Using observables in `queryFn`
As TanStack Query is a promise based library, observables from `HttpClient` need to be converted to promises. This can be done with the `lastValueFrom` or `firstValueFrom` functions from `rxjs`.
```ts
@Component({
// ...
})
class ExampleComponent {
private readonly http = inject(HttpClient)
readonly query = injectQuery(() => ({
queryKey: ['repoData'],
queryFn: () =>
lastValueFrom(
this.http.get('https://api.github.com/repos/tanstack/query'),
),
}))
}
```
> Since Angular is moving towards RxJS as an optional dependency, it's expected that `HttpClient` will also support promises in the future.
>
> Support for observables in TanStack Query for Angular is planned.
## Comparison table
| Data fetching client | Pros | Cons |
| --------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------- |
| **Angular HttpClient** | Featureful and very well integrated with Angular. | Observables need to be converted to Promises. |
| **Fetch** | Browser native API, so adds nothing to bundle size. | Barebones API which lacks many features. |
| **Specialized libraries such as `graphql-request`** | Specialized features for specific use cases. | If it's not an Angular library it won't integrate well with the framework. |
================================================
FILE: docs/framework/angular/devtools.md
================================================
---
id: devtools
title: Devtools
---
> For Chrome, Firefox, and Edge users: Third-party browser extensions are available for debugging TanStack Query directly in browser DevTools. These provide the same functionality as the framework-specific devtools packages:
>
> - <img alt="Chrome logo" src="https://www.google.com/chrome/static/images/chrome-logo.svg" width="16" height="16" class="inline mr-1 not-prose" /> [Devtools for Chrome](https://chromewebstore.google.com/detail/tanstack-query-devtools/annajfchloimdhceglpgglpeepfghfai)
> - <img alt="Firefox logo" src="https://upload.wikimedia.org/wikipedia/commons/a/a0/Firefox_logo%2C_2019.svg" width="16" height="16" class="inline mr-1 not-prose" /> [Devtools for Firefox](https://addons.mozilla.org/en-US/firefox/addon/tanstack-query-devtools/)
> - <img alt="Edge logo" src="https://upload.wikimedia.org/wikipedia/commons/9/98/Microsoft_Edge_logo_%282019%29.svg" width="16" height="16" class="inline mr-1 not-prose" /> [Devtools for Edge](https://microsoftedge.microsoft.com/addons/detail/tanstack-query-devtools/edmdpkgkacmjopodhfolmphdenmddobj)
## Enable devtools
The devtools help you debug and inspect your queries and mutations. You can enable the devtools by adding `withDevtools` to `provideTanStackQuery`.
By default, Angular Query Devtools are only included in development mode bundles, so you don't need to worry about excluding them during a production build.
```ts
import {
QueryClient,
provideTanStackQuery,
} from '@tanstack/angular-query-experimental'
import { withDevtools } from '@tanstack/angular-query-experimental/devtools'
export const appConfig: ApplicationConfig = {
providers: [provideTanStackQuery(new QueryClient(), withDevtools())],
}
```
## Devtools in production
Devtools are automatically excluded from production builds. However, it might be desirable to lazy load the devtools in production.
To use `withDevtools` in production builds, import using the `production` sub-path. The function exported from the production subpath is identical to the main one, but won't be excluded from production builds.
```ts
import { withDevtools } from '@tanstack/angular-query-experimental/devtools/production'
```
To control when devtools are loaded, you can use the `loadDevtools` option.
When not setting the option or setting it to 'auto', the devtools will be loaded automatically only when Angular runs in development mode.
```ts
import { withDevtools } from '@tanstack/angular-query-experimental/devtools'
provideTanStackQuery(new QueryClient(), withDevtools())
// which is equivalent to
provideTanStackQuery(
new QueryClient(),
withDevtools(() => ({ loadDevtools: 'auto' })),
)
```
When setting the option to true, the devtools will be loaded in both development and production mode.
This is useful if you want to load devtools based on [Angular environment configurations](https://angular.dev/tools/cli/environments). E.g. you could set this to true when the application is running on your production build staging environment.
```ts
import { environment } from './environments/environment'
// Make sure to use the production sub-path to load devtools in production builds
import { withDevtools } from '@tanstack/angular-query-experimental/devtools/production'
provideTanStackQuery(
new QueryClient(),
withDevtools(() => ({ loadDevtools: environment.loadDevtools })),
)
```
When setting the option to false, the devtools will not be loaded.
```ts
provideTanStackQuery(
new QueryClient(),
withDevtools(() => ({ loadDevtools: false })),
)
```
## Derive options through reactivity
Options are passed to `withDevtools` from a callback function to support reactivity through signals. In the following example
a signal is created from a RxJS observable that emits on a keyboard shortcut. When the derived signal is set to true, the devtools are lazily loaded.
The example below always loads devtools in development mode and loads on-demand in production mode when a keyboard shortcut is pressed.
```ts
import { Injectable, isDevMode } from '@angular/core'
import { fromEvent, map, scan } from 'rxjs'
import { toSignal } from '@angular/core/rxjs-interop'
@Injectable({ providedIn: 'root' })
export class DevtoolsOptionsManager {
loadDevtools = toSignal(
fromEvent<KeyboardEvent>(document, 'keydown').pipe(
map(
(event): boolean =>
event.metaKey && event.ctrlKey && event.shiftKey && event.key === 'D',
),
scan((acc, curr) => acc || curr, isDevMode()),
),
{
initialValue: isDevMode(),
},
)
}
```
If you want to use an injectable such as a service in the callback you can use `deps`. The injected value will be passed as parameter to the callback function.
This is similar to `deps` in Angular's [`useFactory`](https://angular.dev/guide/di/dependency-injection-providers#factory-providers-usefactory) provider.
```ts
// ...
// 👇 Note we import from the production sub-path to enable devtools lazy loading in production builds
import { withDevtools } from '@tanstack/angular-query-experimental/devtools/production'
export const appConfig: ApplicationConfig = {
providers: [
provideHttpClient(),
provideTanStackQuery(
new QueryClient(),
withDevtools(
(devToolsOptionsManager: DevtoolsOptionsManager) => ({
loadDevtools: devToolsOptionsManager.loadDevtools(),
}),
{
// `deps` is used to inject and pass `DevtoolsOptionsManager` to the `withDevtools` callback.
deps: [DevtoolsOptionsManager],
},
),
),
],
}
```
### Options returned from the callback
Of these options `loadDevtools`, `client`, `position`, `errorTypes`, `buttonPosition`, and `initialIsOpen` support reactivity through signals.
- `loadDevtools?: 'auto' | boolean`
- Defaults to `auto`: lazily loads devtools when in development mode. Skips loading in production mode.
- Use this to control if the devtools are loaded.
- `initialIsOpen?: Boolean`
- Set this to `true` if you want the tools to default to being open
- `buttonPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right" | "relative"`
- Defaults to `bottom-right`
- The position of the TanStack logo to open and close the devtools panel
- If `relative`, the button is placed in the location that you render the devtools.
- `position?: "top" | "bottom" | "left" | "right"`
- Defaults to `bottom`
- The position of the Angular Query devtools panel
- `client?: QueryClient`,
- Use this to use a custom QueryClient. Otherwise, the QueryClient provided through `provideTanStackQuery` will be injected.
- `errorTypes?: { name: string; initializer: (query: Query) => TError}[]`
- Use this to predefine some errors that can be triggered on your queries. Initializer will be called (with the specific query) when that error is toggled on from the UI. It must return an Error.
- `styleNonce?: string`
- Use this to pass a nonce to the style tag that is added to the document head. This is useful if you are using a Content Security Policy (CSP) nonce to allow inline styles.
- `shadowDOMTarget?: ShadowRoot`
- Default behavior will apply the devtool's styles to the head tag within the DOM.
- Use this to pass a shadow DOM target to the devtools so that the styles will be applied within the shadow DOM instead of within the head tag in the light DOM.
- `hideDisabledQueries?: boolean`
- Set this to true to hide disabled queries from the devtools panel.
================================================
FILE: docs/framework/angular/guides/background-fetching-indicators.md
================================================
---
id: background-fetching-indicators
title: Background Fetching Indicators
ref: docs/framework/react/guides/background-fetching-indicators.md
replace:
{
'useIsFetching': 'injectIsFetching',
'hook': 'function',
'@tanstack/react-query': '@tanstack/angular-query-experimental',
}
---
[//]: # 'Example'
```angular-ts
@Component({
selector: 'todos',
template: `
@if (todosQuery.isPending()) {
Loading...
} @else if (todosQuery.isError()) {
An error has occurred: {{ todosQuery.error().message }}
} @else if (todosQuery.isSuccess()) {
@if (todosQuery.isFetching()) {
Refreshing...
}
@for (todos of todosQuery.data(); track todo.id) {
<todo [todo]="todo" />
}
}
`,
})
class TodosComponent {
todosQuery = injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodos,
}))
}
```
[//]: # 'Example'
[//]: # 'Example2'
```angular-ts
import { injectIsFetching } from '@tanstack/angular-query-experimental'
@Component({
selector: 'global-loading-indicator',
template: `
@if (isFetching()) {
<div>Queries are fetching in the background...</div>
}
`,
})
export class GlobalLoadingIndicatorComponent {
isFetching = injectIsFetching()
}
```
[//]: # 'Example2'
================================================
FILE: docs/framework/angular/guides/caching.md
================================================
---
id: caching
title: Caching Examples
---
> Please thoroughly read the [Important Defaults](./important-defaults.md) before reading this guide
## Basic Example
This caching example illustrates the story and lifecycle of:
- Query Instances with and without cache data
- Background Refetching
- Inactive Queries
- Garbage Collection
Let's assume we are using the default `gcTime` of **5 minutes** and the default `staleTime` of `0`.
- A new instance of `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos }))` initializes.
- Since no other queries have been made with the `['todos']` query key, this query will show a hard loading state and make a network request to fetch the data.
- When the network request has completed, the returned data will be cached under the `['todos']` key.
- The data will be marked as stale after the configured `staleTime` (defaults to `0`, or immediately).
- A second instance of `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos }))` initializes elsewhere.
- Since the cache already has data for the `['todos']` key from the first query, that data is immediately returned from the cache.
- The new instance triggers a new network request using its query function.
- Note that regardless of whether both `fetchTodos` query functions are identical or not, both queries' [`status`](../reference/functions/injectQuery.md) are updated (including `isFetching`, `isPending`, and other related values) because they have the same query key.
- When the request completes successfully, the cache's data under the `['todos']` key is updated with the new data, and both instances are updated with the new data.
- Both instances of the `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos }))` query are destroyed and no longer in use.
- Since there are no more active instances of this query, a garbage collection timeout is set using `gcTime` to delete and garbage collect the query (defaults to **5 minutes**).
- Before the cache timeout has completed, another instance of `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos }))` mounts. The query immediately returns the available cached data while the `fetchTodos` function is being run in the background. When it completes successfully, it will populate the cache with fresh data.
- The final instance of `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos }))` gets destroyed.
- No more instances of `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos }))` appear within **5 minutes**.
- The cached data under the `['todos']` key is deleted and garbage collected.
For more advanced use-cases, see [injectQuery](../reference/functions/injectQuery.md).
================================================
FILE: docs/framework/angular/guides/default-query-function.md
================================================
---
id: default-query-function
title: Default Query Function
ref: docs/framework/react/guides/default-query-function.md
---
[//]: # 'Example'
```ts
// Define a default query function that will receive the query key
const defaultQueryFn: QueryFunction = async ({ queryKey }) => {
const { data } = await axios.get(
`https://jsonplaceholder.typicode.com${queryKey[0]}`,
)
return data
}
// provide the default query function to your app with defaultOptions
const queryClient = new QueryClient({
defaultOptions: {
queries: {
queryFn: defaultQueryFn,
},
},
})
bootstrapApplication(MyAppComponent, {
providers: [provideTanStackQuery(queryClient)],
})
export class PostsComponent {
// All you have to do now is pass a key!
postsQuery = injectQuery<Array<Post>>(() => ({
queryKey: ['/posts'],
}))
// ...
}
export class PostComponent {
// You can even leave out the queryFn and just go straight into options
postQuery = injectQuery<Post>(() => ({
enabled: this.postIdSignal() > 0,
queryKey: [`/posts/${this.postIdSignal()}`],
}))
// ...
}
```
[//]: # 'Example'
================================================
FILE: docs/framework/angular/guides/dependent-queries.md
================================================
---
id: dependent-queries
title: Dependent Queries
ref: docs/framework/react/guides/dependent-queries.md
replace: { 'useQuery': 'injectQuery', 'useQueries': 'injectQueries' }
---
[//]: # 'Example'
```ts
// Get the user
userQuery = injectQuery(() => ({
queryKey: ['user', email],
queryFn: getUserByEmail,
}))
// Then get the user's projects
projectsQuery = injectQuery(() => ({
queryKey: ['projects', this.userQuery.data()?.id],
queryFn: getProjectsByUser,
// The query will not execute until the user id exists
enabled: !!this.userQuery.data()?.id,
}))
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
// injectQueries is under development for Angular Query
```
[//]: # 'Example2'
================================================
FILE: docs/framework/angular/guides/disabling-queries.md
================================================
---
id: disabling-queries
title: Disabling/Pausing Queries
ref: docs/framework/react/guides/disabling-queries.md
replace: { 'useQuery': 'injectQuery' }
---
[//]: # 'Example'
```angular-ts
@Component({
selector: 'todos',
template: `<div>
<button (click)="query.refetch()">Fetch Todos</button>
@if (query.data()) {
<ul>
@for (todo of query.data(); track todo.id) {
<li>{{ todo.title }}</li>
}
</ul>
} @else {
@if (query.isError()) {
<span>Error: {{ query.error().message }}</span>
} @else if (query.isLoading()) {
<span>Loading...</span>
} @else if (!query.isLoading() && !query.isError()) {
<span>Not ready ...</span>
}
}
<div>{{ query.isLoading() ? 'Fetching...' : '' }}</div>
</div>`,
})
export class TodosComponent {
query = injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodoList,
enabled: false,
}))
}
```
[//]: # 'Example'
[//]: # 'Example2'
```angular-ts
@Component({
selector: 'todos',
template: `
<div>
// 🚀 applying the filter will enable and execute the query
<filters-form onApply="filter.set" />
<todos-table data="query.data()" />
</div>
`,
})
export class TodosComponent {
filter = signal('')
todosQuery = injectQuery(() => ({
queryKey: ['todos', this.filter()],
queryFn: () => fetchTodos(this.filter()),
enabled: !!this.filter(),
}))
}
```
[//]: # 'Example2'
[//]: # 'Example3'
```angular-ts
import { skipToken, injectQuery } from '@tanstack/query-angular'
@Component({
selector: 'todos',
template: `
<div>
// 🚀 applying the filter will enable and execute the query
<filters-form onApply="filter.set" />
<todos-table data="query.data()" />
</div>
`,
})
export class TodosComponent {
filter = signal('')
todosQuery = injectQuery(() => ({
queryKey: ['todos', this.filter()],
queryFn: this.filter() ? () => fetchTodos(this.filter()) : skipToken,
}))
}
```
[//]: # 'Example3'
================================================
FILE: docs/framework/angular/guides/does-this-replace-client-state.md
================================================
---
id: does-this-replace-client-state
title: Does TanStack Query replace global state managers?
ref: docs/framework/react/guides/does-this-replace-client-state.md
replace:
{
'useQuery': 'injectQuery',
'useMutation': 'injectMutation',
'hook': 'function',
}
---
================================================
FILE: docs/framework/angular/guides/filters.md
================================================
---
id: filters
title: Filters
ref: docs/framework/react/guides/filters.md
---
================================================
FILE: docs/framework/angular/guides/important-defaults.md
================================================
---
id: important-defaults
title: Important Defaults
ref: docs/framework/react/guides/important-defaults.md
replace:
{
'React': 'Angular',
'react-query': 'angular-query',
'useQuery': 'injectQuery',
'useInfiniteQuery': 'injectInfiniteQuery',
'useMemo and useCallback': 'setting signal values',
}
---
[//]: # 'Materials'
[//]: # 'Materials'
================================================
FILE: docs/framework/angular/guides/infinite-queries.md
================================================
---
id: infinite-queries
title: Infinite Queries
ref: docs/framework/react/guides/infinite-queries.md
replace:
{ 'useQuery': 'injectQuery', 'useInfiniteQuery': 'injectInfiniteQuery' }
---
[//]: # 'Example'
```angular-ts
import { Component, computed, inject } from '@angular/core'
import { injectInfiniteQuery } from '@tanstack/angular-query-experimental'
import { lastValueFrom } from 'rxjs'
import { ProjectsService } from './projects-service'
@Component({
selector: 'example',
templateUrl: './example.component.html',
})
export class Example {
projectsService = inject(ProjectsService)
query = injectInfiniteQuery(() => ({
queryKey: ['projects'],
queryFn: async ({ pageParam }) => {
return lastValueFrom(this.projectsService.getProjects(pageParam))
},
initialPageParam: 0,
getPreviousPageParam: (firstPage) => firstPage.previousId ?? undefined,
getNextPageParam: (lastPage) => lastPage.nextId ?? undefined,
maxPages: 3,
}))
nextButtonDisabled = computed(
() => !this.#hasNextPage() || this.#isFetchingNextPage(),
)
nextButtonText = computed(() =>
this.#isFetchingNextPage()
? 'Loading more...'
: this.#hasNextPage()
? 'Load newer'
: 'Nothing more to load',
)
#hasNextPage = this.query.hasNextPage
#isFetchingNextPage = this.query.isFetchingNextPage
}
```
```angular-html
<div>
@if (query.isPending()) {
<p>Loading...</p>
} @else if (query.isError()) {
<span>Error: {{ query?.error().message }}</span>
} @else {
@for (page of query?.data().pages; track $index) {
@for (project of page.data; track project.id) {
<p>{{ project.name }} {{ project.id }}</p>
}
}
<div>
<button (click)="query.fetchNextPage()" [disabled]="nextButtonDisabled()">
{{ nextButtonText() }}
</button>
</div>
}
</div>
```
[//]: # 'Example'
[//]: # 'Example1'
```angular-ts
@Component({
template: ` <list-component (endReached)="fetchNextPage()" /> `,
})
export class Example {
query = injectInfiniteQuery(() => ({
queryKey: ['projects'],
queryFn: async ({ pageParam }) => {
return lastValueFrom(this.projectsService.getProjects(pageParam))
},
}))
fetchNextPage() {
// Do nothing if already fetching
if (this.query.isFetching()) return
this.query.fetchNextPage()
}
}
```
[//]: # 'Example1'
[//]: # 'Example3'
```ts
query = injectInfiniteQuery(() => ({
queryKey: ['projects'],
queryFn: fetchProjects,
getNextPageParam: (lastPage, pages) => lastPage.nextCursor,
getPreviousPageParam: (firstPage, pages) => firstPage.prevCursor,
}))
```
[//]: # 'Example3'
[//]: # 'Example4'
```ts
query = injectInfiniteQuery(() => ({
queryKey: ['projects'],
queryFn: fetchProjects,
select: (data) => ({
pages: [...data.pages].reverse(),
pageParams: [...data.pageParams].reverse(),
}),
}))
```
[//]: # 'Example4'
[//]: # 'Example8'
```ts
injectInfiniteQuery(() => ({
queryKey: ['projects'],
queryFn: fetchProjects,
initialPageParam: 0,
getNextPageParam: (lastPage, pages) => lastPage.nextCursor,
getPreviousPageParam: (firstPage, pages) => firstPage.prevCursor,
maxPages: 3,
}))
```
[//]: # 'Example8'
[//]: # 'Example9'
```ts
injectInfiniteQuery(() => ({
queryKey: ['projects'],
queryFn: fetchProjects,
initialPageParam: 0,
getNextPageParam: (lastPage, allPages, lastPageParam) => {
if (lastPage.length === 0) {
return undefined
}
return lastPageParam + 1
},
getPreviousPageParam: (firstPage, allPages, firstPageParam) => {
if (firstPageParam <= 1) {
return undefined
}
return firstPageParam - 1
},
}))
```
[//]: # 'Example9'
================================================
FILE: docs/framework/angular/guides/initial-query-data.md
================================================
---
id: initial-query-data
title: Initial Query Data
ref: docs/framework/react/guides/initial-query-data.md
replace:
{
'render': 'service or component instance',
' when it mounts': '',
'after mount': 'after initialization',
'on mount': 'on initialization',
}
---
[//]: # 'Example'
```ts
result = injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
initialData: initialTodos,
}))
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
// Will show initialTodos immediately, but also immediately refetch todos
// when an instance of the component or service is created
result = injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
initialData: initialTodos,
}))
```
[//]: # 'Example2'
[//]: # 'Example3'
```ts
// Show initialTodos immediately, but won't refetch until
// another interaction event is encountered after 1000 ms
result = injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
initialData: initialTodos,
staleTime: 1000,
}))
```
[//]: # 'Example3'
[//]: # 'Example4'
```ts
// Show initialTodos immediately, but won't refetch until
// another interaction event is encountered after 1000 ms
result = injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
initialData: initialTodos,
staleTime: 60 * 1000, // 1 minute
// This could be 10 seconds ago or 10 minutes ago
initialDataUpdatedAt: initialTodosUpdatedTimestamp, // eg. 1608412420052
}))
```
[//]: # 'Example4'
[//]: # 'Example5'
```ts
result = injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
initialData: () => getExpensiveTodos(),
}))
```
[//]: # 'Example5'
[//]: # 'Example6'
```ts
result = injectQuery(() => ({
queryKey: ['todo', this.todoId()],
queryFn: () => fetch('/todos'),
initialData: () => {
// Use a todo from the 'todos' query as the initial data for this todo query
return this.queryClient
.getQueryData(['todos'])
?.find((d) => d.id === this.todoId())
},
}))
```
[//]: # 'Example6'
[//]: # 'Example7'
```ts
result = injectQuery(() => ({
queryKey: ['todos', this.todoId()],
queryFn: () => fetch(`/todos/${this.todoId()}`),
initialData: () =>
queryClient.getQueryData(['todos'])?.find((d) => d.id === this.todoId()),
initialDataUpdatedAt: () =>
queryClient.getQueryState(['todos'])?.dataUpdatedAt,
}))
```
[//]: # 'Example7'
[//]: # 'Example8'
```ts
result = injectQuery(() => ({
queryKey: ['todo', this.todoId()],
queryFn: () => fetch(`/todos/${this.todoId()}`),
initialData: () => {
// Get the query state
const state = queryClient.getQueryState(['todos'])
// If the query exists and has data that is no older than 10 seconds...
if (state && Date.now() - state.dataUpdatedAt <= 10 * 1000) {
// return the individual todo
return state.data.find((d) => d.id === this.todoId())
}
// Otherwise, return undefined and let it fetch from a hard loading state!
},
}))
```
[//]: # 'Example8'
[//]: # 'Materials'
[//]: # 'Materials'
================================================
FILE: docs/framework/angular/guides/invalidations-from-mutations.md
================================================
---
id: invalidations-from-mutations
title: Invalidations from Mutations
ref: docs/framework/react/guides/invalidations-from-mutations.md
replace: { 'useMutation': 'injectMutation', 'hook': 'function' }
---
[//]: # 'Example'
```ts
mutation = injectMutation(() => ({
mutationFn: postTodo,
}))
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
import {
injectMutation,
QueryClient,
} from '@tanstack/angular-query-experimental'
export class TodosComponent {
queryClient = inject(QueryClient)
// When this mutation succeeds, invalidate any queries with the `todos` or `reminders` query key
mutation = injectMutation(() => ({
mutationFn: addTodo,
onSuccess: () => {
this.queryClient.invalidateQueries({ queryKey: ['todos'] })
this.queryClient.invalidateQueries({ queryKey: ['reminders'] })
},
}))
}
```
[//]: # 'Example2'
You can wire up your invalidations to happen using any of the callbacks available in the [`injectMutation` function](./mutations.md)
================================================
FILE: docs/framework/angular/guides/mutation-options.md
================================================
---
id: query-options
title: Mutation Options
---
One of the best ways to share mutation options between multiple places,
is to use the `mutationOptions` helper. At runtime, this helper just returns whatever you pass into it,
but it has a lot of advantages when using it [with TypeScript](../typescript.md#typing-query-options).
You can define all possible options for a mutation in one place,
and you'll also get type inference and type safety for all of them.
```ts
export class QueriesService {
private http = inject(HttpClient)
updatePost(id: number) {
return mutationOptions({
mutationFn: (post: Post) => Promise.resolve(post),
mutationKey: ['updatePost', id],
onSuccess: (newPost) => {
// ^? newPost: Post
this.queryClient.setQueryData(['posts', id], newPost)
},
})
}
}
```
================================================
FILE: docs/framework/angular/guides/mutations.md
================================================
---
id: mutations
title: Mutations
ref: docs/framework/react/guides/mutations.md
replace:
{
'useMutation': 'injectMutation',
'hook': 'function',
'still mounted': 'still active',
'unmounts': 'gets destroyed',
'mounted': 'initialized',
}
---
[//]: # 'Example'
```angular-ts
@Component({
template: `
<div>
@if (mutation.isPending()) {
<span>Adding todo...</span>
} @else if (mutation.isError()) {
<div>An error occurred: {{ mutation.error()?.message }}</div>
} @else if (mutation.isSuccess()) {
<div>Todo added!</div>
}
<button (click)="mutation.mutate(1)">Create Todo</button>
</div>
`,
})
export class TodosComponent {
todoService = inject(TodoService)
mutation = injectMutation(() => ({
mutationFn: (todoId: number) =>
lastValueFrom(this.todoService.create(todoId)),
}))
}
```
[//]: # 'Example'
[//]: # 'Info1'
[//]: # 'Info1'
[//]: # 'Example2'
[//]: # 'Example2'
[//]: # 'Example3'
```angular-ts
@Component({
selector: 'todo-item',
imports: [ReactiveFormsModule],
template: `
<form [formGroup]="todoForm" (ngSubmit)="onCreateTodo()">
@if (mutation.error()) {
<h5 (click)="mutation.reset()">{{ mutation.error() }}</h5>
}
<input type="text" formControlName="title" />
<br />
<button type="submit">Create Todo</button>
</form>
`,
})
export class TodosComponent {
mutation = injectMutation(() => ({
mutationFn: createTodo,
}))
fb = inject(NonNullableFormBuilder)
todoForm = this.fb.group({
title: this.fb.control('', {
validators: [Validators.required],
}),
})
title = toSignal(this.todoForm.controls.title.valueChanges, {
initialValue: '',
})
onCreateTodo = () => {
this.mutation.mutate(this.title())
}
}
```
[//]: # 'Example3'
[//]: # 'Example4'
```ts
mutation = injectMutation(() => ({
mutationFn: addTodo,
onMutate: (variables, context) => {
// A mutation is about to happen!
// Optionally return a result containing data to use when for example rolling back
return { id: 1 }
},
onError: (error, variables, onMutateResult, context) => {
// An error happened!
console.log(`rolling back optimistic update with id ${onMutateResult.id}`)
},
onSuccess: (data, variables, onMutateResult, context) => {
// Boom baby!
},
onSettled: (data, error, variables, onMutateResult, context) => {
// Error or success... doesn't matter!
},
}))
```
[//]: # 'Example4'
[//]: # 'Example5'
```ts
mutation = injectMutation(() => ({
mutationFn: addTodo,
onSuccess: async () => {
console.log("I'm first!")
},
onSettled: async () => {
console.log("I'm second!")
},
}))
```
[//]: # 'Example5'
[//]: # 'Example6'
```ts
mutation = injectMutation(() => ({
mutationFn: addTodo,
onSuccess: (data, variables, onMutateResult, context) => {
// I will fire first
},
onError: (error, variables, onMutateResult, context) => {
// I will fire first
},
onSettled: (data, error, variables, onMutateResult, context) => {
// I will fire first
},
}))
mutation.mutate(todo, {
onSuccess: (data, variables, onMutateResult, context) => {
// I will fire second!
},
onError: (error, variables, onMutateResult, context) => {
// I will fire second!
},
onSettled: (data, error, variables, onMutateResult, context) => {
// I will fire second!
},
})
```
[//]: # 'Example6'
[//]: # 'Example7'
```ts
export class Example {
mutation = injectMutation(() => ({
mutationFn: addTodo,
onSuccess: (data, variables, onMutateResult, context) => {
// Will be called 3 times
},
}))
doMutations() {
;['Todo 1', 'Todo 2', 'Todo 3'].forEach((todo) => {
this.mutation.mutate(todo, {
onSuccess: (data, variables, onMutateResult, context) => {
// Will execute only once, for the last mutation (Todo 3),
// regardless which mutation resolves first
},
})
})
}
}
```
[//]: # 'Example7'
[//]: # 'Example8'
```ts
mutation = injectMutation(() => ({ mutationFn: addTodo }))
try {
const todo = await mutation.mutateAsync(todo)
console.log(todo)
} catch (error) {
console.error(error)
} finally {
console.log('done')
}
```
[//]: # 'Example8'
[//]: # 'Example9'
```ts
mutation = injectMutation(() => ({
mutationFn: addTodo,
retry: 3,
}))
```
[//]: # 'Example9'
[//]: # 'Example10'
```ts
const queryClient = new QueryClient()
// Define the "addTodo" mutation
queryClient.setMutationDefaults(['addTodo'], {
mutationFn: addTodo,
onMutate: async (variables, context) => {
// Cancel current queries for the todos list
await context.client.cancelQueries({ queryKey: ['todos'] })
// Create optimistic todo
const optimisticTodo = { id: uuid(), title: variables.title }
// Add optimistic todo to todos list
context.client.setQueryData(['todos'], (old) => [...old, optimisticTodo])
// Return result with the optimistic todo
return { optimisticTodo }
},
onSuccess: (result, variables, onMutateResult, context) => {
// Replace optimistic todo in the todos list with the result
context.client.setQueryData(['todos'], (old) =>
old.map((todo) =>
todo.id === onMutateResult.optimisticTodo.id ? result : todo,
),
)
},
onError: (error, variables, onMutateResult, context) => {
// Remove optimistic todo from the todos list
context.client.setQueryData(['todos'], (old) =>
old.filter((todo) => todo.id !== onMutateResult.optimisticTodo.id),
)
},
retry: 3,
})
class someComponent {
// Start mutation in some component:
mutation = injectMutation(() => ({ mutationKey: ['addTodo'] }))
someMethod() {
mutation.mutate({ title: 'title' })
}
}
// If the mutation has been paused because the device is for example offline,
// Then the paused mutation can be dehydrated when the application quits:
const state = dehydrate(queryClient)
// The mutation can then be hydrated again when the application is started:
hydrate(queryClient, state)
// Resume the paused mutations:
queryClient.resumePausedMutations()
```
[//]: # 'Example10'
[//]: # 'Example11'
[//]: # 'Example11'
[//]: # 'Materials'
[//]: # 'Materials'
================================================
FILE: docs/framework/angular/guides/network-mode.md
================================================
---
id: network-mode
title: Network Mode
ref: docs/framework/react/guides/network-mode.md
---
================================================
FILE: docs/framework/angular/guides/optimistic-updates.md
================================================
---
id: optimistic-updates
title: Optimistic Updates
ref: docs/framework/react/guides/optimistic-updates.md
replace:
{
'React': 'Angular',
'useMutation': 'injectMutation',
'hook': 'function',
'useMutationState': 'injectMutationState',
'addTodoMutation': 'addTodo',
}
---
[//]: # 'ExampleUI1'
```ts
addTodo = injectMutation(() => ({
mutationFn: (newTodo: string) => axios.post('/api/data', { text: newTodo }),
// make sure to _return_ the Promise from the query invalidation
// so that the mutation stays in `pending` state until the refetch is finished
onSettled: async () => {
return await queryClient.invalidateQueries({ queryKey: ['todos'] })
},
}))
```
[//]: # 'ExampleUI1'
[//]: # 'ExampleUI2'
```angular-ts
@Component({
template: `
@for (todo of todos.data(); track todo.id) {
<li>{{ todo.title }}</li>
}
@if (addTodo.isPending()) {
<li style="opacity: 0.5">{{ addTodo.variables() }}</li>
}
`,
})
class TodosComponent {}
```
[//]: # 'ExampleUI2'
[//]: # 'ExampleUI3'
```angular-ts
@Component({
template: `
@if (addTodo.isError()) {
<li style="color: red">
{{ addTodo.variables() }}
<button (click)="addTodo.mutate(addTodo.variables())">Retry</button>
</li>
}
`,
})
class TodosComponent {}
```
[//]: # 'ExampleUI3'
[//]: # 'ExampleUI4'
```ts
// somewhere in your app
addTodo = injectMutation(() => ({
mutationFn: (newTodo: string) => axios.post('/api/data', { text: newTodo }),
onSettled: () => queryClient.invalidateQueries({ queryKey: ['todos'] }),
mutationKey: ['addTodo'],
}))
// access variables somewhere else
mutationState = injectMutationState<string>(() => ({
filters: { mutationKey: ['addTodo'], status: 'pending' },
select: (mutation) => mutation.state.variables,
}))
```
[//]: # 'ExampleUI4'
[//]: # 'Example'
```ts
queryClient = inject(QueryClient)
updateTodo = injectMutation(() => ({
mutationFn: updateTodo,
// When mutate is called:
onMutate: async (newTodo, context) => {
// Cancel any outgoing refetches
// (so they don't overwrite our optimistic update)
await context.client.cancelQueries({ queryKey: ['todos'] })
// Snapshot the previous value
const previousTodos = context.client.getQueryData(['todos'])
// Optimistically update to the new value
context.client.setQueryData(['todos'], (old) => [...old, newTodo])
// Return a result object with the snapshotted value
return { previousTodos }
},
// If the mutation fails,
// use the result returned from onMutate to roll back
onError: (err, newTodo, onMutateResult, context) => {
context.client.setQueryData(['todos'], onMutateResult.previousTodos)
},
// Always refetch after error or success:
onSettled: (data, error, variables, onMutateResult, context) => {
context.client.invalidateQueries({ queryKey: ['todos'] })
},
}))
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
queryClient = inject(QueryClient)
updateTodo = injectMutation(() => ({
mutationFn: updateTodo,
// When mutate is called:
onMutate: async (newTodo, context) => {
// Cancel any outgoing refetches
// (so they don't overwrite our optimistic update)
await context.client.cancelQueries({ queryKey: ['todos', newTodo.id] })
// Snapshot the previous value
const previousTodo = context.client.getQueryData(['todos', newTodo.id])
// Optimistically update to the new value
context.client.setQueryData(['todos', newTodo.id], newTodo)
// Return a result with the previous and new todo
return { previousTodo, newTodo }
},
// If the mutation fails, use the result we returned above
onError: (err, newTodo, onMutateResult, context) => {
context.client.setQueryData(
['todos', onMutateResult.newTodo.id],
onMutateResult.previousTodo,
)
},
// Always refetch after error or success:
onSettled: (newTodo, error, variables, onMutateResult, context) => {
context.client.invalidateQueries({ queryKey: ['todos', newTodo.id] })
},
}))
```
[//]: # 'Example2'
[//]: # 'Example3'
```ts
injectMutation({
mutationFn: updateTodo,
// ...
onSettled: (newTodo, error, variables, onMutateResult, context) => {
if (error) {
// do something
}
},
})
```
[//]: # 'Example3'
================================================
FILE: docs/framework/angular/guides/paginated-queries.md
================================================
---
id: paginated-queries
title: Paginated / Lagged Queries
ref: docs/framework/react/guides/paginated-queries.md
replace:
{
'useQuery': 'injectQuery',
'useInfiniteQuery': 'injectInfiniteQuery',
'hook': 'function',
}
---
[//]: # 'Example'
```ts
const result = injectQuery(() => ({
queryKey: ['projects', page()],
queryFn: fetchProjects,
}))
```
[//]: # 'Example'
[//]: # 'Example2'
```angular-ts
@Component({
selector: 'pagination-example',
template: `
<div>
<p>
In this example, each page of data remains visible as the next page is
fetched. The buttons and capability to proceed to the next page are also
suppressed until the next page cursor is known. Each page is cached as a
normal query too, so when going to previous pages, you'll see them
instantaneously while they are also re-fetched invisibly in the
background.
</p>
@if (query.status() === 'pending') {
<div>Loading...</div>
} @else if (query.status() === 'error') {
<div>Error: {{ query.error().message }}</div>
} @else {
<!-- 'data' will either resolve to the latest page's data -->
<!-- or if fetching a new page, the last successful page's data -->
<div>
@for (project of query.data().projects; track project.id) {
<p>{{ project.name }}</p>
}
</div>
}
<div>Current Page: {{ page() + 1 }}</div>
<button (click)="previousPage()" [disabled]="page() === 0">
Previous Page
</button>
<button
(click)="nextPage()"
[disabled]="query.isPlaceholderData() || !query.data()?.hasMore"
>
Next Page
</button>
<!-- Since the last page's data potentially sticks around between page requests, -->
<!-- we can use 'isFetching' to show a background loading -->
<!-- indicator since our status === 'pending' state won't be triggered -->
@if (query.isFetching()) {
<span> Loading...</span>
}
</div>
`,
})
export class PaginationExampleComponent {
page = signal(0)
#queryClient = inject(QueryClient)
query = injectQuery(() => ({
queryKey: ['projects', this.page()],
queryFn: () => lastValueFrom(fetchProjects(this.page())),
placeholderData: keepPreviousData,
staleTime: 5000,
}))
constructor() {
effect(() => {
// Prefetch the next page!
if (!this.query.isPlaceholderData() && this.query.data()?.hasMore) {
this.#queryClient.prefetchQuery({
queryKey: ['projects', this.page() + 1],
queryFn: () => lastValueFrom(fetchProjects(this.page() + 1)),
})
}
})
}
previousPage() {
this.page.update((old) => Math.max(old - 1, 0))
}
nextPage() {
this.page.update((old) => (this.query.data()?.hasMore ? old + 1 : old))
}
}
```
[//]: # 'Example2'
================================================
FILE: docs/framework/angular/guides/parallel-queries.md
================================================
---
id: parallel-queries
title: Parallel Queries
ref: docs/framework/react/guides/parallel-queries.md
replace:
{
'If the number of queries you need to execute is changing from render to render, you cannot use manual querying since that would violate the rules of hooks. Instead, ': '',
'hook': 'function',
'React': 'Angular',
'hooks': 'functions',
'useQuery': 'injectQuery',
'useInfiniteQuery': 'injectInfiniteQuery',
'useQueries': 'injectQueries',
}
---
[//]: # 'Example'
```ts
export class AppComponent {
// The following queries will execute in parallel
usersQuery = injectQuery(() => ({ queryKey: ['users'], queryFn: fetchUsers }))
teamsQuery = injectQuery(() => ({ queryKey: ['teams'], queryFn: fetchTeams }))
projectsQuery = injectQuery(() => ({
queryKey: ['projects'],
queryFn: fetchProjects,
}))
}
```
[//]: # 'Example'
[//]: # 'Info'
[//]: # 'Info'
[//]: # 'DynamicParallelIntro'
TanStack Query provides `injectQueries`, which you can use to dynamically execute as many queries in parallel as you'd like.
[//]: # 'DynamicParallelIntro'
[//]: # 'Example2'
```ts
export class AppComponent {
users = signal<Array<User>>([])
// Please note injectQueries is under development and this code does not work yet
userQueries = injectQueries(() => ({
queries: users().map((user) => {
return {
queryKey: ['user', user.id],
queryFn: () => fetchUserById(user.id),
}
}),
}))
}
```
[//]: # 'Example2'
================================================
FILE: docs/framework/angular/guides/placeholder-query-data.md
================================================
---
id: placeholder-query-data
title: Placeholder Query Data
ref: docs/framework/react/guides/placeholder-query-data.md
---
[//]: # 'ExampleValue'
```ts
class TodosComponent {
result = injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
placeholderData: placeholderTodos,
}))
}
```
[//]: # 'ExampleValue'
[//]: # 'Memoization'
[//]: # 'Memoization'
[//]: # 'ExampleFunction'
```ts
class TodosComponent {
result = injectQuery(() => ({
queryKey: ['todos', id()],
queryFn: () => fetch(`/todos/${id}`),
placeholderData: (previousData, previousQuery) => previousData,
}))
}
```
[//]: # 'ExampleFunction'
[//]: # 'ExampleCache'
```ts
export class BlogPostComponent {
postId = input.required<number>()
queryClient = inject(QueryClient)
result = injectQuery(() => ({
queryKey: ['blogPost', this.postId()],
queryFn: () => fetch(`/blogPosts/${this.postId()}`),
placeholderData: () => {
// Use the smaller/preview version of the blogPost from the 'blogPosts'
// query as the placeholder data for this blogPost query
return this.queryClient
.getQueryData(['blogPosts'])
?.find((d) => d.id === this.postId())
},
}))
}
```
[//]: # 'ExampleCache'
[//]: # 'Materials'
[//]: # 'Materials'
================================================
FILE: docs/framework/angular/guides/queries.md
================================================
---
id: queries
title: Queries
ref: docs/framework/react/guides/queries.md
replace:
{
'React': 'Angular',
'react-query': 'angular-query',
'promise': 'promise or observable',
'custom hooks': 'services',
'the `useQuery` hook': '`injectQuery`',
'`useQuery`': '`injectQuery`',
"TypeScript will also narrow the type of data correctly if you've checked for pending and error before accessing it.": 'TypeScript will only narrow the type when checking boolean signals such as `isPending` and `isError`.',
}
---
[//]: # 'Example'
```ts
import { injectQuery } from '@tanstack/angular-query-experimental'
export class TodosComponent {
info = injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodoList }))
}
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
result = injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodoList }))
```
[//]: # 'Example2'
[//]: # 'Example3'
```angular-ts
@Component({
selector: 'todos',
template: `
@if (todos.isPending()) {
<span>Loading...</span>
} @else if (todos.isError()) {
<span>Error: {{ todos.error()?.message }}</span>
} @else {
<!-- We can assume by this point that status === 'success' -->
@for (todo of todos.data(); track todo.id) {
<li>{{ todo.title }}</li>
} @empty {
<li>No todos found</li>
}
}
`,
})
export class PostsComponent {
todos = injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodoList,
}))
}
```
[//]: # 'Example3'
If booleans aren't your thing, you can always use the `status` state as well:
[//]: # 'Example4'
```angular-ts
@Component({
selector: 'todos',
template: `
@switch (todos.status()) {
@case ('pending') {
<span>Loading...</span>
}
@case ('error') {
<span>Error: {{ todos.error()?.message }}</span>
}
<!-- also status === 'success', but "else" logic works, too -->
@default {
<ul>
@for (todo of todos.data(); track todo.id) {
<li>{{ todo.title }}</li>
} @empty {
<li>No todos found</li>
}
</ul>
}
}
`,
})
class TodosComponent {}
```
[//]: # 'Example4'
[//]: # 'Materials'
[//]: # 'Materials'
================================================
FILE: docs/framework/angular/guides/query-cancellation.md
================================================
---
id: query-cancellation
title: Query Cancellation
---
TanStack Query provides each query function with an [`AbortSignal` instance](https://developer.mozilla.org/docs/Web/API/AbortSignal). When a query becomes out-of-date or inactive, this `signal` will become aborted. This means that all queries are cancellable, and you can respond to the cancellation inside your query function if desired. The best part about this is that it allows you to continue to use normal async/await syntax while getting all the benefits of automatic cancellation.
## Default behavior
By default, queries that unmount or become unused before their promises are resolved are _not_ cancelled. This means that after the promise has resolved, the resulting data will be available in the cache. This is helpful if you've started receiving a query, but then unmount the component before it finishes. If you mount the component again and the query has not been garbage collected yet, data will be available.
However, if you consume the `AbortSignal`, the Promise will be cancelled (e.g. aborting the fetch) and therefore, also the Query must be cancelled. Cancelling the query will result in its state being _reverted_ to its previous state.
## Using `HttpClient`
```ts
import { HttpClient } from '@angular/common/http'
import { injectQuery } from '@tanstack/angular-query-experimental'
postQuery = injectQuery(() => ({
enabled: this.postId() > 0,
queryKey: ['post', this.postId()],
queryFn: async (context): Promise<Post> => {
const abort$ = fromEvent(context.signal, 'abort')
return lastValueFrom(this.getPost$(this.postId()).pipe(takeUntil(abort$)))
},
}))
```
## Using `fetch`
[//]: # 'Example2'
```ts
query = injectQuery(() => ({
queryKey: ['todos'],
queryFn: async ({ signal }) => {
const todosResponse = await fetch('/todos', {
// Pass the signal to one fetch
signal,
})
const todos = await todosResponse.json()
const todoDetails = todos.map(async ({ details }) => {
const response = await fetch(details, {
// Or pass it to several
signal,
})
return response.json()
})
return Promise.all(todoDetails)
},
}))
```
[//]: # 'Example2'
## Using `axios`
[//]: # 'Example3'
```ts
import axios from 'axios'
const query = injectQuery(() => ({
queryKey: ['todos'],
queryFn: ({ signal }) =>
axios.get('/todos', {
// Pass the signal to `axios`
signal,
}),
}))
```
[//]: # 'Example3'
## Manual Cancellation
You might want to cancel a query manually. For example, if the request takes a long time to finish, you can allow the user to click a cancel button to stop the request. To do this, you just need to call `queryClient.cancelQueries({ queryKey })`, which will cancel the query and revert it back to its previous state. If you have consumed the `signal` passed to the query function, TanStack Query will additionally also cancel the Promise.
[//]: # 'Example7'
```angular-ts
@Component({
template: `<button (click)="onCancel()">Cancel</button>`,
})
export class TodosComponent {
query = injectQuery(() => ({
queryKey: ['todos'],
queryFn: async ({ signal }) => {
const resp = await fetch('/todos', { signal })
return resp.json()
},
}))
queryClient = inject(QueryClient)
onCancel() {
this.queryClient.cancelQueries(['todos'])
}
}
```
[//]: # 'Example7'
================================================
FILE: docs/framework/angular/guides/query-functions.md
================================================
---
id: query-functions
title: Query Functions
ref: docs/framework/react/guides/query-functions.md
---
[//]: # 'Example'
```ts
injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchAllTodos }))
injectQuery(() => ({ queryKey: ['todos', todoId], queryFn: () => fetchTodoById(todoId) })
injectQuery(() => ({
queryKey: ['todos', todoId],
queryFn: async () => {
const data = await fetchTodoById(todoId)
return data
},
}))
injectQuery(() => ({
queryKey: ['todos', todoId],
queryFn: ({ queryKey }) => fetchTodoById(queryKey[1]),
}))
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
todos = injectQuery(() => ({
queryKey: ['todos', todoId()],
queryFn: async () => {
if (somethingGoesWrong) {
throw new Error('Oh no!')
}
if (somethingElseGoesWrong) {
return Promise.reject(new Error('Oh no!'))
}
return data
},
}))
```
[//]: # 'Example2'
[//]: # 'Example3'
```ts
todos = injectQuery(() => ({
queryKey: ['todos', todoId()],
queryFn: async () => {
const response = await fetch('/todos/' + todoId)
if (!response.ok) {
throw new Error('Network response was not ok')
}
return response.json()
},
}))
```
[//]: # 'Example3'
[//]: # 'Example4'
```ts
result = injectQuery(() => ({
queryKey: ['todos', { status: status(), page: page() }],
queryFn: fetchTodoList,
}))
// Access the key, status and page variables in your query function!
function fetchTodoList({ queryKey }) {
const [_key, { status, page }] = queryKey
return new Promise()
}
```
[//]: # 'Example4'
================================================
FILE: docs/framework/angular/guides/query-invalidation.md
================================================
---
id: query-invalidation
title: Query Invalidation
ref: docs/framework/react/guides/query-invalidation.md
replace: { 'useQuery': 'injectQuery', 'hooks': 'functions' }
---
[//]: # 'Example2'
```ts
import { injectQuery, QueryClient } from '@tanstack/angular-query-experimental'
class QueryInvalidationExample {
queryClient = inject(QueryClient)
invalidateQueries() {
this.queryClient.invalidateQueries({ queryKey: ['todos'] })
}
// Both queries below will be invalidated
todoListQuery = injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodoList,
}))
todoListQuery = injectQuery(() => ({
queryKey: ['todos', { page: 1 }],
queryFn: fetchTodoList,
}))
}
```
[//]: # 'Example2'
You can even invalidate queries with specific variables by passing a more specific query key to the `invalidateQueries` method:
[//]: # 'Example3'
```ts
queryClient.invalidateQueries({
queryKey: ['todos', { type: 'done' }],
})
// The query below will be invalidated
todoListQuery = injectQuery(() => ({
queryKey: ['todos', { type: 'done' }],
queryFn: fetchTodoList,
}))
// However, the following query below will NOT be invalidated
todoListQuery = injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodoList,
}))
```
[//]: # 'Example3'
The `invalidateQueries` API is very flexible, so even if you want to **only** invalidate `todos` queries that don't have any more variables or subkeys, you can pass an `exact: true` option to the `invalidateQueries` method:
[//]: # 'Example4'
```ts
queryClient.invalidateQueries({
queryKey: ['todos'],
exact: true,
})
// The query below will be invalidated
todoListQuery = injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodoList,
}))
// However, the following query below will NOT be invalidated
const todoListQuery = injectQuery(() => ({
queryKey: ['todos', { type: 'done' }],
queryFn: fetchTodoList,
}))
```
[//]: # 'Example4'
If you find yourself wanting **even more** granularity, you can pass a predicate function to the `invalidateQueries` method. This function will receive each `Query` instance from the query cache and allow you to return `true` or `false` for whether you want to invalidate that query:
[//]: # 'Example5'
```ts
queryClient.invalidateQueries({
predicate: (query) =>
query.queryKey[0] === 'todos' && query.queryKey[1]?.version >= 10,
})
// The query below will be invalidated
todoListQuery = injectQuery(() => ({
queryKey: ['todos', { version: 20 }],
queryFn: fetchTodoList,
}))
// The query below will be invalidated
todoListQuery = injectQuery(() => ({
queryKey: ['todos', { version: 10 }],
queryFn: fetchTodoList,
}))
// However, the following query below will NOT be invalidated
todoListQuery = injectQuery(() => ({
queryKey: ['todos', { version: 5 }],
queryFn: fetchTodoList,
}))
```
[//]: # 'Example5'
================================================
FILE: docs/framework/angular/guides/query-keys.md
================================================
---
id: query-keys
title: Query Keys
ref: docs/framework/react/guides/query-keys.md
#todo: exhaustive-deps is at least for now React-only
---
[//]: # 'Example'
```ts
// A list of todos
injectQuery(() => ({ queryKey: ['todos'], ... }))
// Something else, whatever!
injectQuery(() => ({ queryKey: ['something', 'special'], ... }))
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
// An individual todo
injectQuery(() => ({queryKey: ['todo', 5], ...}))
// An individual todo in a "preview" format
injectQuery(() => ({queryKey: ['todo', 5, {preview: true}], ...}))
// A list of todos that are "done"
injectQuery(() => ({queryKey: ['todos', {type: 'done'}], ...}))
```
[//]: # 'Example2'
[//]: # 'Example3'
```ts
injectQuery(() => ({ queryKey: ['todos', { status, page }], ... }))
injectQuery(() => ({ queryKey: ['todos', { page, status }], ...}))
injectQuery(() => ({ queryKey: ['todos', { page, status, other: undefined }], ... }))
```
[//]: # 'Example3'
[//]: # 'Example4'
```ts
injectQuery(() => ({ queryKey: ['todos', status, page], ... }))
injectQuery(() => ({ queryKey: ['todos', page, status], ...}))
injectQuery(() => ({ queryKey: ['todos', undefined, page, status], ...}))
```
[//]: # 'Example4'
[//]: # 'Example5'
```ts
todoId = signal(-1)
injectQuery(() => ({
enabled: todoId() > 0,
queryKey: ['todos', todoId()],
queryFn: () => fetchTodoById(todoId()),
}))
```
[//]: # 'Example5'
[//]: # 'Materials'
[//]: # 'Materials'
================================================
FILE: docs/framework/angular/guides/query-options.md
================================================
---
id: query-options
title: Query Options
ref: docs/framework/react/guides/query-options.md
---
[//]: # 'Example1'
```ts
import { queryOptions } from '@tanstack/angular-query-experimental'
@Injectable({
providedIn: 'root',
})
export class QueriesService {
private http = inject(HttpClient)
post(postId: number) {
return queryOptions({
queryKey: ['post', postId],
queryFn: () => {
return lastValueFrom(
this.http.get<Post>(
`https://jsonplaceholder.typicode.com/posts/${postId}`,
),
)
},
})
}
}
// usage:
postId = input.required({
transform: numberAttribute,
})
queries = inject(QueriesService)
postQuery = injectQuery(() => this.queries.post(this.postId()))
queryClient.prefetchQuery(this.queries.post(23))
queryClient.setQueryData(this.queries.post(42).queryKey, newPost)
```
[//]: # 'Example1'
[//]: # 'Example2'
```ts
// Type inference still works, so query.data will be the return type of select instead of queryFn
queries = inject(QueriesService)
query = injectQuery(() => ({
...groupOptions(1),
select: (data) => data.title,
}))
```
[//]: # 'Example2'
================================================
FILE: docs/framework/angular/guides/query-retries.md
================================================
---
id: query-retries
title: Query Retries
ref: docs/framework/react/guides/query-retries.md
replace:
{
'Provider': 'Plugin',
'useQuery': 'injectQuery',
'useMutation': 'injectMutation',
}
---
[//]: # 'Info'
[//]: # 'Info'
[//]: # 'Example'
```ts
import { injectQuery } from '@tanstack/angular-query-experimental'
// Make a specific query retry a certain number of times
const result = injectQuery(() => ({
queryKey: ['todos', 1],
queryFn: fetchTodoListPage,
retry: 10, // Will retry failed requests 10 times before displaying an error
}))
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
// Configure for all queries
import {
QueryCache,
QueryClient,
QueryClientProvider,
} from '@tanstack/angular-query-experimental'
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000),
},
},
})
bootstrapApplication(AppComponent, {
providers: [provideTanStackQuery(queryClient)],
})
```
[//]: # 'Example2'
Though it is not recommended, you can obviously override the `retryDelay` function/integer in both the Provider and individual query options. If set to an integer instead of a function the delay will always be the same amount of time:
[//]: # 'Example3'
```ts
const result = injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodoList,
retryDelay: 1000, // Will always wait 1000ms to retry, regardless of how many retries
}))
```
[//]: # 'Example3'
================================================
FILE: docs/framework/angular/guides/scroll-restoration.md
================================================
---
id: scroll-restoration
title: Scroll Restoration
ref: docs/framework/react/guides/scroll-restoration.md
---
================================================
FILE: docs/framework/angular/guides/testing.md
================================================
---
id: testing
title: Testing
---
Most Angular tests using TanStack Query will involve services or components that call `injectQuery`/`injectMutation`.
TanStack Query's `inject*` functions integrate with [`PendingTasks`](https://angular.dev/api/core/PendingTasks) which ensures the framework is aware of in-progress queries and mutations.
This means tests and SSR can wait until mutations and queries resolve. In unit tests you can use `ApplicationRef.whenStable()` or `fixture.whenStable()` to await query completion. This works for both Zone.js and Zoneless setups.
> This integration requires Angular 19 or later. Earlier versions of Angular do not support `PendingTasks`.
## TestBed setup
Create a fresh `QueryClient` for every spec and provide it with `provideTanStackQuery` or `provideQueryClient`. This keeps caches isolated and lets you change default options per test:
```ts
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: false, // ✅ faster failure tests
},
},
})
TestBed.configureTestingModule({
providers: [provideTanStackQuery(queryClient)],
})
```
> If your applications actual TanStack Query config is used in unit tests, make sure `withDevtools` is not accidentally included in test providers. This can cause slow tests. It is best to keep test and production configs separate.
If you share helpers, remember to call `queryClient.clear()` (or build a new instance) in `afterEach` so data from one test never bleeds into another.
## First query test
Query tests typically run inside `TestBed.runInInjectionContext`, then wait for stability:
```ts
const appRef = TestBed.inject(ApplicationRef)
const query = TestBed.runInInjectionContext(() =>
injectQuery(() => ({
queryKey: ['greeting'],
queryFn: () => 'Hello',
})),
)
TestBed.tick() // Trigger effect
// Application is stable when queries are idle
await appRef.whenStable()
expect(query.status()).toBe('success')
expect(query.data()).toBe('Hello')
```
PendingTasks will have `whenStable()` resolve after the query settles. When using fake timers (Vitest), advance the clock and a microtask before awaiting stability:
```ts
await vi.advanceTimersByTimeAsync(0)
await Promise.resolve()
await appRef.whenStable()
```
## Testing components
For components, bootstrap them through `TestBed.createComponent`, then await `fixture.whenStable()`:
```ts
const fixture = TestBed.createComponent(ExampleComponent)
await fixture.whenStable()
expect(fixture.componentInstance.query.data()).toEqual({ value: 42 })
```
## Handling retries
Retries slow failing tests because the default backoff runs three times. Set `retry: false` (or a specific number) through `defaultOptions` or per query to keep tests fast. If a query intentionally retries, assert on the final state rather than intermediate counts.
## HttpClient & network stubs
Angular's `HttpClientTestingModule` plays nicely with PendingTasks. Register it alongside the Query provider and flush responses through `HttpTestingController`:
```ts
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [provideTanStackQuery(queryClient)],
})
const httpCtrl = TestBed.inject(HttpTestingController)
const query = TestBed.runInInjectionContext(() =>
injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => lastValueFrom(TestBed.inject(HttpClient).get('/api/todos')),
})),
)
const fixturePromise = TestBed.inject(ApplicationRef).whenStable()
httpCtrl.expectOne('/api/todos').flush([{ id: 1 }])
await fixturePromise
expect(query.data()).toEqual([{ id: 1 }])
httpCtrl.verify()
```
## Infinite queries & pagination
Use the same pattern for infinite queries: call `fetchNextPage()`, advance timers if you are faking time, then await stability and assert on `data().pages`.
```ts
const infinite = TestBed.runInInjectionContext(() =>
injectInfiniteQuery(() => ({
queryKey: ['pages'],
queryFn: ({ pageParam = 1 }) => fetchPage(pageParam),
getNextPageParam: (last, all) => all.length + 1,
})),
)
await appRef.whenStable()
expect(infinite.data().pages).toHaveLength(1)
await infinite.fetchNextPage()
await vi.advanceTimersByTimeAsync(0)
await appRef.whenStable()
expect(infinite.data().pages).toHaveLength(2)
```
## Mutations and optimistic updates
```ts
const mutation = TestBed.runInInjectionContext(() =>
injectMutation(() => ({
mutationFn: async (input: string) => input.toUpperCase(),
})),
)
mutation.mutate('test')
// Trigger effect
TestBed.tick()
await appRef.whenStable()
expect(mutation.isSuccess()).toBe(true)
expect(mutation.data()).toBe('TEST')
```
## Quick checklist
- Fresh `QueryClient` per test (and clear it afterwards)
- Disable or control retries to avoid timeouts
- Advance timers + microtasks before `whenStable()` when using fake timers
- Use `HttpClientTestingModule` or your preferred mock to assert network calls
- Await `whenStable()` after every `refetch`, `fetchNextPage`, or mutation
- Prefer `TestBed.runInInjectionContext` for service tests and `fixture.whenStable()` for component tests
================================================
FILE: docs/framework/angular/guides/window-focus-refetching.md
================================================
---
id: window-focus-refetching
title: Window Focus Refetching
ref: docs/framework/react/guides/window-focus-refetching.md
replace: { '@tanstack/react-query': '@tanstack/angular-query-experimental' }
---
[//]: # 'Example'
```ts
export const appConfig: ApplicationConfig = {
providers: [
provideTanStackQuery(
new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false, // default: true
},
},
}),
),
],
}
```
[//]: # 'Example'
[//]: # 'Example2'
```ts
injectQuery(() => ({
queryKey: ['todos'],
queryFn: fetchTodos,
refetchOnWindowFocus: false,
}))
```
[//]: # 'Example2'
[//]: # 'ReactNative'
[//]: # 'ReactNative'
================================================
FILE: docs/framework/angular/installation.md
================================================
---
id: installation
title: Installation
---
> IMPORTANT: This library is currently in an experimental stage. This means that breaking changes will happen in minor AND patch releases. Upgrade carefully. If you use this in production while in experimental stage, please lock your version to a patch-level version to avoid unexpected breaking changes.
### NPM
_Angular Query is compatible with Angular v16 and higher_
```bash
npm i @tanstack/angular-query-experimental
```
or
```bash
pnpm add @tanstack/angular-query-experimental
```
or
```bash
yarn add @tanstack/angular-query-experimental
```
or
```bash
bun add @tanstack/angular-query-experimental
```
> Wanna give it a spin before you download? Try out the [simple](./examples/simple) or [basic](./examples/basic) examples!
================================================
FILE: docs/framework/angular/overview.md
================================================
---
id: overview
title: Overview
---
> IMPORTANT: This library is currently in an experimental stage. This means that breaking changes will happen in minor AND patch releases. Upgrade carefully. If you use this in production while in experimental stage, please lock your version to a patch-level version to avoid unexpected breaking changes.
The `@tanstack/angular-query-experimental` package offers a 1st-class API for using TanStack Query via Angular.
## Feedback welcome!
We are in the process of getting to a stable API for TanStack Query on Angular. If you have any feedback, please contact us at the [TanStack Discord](https://tlinz.com/discord) server or [visit this discussion](https://github.com/TanStack/query/discussions/6293) on Github.
## Supported Angular Versions
TanStack Query is compatible with Angular v16 and higher.
TanStack Query (FKA React Query) is often described as the missing data-fetching library for web applications, but in more technical terms, it makes **fetching, caching, synchronizing and updating server state** in your web applications a breeze.
## Motivation
Most core web frameworks **do not** come with an opinionated way of fetching or updating data in a holistic way. Because of this developers end up building either meta-frameworks which encapsulate strict opinions about data-fetching, or they invent their own ways of fetching data. This usually means cobbling together component-based state and side-effects, or using more general purpose state management libraries to store and provide asynchronous data throughout their apps.
While most traditional state management libraries are great for working with client state, they are **not so great at working with async or server state**. This is because **server state is totally different**. For starters, server state:
- Is persisted remotely in a location you may not control or own
- Requires asynchronous APIs for fetching and updating
- Implies shared ownership and can be changed by other people without your knowledge
- Can potentially become "out of date" in your applications if you're not careful
Once you grasp the nature of server state in your application, **even more challenges will arise** as you go, for example:
- Caching... (possibly the hardest thing to do in programming)
- Deduping multiple requests for the same data into a single request
- Updating "out of date" data in the background
- Knowing when data is "out of date"
- Reflecting updates to data as quickly as possible
- Performance optimizations like pagination and lazy loading data
- Managing memory and garbage collection of server state
- Memoizing query results with structural sharing
If you're not overwhelmed by that list, then that must mean that you've probably solved all of your server state problems already and deserve an award. However, if you are like a vast majority of people, you either have yet to tackle all or most of these challenges and we're only scratching the surface!
TanStack Query is hands down one of the _best_ libraries for managing server state. It works amazingly well **out-of-the-box, with zero-config, and can be customized** to your liking as your application grows.
TanStack Query allows you to defeat and overcome the tricky challenges and hurdles of _server state_ and control your app data before it starts to control you.
On a more technical note, TanStack Query will likely:
- Help you remove **many** lines of complicated and misunderstood code from your application and replace with just a handful of lines of Angular Query logic.
- Make your application more maintainable and easier to build new features without worrying about wiring up new server state data sources
- Have a direct impact on your end-users by making your application feel faster and more responsive than ever before.
- Potentially help you save on bandwidth and increase memory performance
[//]: # 'Example'
## Enough talk, show me some code already!
In the example below, you can see TanStack Query in its most basic and simple form being used to fetch the GitHub stats for the TanStack Query GitHub project itself:
[Open in StackBlitz](https://stackblitz.com/github/TanStack/query/tree/main/examples/angular/simple)
```angular-ts
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
import { HttpClient } from '@angular/common/http'
import { CommonModule } from '@angular/common'
import { injectQuery } from '@tanstack/angular-query-experimental'
import { lastValueFrom } from 'rxjs'
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'simple-example',
template: `
@if (query.isPending()) {
Loading...
}
@if (query.error()) {
An error has occurred: {{ query.error().message }}
}
@if (query.data(); as data) {
<h1>{{ data.name }}</h1>
<p>{{ data.description }}</p>
<strong>👀 {{ data.subscribers_count }}</strong>
<strong>✨ {{ data.stargazers_count }}</strong>
<strong>🍴 {{ data.forks_count }}</strong>
}
`,
})
export class SimpleExampleComponent {
http = inject(HttpClient)
query = injectQuery(() => ({
queryKey: ['repoData'],
queryFn: () =>
lastValueFrom(
this.http.get<Response>('https://api.github.com/repos/tanstack/query'),
),
}))
}
interface Response {
name: string
description: string
subscribers_count: number
stargazers_count: number
forks_count: number
}
```
## You talked me into it, so what now?
- Learn TanStack Query at your own pace with our amazingly thorough [Walkthrough Guide](./installation.md) and [API Reference](./reference/functions/injectQuery.md)
================================================
FILE: docs/framework/angular/quick-start.md
================================================
---
id: quick-start
title: Quick Start
---
> IMPORTANT: This library is currently in an experimental stage. This means that breaking changes will happen in minor AND patch releases. Upgrade carefully. If you use this in production while in experimental stage, please lock your version to a patch-level version to avoid unexpected breaking changes.
[//]: # 'Example'
If you're looking for a fully functioning example, please have a look at our [basic codesandbox example](./examples/basic)
### Provide the client to your App
```ts
import { provideHttpClient } from '@angular/common/http'
import {
provideTanStackQuery,
QueryClient,
} from '@tanstack/angular-query-experimental'
bootstrapApplication(AppComponent, {
providers: [provideHttpClient(), provideTanStackQuery(new QueryClient())],
})
```
or in a NgModule-based app
```ts
import { provideHttpClient } from '@angular/common/http'
import {
provideTanStackQuery,
QueryClient,
} from '@tanstack/angular-query-experimental'
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule],
providers: [provideTanStackQuery(new QueryClient())],
bootstrap: [AppComponent],
})
export class AppModule {}
```
### Component with query and mutation
```angular-ts
import { Component, Injectable, inject } from '@angular/core'
import { HttpClient } from '@angular/common/http'
import { lastValueFrom } from 'rxjs'
import {
injectMutation,
injectQuery,
QueryClient,
} from '@tanstack/angular-query-experimental'
@Component({
template: `
<div>
<button (click)="onAddTodo()">Add Todo</button>
<ul>
@for (todo of query.data(); track todo.title) {
<li>{{ todo.title }}</li>
}
</ul>
</div>
`,
})
export class TodosComponent {
todoService = inject(TodoService)
queryClient = inject(QueryClient)
query = injectQuery(() => ({
queryKey: ['todos'],
queryFn: () => this.todoService.getTodos(),
}))
mutation = injectMutation(() => ({
mutationFn: (todo: Todo) => this.todoService.addTodo(todo),
onSuccess: () => {
this.queryClient.invalidateQueries({ queryKey: ['todos'] })
},
}))
onAddTodo() {
this.mutation.mutate({
id: Date.now().toString(),
title: 'Do Laundry',
})
}
}
@Injectable({ providedIn: 'root' })
export class TodoService {
private http = inject(HttpClient)
getTodos(): Promise<Todo[]> {
return lastValueFrom(
this.http.get<Todo[]>('https://jsonplaceholder.typicode.com/todos'),
)
}
addTodo(todo: Todo): Promise<Todo> {
return lastValueFrom(
this.http.post<Todo>('https://jsonplaceholder.typicode.com/todos', todo),
)
}
}
interface Todo {
id: string
title: string
}
```
[//]: # 'Example'
================================================
FILE: docs/framework/angular/reference/functions/infiniteQueryOptions.md
================================================
---
id: infiniteQueryOptions
title: infiniteQueryOptions
---
# Function: infiniteQueryOptions()
Allows to share and re-use infinite query options in a type-safe way.
The `queryKey` will be tagged with the type from `queryFn`.
## Param
The infinite query options to tag with the type from `queryFn`.
## Call Signature
```ts
function infiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options): CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam> & object & object;
```
Defined in: [infinite-query-options.ts:88](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L88)
Allows to share and re-use infinite query options in a type-safe way.
The `queryKey` will be tagged with the type from `queryFn`.
### Type Parameters
#### TQueryFnData
`TQueryFnData`
#### TError
`TError` = `Error`
#### TData
`TData` = `InfiniteData`\<`TQueryFnData`, `unknown`\>
#### TQueryKey
`TQueryKey` *extends* readonly `unknown`[] = readonly `unknown`[]
#### TPageParam
`TPageParam` = `unknown`
### Parameters
#### options
[`DefinedInitialDataInfiniteOptions`](../type-aliases/DefinedInitialDataInfiniteOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\>
The infinite query options to tag with the type from `queryFn`.
### Returns
[`CreateInfiniteQueryOptions`](../interfaces/CreateInfiniteQueryOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\> & `object` & `object`
The tagged infinite query options.
## Call Signature
```ts
function infiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options): OmitKeyof<CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, "queryFn"> & object & object;
```
Defined in: [infinite-query-options.ts:119](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L119)
Allows to share and re-use infinite query options in a type-safe way.
The `queryKey` will be tagged with the type from `queryFn`.
### Type Parameters
#### TQueryFnData
`TQueryFnData`
#### TError
`TError` = `Error`
#### TData
`TData` = `InfiniteData`\<`TQueryFnData`, `unknown`\>
#### TQueryKey
`TQueryKey` *extends* readonly `unknown`[] = readonly `unknown`[]
#### TPageParam
`TPageParam` = `unknown`
### Parameters
#### options
[`UnusedSkipTokenInfiniteOptions`](../type-aliases/UnusedSkipTokenInfiniteOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\>
The infinite query options to tag with the type from `queryFn`.
### Returns
`OmitKeyof`\<[`CreateInfiniteQueryOptions`](../interfaces/CreateInfiniteQueryOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\>, `"queryFn"`\> & `object` & `object`
The tagged infinite query options.
## Call Signature
```ts
function infiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options): CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam> & object & object;
```
Defined in: [infinite-query-options.ts:150](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L150)
Allows to share and re-use infinite query options in a type-safe way.
The `queryKey` will be tagged with the type from `queryFn`.
### Type Parameters
#### TQueryFnData
`TQueryFnData`
#### TError
`TError` = `Error`
#### TData
`TData` = `InfiniteData`\<`TQueryFnData`, `unknown`\>
#### TQueryKey
`TQueryKey` *extends* readonly `unknown`[] = readonly `unknown`[]
#### TPageParam
`TPageParam` = `unknown`
### Parameters
#### options
[`UndefinedInitialDataInfiniteOptions`](../type-aliases/UndefinedInitialDataInfiniteOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\>
The infinite query options to tag with the type from `queryFn`.
### Returns
[`CreateInfiniteQueryOptions`](../interfaces/CreateInfiniteQueryOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\> & `object` & `object`
The tagged infinite query options.
================================================
FILE: docs/framework/angular/reference/functions/injectInfiniteQuery.md
================================================
---
id: injectInfiniteQuery
title: injectInfiniteQuery
---
# Function: injectInfiniteQuery()
Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll"
## Param
A function that returns infinite query options.
## Param
Additional configuration.
## Call Signature
```ts
function injectInfiniteQuery<TQueryFnData, TError, TData, TQueryKey, TPageParam>(injectInfiniteQueryFn, options?): DefinedCreateInfiniteQueryResult<TData, TError>;
```
Defined in: [inject-infinite-query.ts:41](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-infinite-query.ts#L41)
Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll"
### Type Parameters
#### TQueryFnData
`TQueryFnData`
#### TError
`TError` = `Error`
#### TData
`TData` = `InfiniteData`\<`TQueryFnData`, `unknown`\>
#### TQueryKey
`TQueryKey` *extends* readonly `unknown`[] = readonly `unknown`[]
#### TPageParam
`TPageParam` = `unknown`
### Parameters
#### injectInfiniteQueryFn
() => [`DefinedInitialDataInfiniteOptions`](../type-aliases/DefinedInitialDataInfiniteOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\>
A function that returns infinite query options.
#### options?
[`InjectInfiniteQueryOptions`](../interfaces/InjectInfiniteQueryOptions.md)
Additional configuration.
### Returns
[`DefinedCreateInfiniteQueryResult`](../type-aliases/DefinedCreateInfiniteQueryResult.md)\<`TData`, `TError`\>
The infinite query result.
## Call Signature
```ts
function injectInfiniteQuery<TQueryFnData, TError, TData, TQueryKey, TPageParam>(injectInfiniteQueryFn, options?): CreateInfiniteQueryResult<TData, TError>;
```
Defined in: [inject-infinite-query.ts:65](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-infinite-query.ts#L65)
Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll"
### Type Parameters
#### TQueryFnData
`TQueryFnData`
#### TError
`TError` = `Error`
#### TData
`TData` = `InfiniteData`\<`TQueryFnData`, `unknown`\>
#### TQueryKey
`TQueryKey` *extends* readonly `unknown`[] = readonly `unknown`[]
#### TPageParam
`TPageParam` = `unknown`
### Parameters
#### injectInfiniteQueryFn
() => [`UndefinedInitialDataInfiniteOptions`](../type-aliases/UndefinedInitialDataInfiniteOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\>
A function that returns infinite query options.
#### options?
[`InjectInfiniteQueryOptions`](../interfaces/InjectInfiniteQueryOptions.md)
Additional configuration.
### Returns
[`CreateInfiniteQueryResult`](../type-aliases/CreateInfiniteQueryResult.md)\<`TData`, `TError`\>
The infinite query result.
## Call Signature
```ts
function injectInfiniteQuery<TQueryFnData, TError, TData, TQueryKey, TPageParam>(injectInfiniteQueryFn, options?): CreateInfiniteQueryResult<TData, TError>;
```
Defined in: [inject-infinite-query.ts:89](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-infinite-query.ts#L89)
Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll"
### Type Parameters
#### TQueryFnData
`TQueryFnData`
#### TError
`TError` = `Error`
#### TData
`TData` = `InfiniteData`\<`TQueryFnData`, `unknown`\>
#### TQueryKey
`TQueryKey` *extends* readonly `unknown`[] = readonly `unknown`[]
#### TPageParam
`TPageParam` = `unknown`
### Parameters
#### injectInfiniteQueryFn
() => [`CreateInfiniteQueryOptions`](../interfaces/CreateInfiniteQueryOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\>
A function that returns infinite query options.
#### options?
[`InjectInfiniteQueryOptions`](../interfaces/InjectInfiniteQueryOptions.md)
Additional configuration.
### Returns
[`CreateInfiniteQueryResult`](../type-aliases/CreateInfiniteQueryResult.md)\<`TData`, `TError`\>
The infinite query result.
================================================
FILE: docs/framework/angular/reference/functions/injectIsFetching.md
================================================
---
id: injectIsFetching
title: injectIsFetching
---
# Function: injectIsFetching()
```ts
function injectIsFetching(filters?, options?): Signal<number>;
```
Defined in: [inject-is-fetching.ts:31](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-is-fetching.ts#L31)
Injects a signal that tracks the number of queries that your application is loading or
fetching in the background.
Can be used for app-wide loading indicators
## Parameters
### filters?
`QueryFilters`\<readonly `unknown`[]\>
The filters to apply to the query.
### options?
[`InjectIsFetchingOptions`](../interfaces/InjectIsFetchingOptions.md)
Additional configuration
## Returns
`Signal`\<`number`\>
signal with number of loading or fetching queries.
================================================
FILE: docs/framework/angular/reference/functions/injectIsMutating.md
================================================
---
id: injectIsMutating
title: injectIsMutating
---
# Function: injectIsMutating()
```ts
function injectIsMutating(filters?, options?): Signal<number>;
```
Defined in: [inject-is-mutating.ts:30](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-is-mutating.ts#L30)
Injects a signal that tracks the number of mutations that your application is fetching.
Can be used for app-wide loading indicators
## Parameters
### filters?
`MutationFilters`\<`unknown`, `Error`, `unknown`, `unknown`\>
The filters to apply to the query.
### options?
[`InjectIsMutatingOptions`](../interfaces/InjectIsMutatingOptions.md)
Additional configuration
## Returns
`Signal`\<`number`\>
A read-only signal with the number of fetching mutations.
================================================
FILE: docs/framework/angular/reference/functions/injectIsRestoring.md
================================================
---
id: injectIsRestoring
title: injectIsRestoring
---
# Function: injectIsRestoring()
```ts
function injectIsRestoring(options?): Signal<boolean>;
```
Defined in: [inject-is-restoring.ts:32](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-is-restoring.ts#L32)
Injects a signal that tracks whether a restore is currently in progress. [injectQuery](injectQuery.md) and friends also check this internally to avoid race conditions between the restore and initializing queries.
## Parameters
### options?
`InjectIsRestoringOptions`
Options for injectIsRestoring.
## Returns
`Signal`\<`boolean`\>
readonly signal with boolean that indicates whether a restore is in progress.
================================================
FILE: docs/framework/angular/reference/functions/injectMutation.md
================================================
---
id: injectMutation
title: injectMutation
---
# Function: injectMutation()
```ts
function injectMutation<TData, TError, TVariables, TOnMutateResult>(injectMutationFn, options?): CreateMutationResult<TData, TError, TVariables, TOnMutateResult>;
```
Defined in: [inject-mutation.ts:45](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-mutation.ts#L45)
Injects a mutation: an imperative function that can be invoked which typically performs server side effects.
Unlike queries, mutations are not run automatically.
## Type Parameters
### TData
`TData` = `unknown`
### TError
`TError` = `Error`
### TVariables
`TVariables` = `void`
### TOnMutateResult
`TOnMutateResult` = `unknown`
## Parameters
### injectMutationFn
() => [`CreateMutationOptions`](../interfaces/CreateMutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>
A function that returns mutation options.
### options?
[`InjectMutationOptions`](../interfaces/InjectMutationOptions.md)
Additional configuration
## Returns
[`CreateMutationResult`](../type-aliases/CreateMutationResult.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>
The mutation.
================================================
FILE: docs/framework/angular/reference/functions/injectMutationState.md
================================================
---
id: injectMutationState
title: injectMutationState
---
# Function: injectMutationState()
```ts
function injectMutationState<TResult>(injectMutationStateFn, options?): Signal<TResult[]>;
```
Defined in: [inject-mutation-state.ts:60](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-mutation-state.ts#L60)
Injects a signal that tracks the state of all mutations.
## Type Parameters
### TResult
`TResult` = `MutationState`\<`unknown`, `Error`, `unknown`, `unknown`\>
## Parameters
### injectMutationStateFn
() => `MutationStateOptions`\<`TResult`\>
A function that returns mutation state options.
### options?
[`InjectMutationStateOptions`](../interfaces/InjectMutationStateOptions.md)
The Angular injector to use.
## Returns
`Signal`\<`TResult`[]\>
The signal that tracks the state of all mutations.
================================================
FILE: docs/framework/angular/reference/functions/injectQuery.md
================================================
---
id: injectQuery
title: injectQuery
---
# Function: injectQuery()
Injects a query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
**Basic example**
```ts
class ServiceOrComponent {
query = injectQuery(() => ({
queryKey: ['repoData'],
queryFn: () =>
this.#http.get<Response>('https://api.github.com/repos/tanstack/query'),
}))
}
```
Similar to `computed` from Angular, the function passed to `injectQuery` will be run in the reactive context.
In the example below, the query will be automatically enabled and executed when the filter signal changes
to a truthy value. When the filter signal changes back to a falsy value, the query will be disabled.
**Reactive example**
```ts
class ServiceOrComponent {
filter = signal('')
todosQuery = injectQuery(() => ({
queryKey: ['todos', this.filter()],
queryFn: () => fetchTodos(this.filter()),
// Signals can be combined with expressions
enabled: !!this.filter(),
}))
}
```
## Param
A function that returns query options.
## Param
Additional configuration
## See
https://tanstack.com/query/latest/docs/framework/angular/guides/queries
## Call Signature
```ts
function injectQuery<TQueryFnData, TError, TData, TQueryKey>(injectQueryFn, options?): DefinedCreateQueryResult<TData, TError>;
```
Defined in: [inject-query.ts:65](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-query.ts#L65)
Injects a query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
**Basic example**
```ts
class ServiceOrComponent {
gitextract_d__inhuu/ ├── .changeset/ │ └── config.json ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── config.yml │ ├── pull_request_template.md │ ├── renovate.json │ └── workflows/ │ ├── autofix.yml │ ├── detect-agent.yml │ ├── labeler.yml │ ├── pr.yml │ └── release.yml ├── .gitignore ├── .npmrc ├── .nvmrc ├── .nx/ │ └── workflows/ │ └── dynamic-changesets.yaml ├── .prettierignore ├── .size-limit.json ├── CONTRIBUTING.md ├── FUNDING.json ├── LICENSE ├── README.md ├── docs/ │ ├── community-resources.md │ ├── config.json │ ├── eslint/ │ │ ├── eslint-plugin-query.md │ │ ├── exhaustive-deps.md │ │ ├── infinite-query-property-order.md │ │ ├── mutation-property-order.md │ │ ├── no-rest-destructuring.md │ │ ├── no-unstable-deps.md │ │ ├── no-void-query-fn.md │ │ └── stable-query-client.md │ ├── framework/ │ │ ├── angular/ │ │ │ ├── angular-httpclient-and-other-data-fetching-clients.md │ │ │ ├── devtools.md │ │ │ ├── guides/ │ │ │ │ ├── background-fetching-indicators.md │ │ │ │ ├── caching.md │ │ │ │ ├── default-query-function.md │ │ │ │ ├── dependent-queries.md │ │ │ │ ├── disabling-queries.md │ │ │ │ ├── does-this-replace-client-state.md │ │ │ │ ├── filters.md │ │ │ │ ├── important-defaults.md │ │ │ │ ├── infinite-queries.md │ │ │ │ ├── initial-query-data.md │ │ │ │ ├── invalidations-from-mutations.md │ │ │ │ ├── mutation-options.md │ │ │ │ ├── mutations.md │ │ │ │ ├── network-mode.md │ │ │ │ ├── optimistic-updates.md │ │ │ │ ├── paginated-queries.md │ │ │ │ ├── parallel-queries.md │ │ │ │ ├── placeholder-query-data.md │ │ │ │ ├── queries.md │ │ │ │ ├── query-cancellation.md │ │ │ │ ├── query-functions.md │ │ │ │ ├── query-invalidation.md │ │ │ │ ├── query-keys.md │ │ │ │ ├── query-options.md │ │ │ │ ├── query-retries.md │ │ │ │ ├── scroll-restoration.md │ │ │ │ ├── testing.md │ │ │ │ └── window-focus-refetching.md │ │ │ ├── installation.md │ │ │ ├── overview.md │ │ │ ├── quick-start.md │ │ │ ├── reference/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── infiniteQueryOptions.md │ │ │ │ │ ├── injectInfiniteQuery.md │ │ │ │ │ ├── injectIsFetching.md │ │ │ │ │ ├── injectIsMutating.md │ │ │ │ │ ├── injectIsRestoring.md │ │ │ │ │ ├── injectMutation.md │ │ │ │ │ ├── injectMutationState.md │ │ │ │ │ ├── injectQuery.md │ │ │ │ │ ├── injectQueryClient.md │ │ │ │ │ ├── mutationOptions.md │ │ │ │ │ ├── provideAngularQuery.md │ │ │ │ │ ├── provideIsRestoring.md │ │ │ │ │ ├── provideQueryClient.md │ │ │ │ │ ├── provideTanStackQuery.md │ │ │ │ │ ├── queryFeature.md │ │ │ │ │ └── queryOptions.md │ │ │ │ ├── index.md │ │ │ │ ├── interfaces/ │ │ │ │ │ ├── BaseMutationNarrowing.md │ │ │ │ │ ├── BaseQueryNarrowing.md │ │ │ │ │ ├── CreateBaseQueryOptions.md │ │ │ │ │ ├── CreateInfiniteQueryOptions.md │ │ │ │ │ ├── CreateMutationOptions.md │ │ │ │ │ ├── CreateQueryOptions.md │ │ │ │ │ ├── InjectInfiniteQueryOptions.md │ │ │ │ │ ├── InjectIsFetchingOptions.md │ │ │ │ │ ├── InjectIsMutatingOptions.md │ │ │ │ │ ├── InjectMutationOptions.md │ │ │ │ │ ├── InjectMutationStateOptions.md │ │ │ │ │ ├── InjectQueryOptions.md │ │ │ │ │ └── QueryFeature.md │ │ │ │ └── type-aliases/ │ │ │ │ ├── CreateBaseMutationResult.md │ │ │ │ ├── CreateBaseQueryResult.md │ │ │ │ ├── CreateInfiniteQueryResult.md │ │ │ │ ├── CreateMutateAsyncFunction.md │ │ │ │ ├── CreateMutateFunction.md │ │ │ │ ├── CreateMutationResult.md │ │ │ │ ├── CreateQueryResult.md │ │ │ │ ├── DefinedCreateInfiniteQueryResult.md │ │ │ │ ├── DefinedCreateQueryResult.md │ │ │ │ ├── DefinedInitialDataInfiniteOptions.md │ │ │ │ ├── DefinedInitialDataOptions.md │ │ │ │ ├── DevtoolsFeature.md │ │ │ │ ├── PersistQueryClientFeature.md │ │ │ │ ├── QueriesOptions.md │ │ │ │ ├── QueriesResults.md │ │ │ │ ├── QueryFeatures.md │ │ │ │ ├── UndefinedInitialDataInfiniteOptions.md │ │ │ │ ├── UndefinedInitialDataOptions.md │ │ │ │ ├── UnusedSkipTokenInfiniteOptions.md │ │ │ │ └── UnusedSkipTokenOptions.md │ │ │ ├── typescript.md │ │ │ └── zoneless.md │ │ ├── preact/ │ │ │ ├── devtools.md │ │ │ ├── graphql.md │ │ │ ├── guides/ │ │ │ │ ├── background-fetching-indicators.md │ │ │ │ ├── caching.md │ │ │ │ ├── default-query-function.md │ │ │ │ ├── dependent-queries.md │ │ │ │ ├── disabling-queries.md │ │ │ │ ├── does-this-replace-client-state.md │ │ │ │ ├── filters.md │ │ │ │ ├── important-defaults.md │ │ │ │ ├── infinite-queries.md │ │ │ │ ├── initial-query-data.md │ │ │ │ ├── invalidations-from-mutations.md │ │ │ │ ├── mutations.md │ │ │ │ ├── network-mode.md │ │ │ │ ├── optimistic-updates.md │ │ │ │ ├── paginated-queries.md │ │ │ │ ├── parallel-queries.md │ │ │ │ ├── placeholder-query-data.md │ │ │ │ ├── prefetching.md │ │ │ │ ├── queries.md │ │ │ │ ├── query-cancellation.md │ │ │ │ ├── query-functions.md │ │ │ │ ├── query-invalidation.md │ │ │ │ ├── query-keys.md │ │ │ │ ├── query-options.md │ │ │ │ ├── query-retries.md │ │ │ │ ├── render-optimizations.md │ │ │ │ ├── request-waterfalls.md │ │ │ │ ├── scroll-restoration.md │ │ │ │ ├── updates-from-mutation-responses.md │ │ │ │ └── window-focus-refetching.md │ │ │ ├── installation.md │ │ │ ├── overview.md │ │ │ ├── plugins/ │ │ │ │ ├── broadcastQueryClient.md │ │ │ │ ├── createAsyncStoragePersister.md │ │ │ │ ├── createPersister.md │ │ │ │ ├── createSyncStoragePersister.md │ │ │ │ └── persistQueryClient.md │ │ │ ├── quick-start.md │ │ │ ├── reference/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── HydrationBoundary.md │ │ │ │ │ ├── QueryClientProvider.md │ │ │ │ │ ├── QueryErrorResetBoundary.md │ │ │ │ │ ├── infiniteQueryOptions.md │ │ │ │ │ ├── mutationOptions.md │ │ │ │ │ ├── queryOptions.md │ │ │ │ │ ├── useInfiniteQuery.md │ │ │ │ │ ├── useIsFetching.md │ │ │ │ │ ├── useIsMutating.md │ │ │ │ │ ├── useIsRestoring.md │ │ │ │ │ ├── useMutation.md │ │ │ │ │ ├── useMutationState.md │ │ │ │ │ ├── usePrefetchInfiniteQuery.md │ │ │ │ │ ├── usePrefetchQuery.md │ │ │ │ │ ├── useQueries.md │ │ │ │ │ ├── useQuery.md │ │ │ │ │ ├── useQueryClient.md │ │ │ │ │ ├── useQueryErrorResetBoundary.md │ │ │ │ │ ├── useSuspenseInfiniteQuery.md │ │ │ │ │ ├── useSuspenseQueries.md │ │ │ │ │ └── useSuspenseQuery.md │ │ │ │ ├── index.md │ │ │ │ ├── interfaces/ │ │ │ │ │ ├── HydrationBoundaryProps.md │ │ │ │ │ ├── QueryErrorResetBoundaryProps.md │ │ │ │ │ ├── UseBaseQueryOptions.md │ │ │ │ │ ├── UseInfiniteQueryOptions.md │ │ │ │ │ ├── UseMutationOptions.md │ │ │ │ │ ├── UsePrefetchQueryOptions.md │ │ │ │ │ ├── UseQueryOptions.md │ │ │ │ │ ├── UseSuspenseInfiniteQueryOptions.md │ │ │ │ │ └── UseSuspenseQueryOptions.md │ │ │ │ ├── type-aliases/ │ │ │ │ │ ├── AnyUseBaseQueryOptions.md │ │ │ │ │ ├── AnyUseInfiniteQueryOptions.md │ │ │ │ │ ├── AnyUseMutationOptions.md │ │ │ │ │ ├── AnyUseQueryOptions.md │ │ │ │ │ ├── AnyUseSuspenseInfiniteQueryOptions.md │ │ │ │ │ ├── AnyUseSuspenseQueryOptions.md │ │ │ │ │ ├── DefinedInitialDataInfiniteOptions.md │ │ │ │ │ ├── DefinedInitialDataOptions.md │ │ │ │ │ ├── DefinedUseInfiniteQueryResult.md │ │ │ │ │ ├── DefinedUseQueryResult.md │ │ │ │ │ ├── QueriesOptions.md │ │ │ │ │ ├── QueriesResults.md │ │ │ │ │ ├── QueryClientProviderProps.md │ │ │ │ │ ├── QueryErrorClearResetFunction.md │ │ │ │ │ ├── QueryErrorIsResetFunction.md │ │ │ │ │ ├── QueryErrorResetBoundaryFunction.md │ │ │ │ │ ├── QueryErrorResetFunction.md │ │ │ │ │ ├── SuspenseQueriesOptions.md │ │ │ │ │ ├── SuspenseQueriesResults.md │ │ │ │ │ ├── UndefinedInitialDataInfiniteOptions.md │ │ │ │ │ ├── UndefinedInitialDataOptions.md │ │ │ │ │ ├── UnusedSkipTokenInfiniteOptions.md │ │ │ │ │ ├── UnusedSkipTokenOptions.md │ │ │ │ │ ├── UseBaseMutationResult.md │ │ │ │ │ ├── UseBaseQueryResult.md │ │ │ │ │ ├── UseInfiniteQueryResult.md │ │ │ │ │ ├── UseMutateAsyncFunction.md │ │ │ │ │ ├── UseMutateFunction.md │ │ │ │ │ ├── UseMutationResult.md │ │ │ │ │ ├── UseQueryResult.md │ │ │ │ │ ├── UseSuspenseInfiniteQueryResult.md │ │ │ │ │ └── UseSuspenseQueryResult.md │ │ │ │ └── variables/ │ │ │ │ ├── IsRestoringProvider.md │ │ │ │ └── QueryClientContext.md │ │ │ └── typescript.md │ │ ├── react/ │ │ │ ├── comparison.md │ │ │ ├── devtools.md │ │ │ ├── graphql.md │ │ │ ├── guides/ │ │ │ │ ├── advanced-ssr.md │ │ │ │ ├── background-fetching-indicators.md │ │ │ │ ├── caching.md │ │ │ │ ├── default-query-function.md │ │ │ │ ├── dependent-queries.md │ │ │ │ ├── disabling-queries.md │ │ │ │ ├── does-this-replace-client-state.md │ │ │ │ ├── filters.md │ │ │ │ ├── important-defaults.md │ │ │ │ ├── infinite-queries.md │ │ │ │ ├── initial-query-data.md │ │ │ │ ├── invalidations-from-mutations.md │ │ │ │ ├── migrating-to-react-query-3.md │ │ │ │ ├── migrating-to-react-query-4.md │ │ │ │ ├── migrating-to-v5.md │ │ │ │ ├── mutations.md │ │ │ │ ├── network-mode.md │ │ │ │ ├── optimistic-updates.md │ │ │ │ ├── paginated-queries.md │ │ │ │ ├── parallel-queries.md │ │ │ │ ├── placeholder-query-data.md │ │ │ │ ├── prefetching.md │ │ │ │ ├── queries.md │ │ │ │ ├── query-cancellation.md │ │ │ │ ├── query-functions.md │ │ │ │ ├── query-invalidation.md │ │ │ │ ├── query-keys.md │ │ │ │ ├── query-options.md │ │ │ │ ├── query-retries.md │ │ │ │ ├── render-optimizations.md │ │ │ │ ├── request-waterfalls.md │ │ │ │ ├── scroll-restoration.md │ │ │ │ ├── ssr.md │ │ │ │ ├── suspense.md │ │ │ │ ├── testing.md │ │ │ │ ├── updates-from-mutation-responses.md │ │ │ │ └── window-focus-refetching.md │ │ │ ├── installation.md │ │ │ ├── overview.md │ │ │ ├── plugins/ │ │ │ │ ├── broadcastQueryClient.md │ │ │ │ ├── createAsyncStoragePersister.md │ │ │ │ ├── createPersister.md │ │ │ │ ├── createSyncStoragePersister.md │ │ │ │ └── persistQueryClient.md │ │ │ ├── quick-start.md │ │ │ ├── react-native.md │ │ │ ├── reference/ │ │ │ │ ├── QueryClientProvider.md │ │ │ │ ├── QueryErrorResetBoundary.md │ │ │ │ ├── hydration.md │ │ │ │ ├── infiniteQueryOptions.md │ │ │ │ ├── mutationOptions.md │ │ │ │ ├── queryOptions.md │ │ │ │ ├── useInfiniteQuery.md │ │ │ │ ├── useIsFetching.md │ │ │ │ ├── useIsMutating.md │ │ │ │ ├── useMutation.md │ │ │ │ ├── useMutationState.md │ │ │ │ ├── usePrefetchInfiniteQuery.md │ │ │ │ ├── usePrefetchQuery.md │ │ │ │ ├── useQueries.md │ │ │ │ ├── useQuery.md │ │ │ │ ├── useQueryClient.md │ │ │ │ ├── useQueryErrorResetBoundary.md │ │ │ │ ├── useSuspenseInfiniteQuery.md │ │ │ │ ├── useSuspenseQueries.md │ │ │ │ └── useSuspenseQuery.md │ │ │ └── typescript.md │ │ ├── solid/ │ │ │ ├── devtools.md │ │ │ ├── guides/ │ │ │ │ ├── advanced-ssr.md │ │ │ │ ├── background-fetching-indicators.md │ │ │ │ ├── caching.md │ │ │ │ ├── default-query-function.md │ │ │ │ ├── dependent-queries.md │ │ │ │ ├── disabling-queries.md │ │ │ │ ├── does-this-replace-client-state.md │ │ │ │ ├── filters.md │ │ │ │ ├── important-defaults.md │ │ │ │ ├── infinite-queries.md │ │ │ │ ├── initial-query-data.md │ │ │ │ ├── invalidations-from-mutations.md │ │ │ │ ├── mutations.md │ │ │ │ ├── network-mode.md │ │ │ │ ├── optimistic-updates.md │ │ │ │ ├── paginated-queries.md │ │ │ │ ├── parallel-queries.md │ │ │ │ ├── placeholder-query-data.md │ │ │ │ ├── prefetching.md │ │ │ │ ├── queries.md │ │ │ │ ├── query-cancellation.md │ │ │ │ ├── query-functions.md │ │ │ │ ├── query-invalidation.md │ │ │ │ ├── query-keys.md │ │ │ │ ├── query-options.md │ │ │ │ ├── query-retries.md │ │ │ │ ├── request-waterfalls.md │ │ │ │ ├── scroll-restoration.md │ │ │ │ ├── ssr.md │ │ │ │ ├── suspense.md │ │ │ │ ├── testing.md │ │ │ │ ├── updates-from-mutation-responses.md │ │ │ │ └── window-focus-refetching.md │ │ │ ├── installation.md │ │ │ ├── overview.md │ │ │ ├── plugins/ │ │ │ │ ├── broadcastQueryClient.md │ │ │ │ └── createPersister.md │ │ │ ├── quick-start.md │ │ │ ├── reference/ │ │ │ │ ├── hydration.md │ │ │ │ ├── infiniteQueryOptions.md │ │ │ │ ├── mutationOptions.md │ │ │ │ ├── queryOptions.md │ │ │ │ ├── useInfiniteQuery.md │ │ │ │ ├── useIsFetching.md │ │ │ │ ├── useIsMutating.md │ │ │ │ ├── useMutation.md │ │ │ │ ├── useMutationState.md │ │ │ │ ├── useQueries.md │ │ │ │ └── useQuery.md │ │ │ └── typescript.md │ │ ├── svelte/ │ │ │ ├── devtools.md │ │ │ ├── installation.md │ │ │ ├── migrate-from-v5-to-v6.md │ │ │ ├── overview.md │ │ │ ├── reference/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── createInfiniteQuery.md │ │ │ │ │ ├── createMutation.md │ │ │ │ │ ├── createQueries.md │ │ │ │ │ ├── createQuery.md │ │ │ │ │ ├── getIsRestoringContext.md │ │ │ │ │ ├── getQueryClientContext.md │ │ │ │ │ ├── infiniteQueryOptions.md │ │ │ │ │ ├── mutationOptions.md │ │ │ │ │ ├── queryOptions.md │ │ │ │ │ ├── setIsRestoringContext.md │ │ │ │ │ ├── setQueryClientContext.md │ │ │ │ │ ├── useHydrate.md │ │ │ │ │ ├── useIsFetching.md │ │ │ │ │ ├── useIsMutating.md │ │ │ │ │ ├── useIsRestoring.md │ │ │ │ │ ├── useMutationState.md │ │ │ │ │ └── useQueryClient.md │ │ │ │ ├── index.md │ │ │ │ ├── type-aliases/ │ │ │ │ │ ├── Accessor.md │ │ │ │ │ ├── CreateBaseMutationResult.md │ │ │ │ │ ├── CreateBaseQueryOptions.md │ │ │ │ │ ├── CreateBaseQueryResult.md │ │ │ │ │ ├── CreateInfiniteQueryOptions.md │ │ │ │ │ ├── CreateInfiniteQueryResult.md │ │ │ │ │ ├── CreateMutateAsyncFunction.md │ │ │ │ │ ├── CreateMutateFunction.md │ │ │ │ │ ├── CreateMutationOptions.md │ │ │ │ │ ├── CreateMutationResult.md │ │ │ │ │ ├── CreateQueryOptions.md │ │ │ │ │ ├── CreateQueryResult.md │ │ │ │ │ ├── DefinedCreateBaseQueryResult.md │ │ │ │ │ ├── DefinedCreateQueryResult.md │ │ │ │ │ ├── DefinedInitialDataOptions.md │ │ │ │ │ ├── HydrationBoundary.md │ │ │ │ │ ├── MutationStateOptions.md │ │ │ │ │ ├── QueriesOptions.md │ │ │ │ │ ├── QueriesResults.md │ │ │ │ │ ├── QueryClientProviderProps.md │ │ │ │ │ └── UndefinedInitialDataOptions.md │ │ │ │ └── variables/ │ │ │ │ └── HydrationBoundary.md │ │ │ └── ssr.md │ │ └── vue/ │ │ ├── devtools.md │ │ ├── graphql.md │ │ ├── guides/ │ │ │ ├── background-fetching-indicators.md │ │ │ ├── caching.md │ │ │ ├── custom-client.md │ │ │ ├── default-query-function.md │ │ │ ├── dependent-queries.md │ │ │ ├── disabling-queries.md │ │ │ ├── does-this-replace-client-state.md │ │ │ ├── filters.md │ │ │ ├── important-defaults.md │ │ │ ├── infinite-queries.md │ │ │ ├── initial-query-data.md │ │ │ ├── invalidations-from-mutations.md │ │ │ ├── migrating-to-v5.md │ │ │ ├── mutations.md │ │ │ ├── network-mode.md │ │ │ ├── optimistic-updates.md │ │ │ ├── paginated-queries.md │ │ │ ├── parallel-queries.md │ │ │ ├── placeholder-query-data.md │ │ │ ├── prefetching.md │ │ │ ├── queries.md │ │ │ ├── query-cancellation.md │ │ │ ├── query-functions.md │ │ │ ├── query-invalidation.md │ │ │ ├── query-keys.md │ │ │ ├── query-options.md │ │ │ ├── query-retries.md │ │ │ ├── scroll-restoration.md │ │ │ ├── ssr.md │ │ │ ├── suspense.md │ │ │ ├── testing.md │ │ │ ├── updates-from-mutation-responses.md │ │ │ └── window-focus-refetching.md │ │ ├── installation.md │ │ ├── overview.md │ │ ├── plugins/ │ │ │ ├── broadcastQueryClient.md │ │ │ └── createPersister.md │ │ ├── quick-start.md │ │ ├── reactivity.md │ │ ├── reference/ │ │ │ ├── hydration.md │ │ │ ├── infiniteQueryOptions.md │ │ │ ├── queryOptions.md │ │ │ ├── useInfiniteQuery.md │ │ │ ├── useIsFetching.md │ │ │ ├── useIsMutating.md │ │ │ ├── useMutation.md │ │ │ ├── useMutationState.md │ │ │ ├── useQueries.md │ │ │ ├── useQuery.md │ │ │ └── useQueryClient.md │ │ └── typescript.md │ └── reference/ │ ├── InfiniteQueryObserver.md │ ├── MutationCache.md │ ├── QueriesObserver.md │ ├── QueryCache.md │ ├── QueryClient.md │ ├── QueryObserver.md │ ├── environmentManager.md │ ├── focusManager.md │ ├── notifyManager.md │ ├── onlineManager.md │ ├── streamedQuery.md │ └── timeoutManager.md ├── eslint.config.js ├── examples/ │ ├── angular/ │ │ ├── auto-refetching/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── auto-refetching.component.html │ │ │ │ │ │ └── auto-refetching.component.ts │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ └── mock-api.interceptor.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── tasks.service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── basic/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app.component.html │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── post.component.html │ │ │ │ │ │ ├── post.component.ts │ │ │ │ │ │ ├── posts.component.html │ │ │ │ │ │ └── posts.component.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── posts-service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── basic-persister/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app.component.html │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── post.component.html │ │ │ │ │ │ ├── post.component.ts │ │ │ │ │ │ ├── posts.component.html │ │ │ │ │ │ └── posts.component.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── posts-service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── devtools-panel/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── app.routes.ts │ │ │ │ │ └── components/ │ │ │ │ │ ├── basic-devtools-panel-example.component.ts │ │ │ │ │ ├── example-query.component.ts │ │ │ │ │ └── lazy-load-devtools-panel-example.component.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── infinite-query-with-max-pages/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── projects-mock.interceptor.ts │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── example.component.html │ │ │ │ │ │ └── example.component.ts │ │ │ │ │ ├── directives/ │ │ │ │ │ │ └── project-style.directive.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── projects.service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── optimistic-updates/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── optimistic-updates.component.ts │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ └── mock-api.interceptor.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── tasks.service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── pagination/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── projects-mock.interceptor.ts │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── example.component.html │ │ │ │ │ │ └── example.component.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── projects.service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── query-options-from-a-service/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app.component.html │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── app.routes.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── post.component.html │ │ │ │ │ │ ├── post.component.ts │ │ │ │ │ │ ├── posts.component.html │ │ │ │ │ │ └── posts.component.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── queries-service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── router/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app.component.html │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── app.routes.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── post.component.html │ │ │ │ │ │ ├── post.component.ts │ │ │ │ │ │ ├── posts.component.html │ │ │ │ │ │ └── posts.component.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── posts-service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ ├── rxjs/ │ │ │ ├── .devcontainer/ │ │ │ │ └── devcontainer.json │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── autocomplete-mock.interceptor.ts │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── example.component.html │ │ │ │ │ │ └── example.component.ts │ │ │ │ │ └── services/ │ │ │ │ │ └── autocomplete-service.ts │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── tsconfig.app.json │ │ │ └── tsconfig.json │ │ └── simple/ │ │ ├── .devcontainer/ │ │ │ └── devcontainer.json │ │ ├── .eslintrc.cjs │ │ ├── README.md │ │ ├── angular.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ └── components/ │ │ │ │ ├── simple-example.component.html │ │ │ │ └── simple-example.component.ts │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ └── tsconfig.json │ ├── preact/ │ │ └── simple/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.tsx │ │ │ └── style.css │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── react/ │ │ ├── algolia/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── eslint.config.js │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── Search.tsx │ │ │ │ ├── SearchResults.tsx │ │ │ │ ├── algolia.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── styles.css │ │ │ │ └── useAlgolia.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── auto-refetching/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── pages/ │ │ │ │ ├── api/ │ │ │ │ │ └── data.ts │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── basic/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── eslint.config.js │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── basic-graphql-request/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── eslint.config.js │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── chat/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── chat.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── message.tsx │ │ │ │ └── style.css │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── default-query-function/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── devtools-panel/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── eslint-legacy/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── infinite-query-with-max-pages/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── pages/ │ │ │ │ ├── api/ │ │ │ │ │ └── projects.ts │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── load-more-infinite-scroll/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── pages/ │ │ │ │ ├── about.tsx │ │ │ │ ├── api/ │ │ │ │ │ └── projects.ts │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── nextjs/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── InfoBox.tsx │ │ │ │ │ ├── Layout.tsx │ │ │ │ │ ├── PostList.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ └── usePosts.ts │ │ │ │ └── pages/ │ │ │ │ ├── _app.tsx │ │ │ │ ├── client-only.tsx │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── nextjs-app-prefetching/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── app/ │ │ │ │ ├── get-query-client.ts │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── pokemon-info.tsx │ │ │ │ ├── pokemon.ts │ │ │ │ └── providers.tsx │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ ├── nextjs-suspense-streaming/ │ │ │ ├── .gitignore │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── app/ │ │ │ │ ├── api/ │ │ │ │ │ └── wait/ │ │ │ │ │ └── route.ts │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── providers.tsx │ │ │ └── tsconfig.json │ │ ├── offline/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ └── mockServiceWorker.js │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── api.ts │ │ │ │ ├── index.tsx │ │ │ │ └── movies.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── optimistic-updates-cache/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── pages/ │ │ │ │ ├── api/ │ │ │ │ │ └── data.ts │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── optimistic-updates-ui/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── pages/ │ │ │ │ ├── api/ │ │ │ │ │ └── data.ts │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── pagination/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── pages/ │ │ │ │ ├── api/ │ │ │ │ │ └── projects.ts │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── playground/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.css │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── prefetching/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── pages/ │ │ │ │ ├── [user]/ │ │ │ │ │ └── [repo].tsx │ │ │ │ ├── _app.tsx │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── react-native/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── App.tsx │ │ │ ├── README.md │ │ │ ├── app.json │ │ │ ├── babel.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Divider.tsx │ │ │ │ │ ├── ErrorMessage.tsx │ │ │ │ │ ├── ListItem.tsx │ │ │ │ │ └── LoadingIndicator.tsx │ │ │ │ ├── data/ │ │ │ │ │ └── movies.json │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useAppState.ts │ │ │ │ │ ├── useOnlineManager.ts │ │ │ │ │ ├── useRefreshByUser.ts │ │ │ │ │ └── useRefreshOnFocus.ts │ │ │ │ ├── lib/ │ │ │ │ │ └── api.ts │ │ │ │ ├── navigation/ │ │ │ │ │ ├── MoviesStack.tsx │ │ │ │ │ └── types.ts │ │ │ │ └── screens/ │ │ │ │ ├── MovieDetailsScreen.tsx │ │ │ │ └── MoviesListScreen.tsx │ │ │ └── tsconfig.json │ │ ├── react-router/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── contacts.ts │ │ │ │ ├── error-page.tsx │ │ │ │ ├── index.css │ │ │ │ ├── index.tsx │ │ │ │ └── routes/ │ │ │ │ ├── contact.tsx │ │ │ │ ├── destroy.tsx │ │ │ │ ├── edit.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── new.tsx │ │ │ │ └── root.tsx │ │ │ └── tsconfig.json │ │ ├── rick-morty/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── Character.tsx │ │ │ │ ├── Characters.tsx │ │ │ │ ├── Episode.tsx │ │ │ │ ├── Episodes.tsx │ │ │ │ ├── Home.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ ├── api.ts │ │ │ │ ├── index.tsx │ │ │ │ └── styles.css │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── shadow-dom/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── eslint.config.js │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── DogList.tsx │ │ │ │ ├── index.css │ │ │ │ ├── main.tsx │ │ │ │ └── vite-env.d.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── simple/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── star-wars/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── Character.tsx │ │ │ │ ├── Characters.tsx │ │ │ │ ├── Film.tsx │ │ │ │ ├── Films.tsx │ │ │ │ ├── Home.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ ├── api.ts │ │ │ │ ├── index.tsx │ │ │ │ └── styles.css │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ └── suspense/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── Button.tsx │ │ │ │ ├── Project.tsx │ │ │ │ ├── Projects.tsx │ │ │ │ └── Spinner.tsx │ │ │ ├── index.tsx │ │ │ └── queries.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── solid/ │ │ ├── astro/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── astro.config.mjs │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Link.tsx │ │ │ │ │ └── SolidApp.tsx │ │ │ │ ├── env.d.ts │ │ │ │ ├── layouts/ │ │ │ │ │ └── MainLayout.astro │ │ │ │ ├── pages/ │ │ │ │ │ └── index.astro │ │ │ │ └── utils/ │ │ │ │ └── index.ts │ │ │ ├── tailwind.config.mjs │ │ │ └── tsconfig.json │ │ ├── basic/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── basic-graphql-request/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── default-query-function/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── offline/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── api.ts │ │ │ │ ├── index.tsx │ │ │ │ └── movies.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── simple/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ └── solid-start-streaming/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app.config.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.css │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── example.tsx │ │ │ │ ├── post-viewer.tsx │ │ │ │ ├── query-boundary.tsx │ │ │ │ └── user-info.tsx │ │ │ ├── entry-client.tsx │ │ │ ├── entry-server.tsx │ │ │ ├── global.d.ts │ │ │ ├── routes/ │ │ │ │ ├── [...404].tsx │ │ │ │ ├── batch-methods.tsx │ │ │ │ ├── deferred.tsx │ │ │ │ ├── hydration.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── mixed.tsx │ │ │ │ ├── prefetch.tsx │ │ │ │ ├── streamed.tsx │ │ │ │ └── with-error.tsx │ │ │ └── utils/ │ │ │ └── api.ts │ │ └── tsconfig.json │ ├── svelte/ │ │ ├── auto-refetching/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.css │ │ │ │ ├── app.d.ts │ │ │ │ ├── app.html │ │ │ │ └── routes/ │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +page.svelte │ │ │ │ └── api/ │ │ │ │ └── data/ │ │ │ │ └── +server.ts │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── basic/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.css │ │ │ │ ├── app.d.ts │ │ │ │ ├── app.html │ │ │ │ ├── lib/ │ │ │ │ │ ├── Post.svelte │ │ │ │ │ ├── Posts.svelte │ │ │ │ │ ├── data.ts │ │ │ │ │ └── types.ts │ │ │ │ └── routes/ │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +page.svelte │ │ │ │ └── [postId]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── load-more-infinite-scroll/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.css │ │ │ │ ├── app.d.ts │ │ │ │ ├── app.html │ │ │ │ ├── lib/ │ │ │ │ │ └── LoadMore.svelte │ │ │ │ └── routes/ │ │ │ │ ├── +layout.svelte │ │ │ │ └── +page.svelte │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── optimistic-updates/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.css │ │ │ │ ├── app.d.ts │ │ │ │ ├── app.html │ │ │ │ └── routes/ │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +page.svelte │ │ │ │ └── api/ │ │ │ │ └── data/ │ │ │ │ └── +server.ts │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── playground/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.css │ │ │ │ ├── app.d.ts │ │ │ │ ├── app.html │ │ │ │ ├── lib/ │ │ │ │ │ └── stores.svelte.ts │ │ │ │ └── routes/ │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +page.svelte │ │ │ │ ├── AddTodo.svelte │ │ │ │ ├── App.svelte │ │ │ │ ├── EditTodo.svelte │ │ │ │ └── TodosList.svelte │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── simple/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── App.svelte │ │ │ │ ├── app.css │ │ │ │ ├── lib/ │ │ │ │ │ └── Simple.svelte │ │ │ │ ├── main.ts │ │ │ │ └── vite-env.d.ts │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── ssr/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.css │ │ │ │ ├── app.d.ts │ │ │ │ ├── app.html │ │ │ │ ├── lib/ │ │ │ │ │ ├── Post.svelte │ │ │ │ │ ├── Posts.svelte │ │ │ │ │ ├── api.ts │ │ │ │ │ └── types.ts │ │ │ │ └── routes/ │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +layout.ts │ │ │ │ ├── +page.svelte │ │ │ │ ├── +page.ts │ │ │ │ └── [postId]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ └── star-wars/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.css │ │ │ ├── app.d.ts │ │ │ ├── app.html │ │ │ ├── lib/ │ │ │ │ └── api.ts │ │ │ └── routes/ │ │ │ ├── +layout.svelte │ │ │ ├── +page.svelte │ │ │ ├── characters/ │ │ │ │ ├── +page.svelte │ │ │ │ └── [characterId]/ │ │ │ │ ├── +page.svelte │ │ │ │ ├── Film.svelte │ │ │ │ └── Homeworld.svelte │ │ │ └── films/ │ │ │ ├── +page.svelte │ │ │ └── [filmId]/ │ │ │ ├── +page.svelte │ │ │ └── Character.svelte │ │ ├── svelte.config.js │ │ ├── tsconfig.json │ │ └── vite.config.ts │ └── vue/ │ ├── 2.6-basic/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── Post.vue │ │ │ ├── Posts.vue │ │ │ ├── main.ts │ │ │ ├── shims-vue.d.ts │ │ │ └── types.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── 2.7-basic/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── Post.vue │ │ │ ├── Posts.vue │ │ │ ├── main.ts │ │ │ ├── shims-vue.d.ts │ │ │ └── types.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── basic/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── Post.vue │ │ │ ├── Posts.vue │ │ │ ├── main.ts │ │ │ ├── shims-vue.d.ts │ │ │ └── types.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── dependent-queries/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── Post.vue │ │ │ ├── Posts.vue │ │ │ ├── main.ts │ │ │ ├── shims-vue.d.ts │ │ │ └── types.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── nuxt3/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app.vue │ │ ├── nuxt.config.ts │ │ ├── package.json │ │ ├── plugins/ │ │ │ └── vue-query.ts │ │ └── tsconfig.json │ ├── persister/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── Post.vue │ │ │ ├── Posts.vue │ │ │ ├── main.ts │ │ │ ├── shims-vue.d.ts │ │ │ └── types.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ └── simple/ │ ├── .gitignore │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── main.ts │ │ ├── shims-vue.d.ts │ │ └── types.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── integrations/ │ ├── angular-cli-20/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── README.md │ │ ├── angular.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app.config.ts │ │ │ │ └── app.ts │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ └── tsconfig.json │ ├── react-next-14/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── client-component.tsx │ │ │ ├── layout.tsx │ │ │ ├── page.tsx │ │ │ └── providers.tsx │ │ ├── next.config.js │ │ ├── package.json │ │ └── tsconfig.json │ ├── react-next-15/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── _action.ts │ │ │ ├── client-component.tsx │ │ │ ├── count/ │ │ │ │ └── route.ts │ │ │ ├── layout.tsx │ │ │ ├── make-query-client.ts │ │ │ ├── page.tsx │ │ │ └── providers.tsx │ │ ├── next.config.js │ │ ├── package.json │ │ └── tsconfig.json │ ├── react-next-16/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── _action.ts │ │ │ ├── client-component.tsx │ │ │ ├── count/ │ │ │ │ └── route.ts │ │ │ ├── layout.tsx │ │ │ ├── make-query-client.ts │ │ │ ├── page.tsx │ │ │ └── providers.tsx │ │ ├── next.config.js │ │ ├── package.json │ │ └── tsconfig.json │ ├── react-vite/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.jsx │ │ │ └── main.jsx │ │ ├── tsconfig.json │ │ └── vite.config.js │ ├── react-webpack-4/ │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.js │ │ │ └── index.js │ │ └── webpack.config.js │ ├── react-webpack-5/ │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.js │ │ │ └── index.js │ │ └── webpack.config.js │ ├── solid-vite/ │ │ ├── .gitignore │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.jsx │ │ │ └── index.jsx │ │ └── vite.config.js │ ├── svelte-vite/ │ │ ├── .gitignore │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.svelte │ │ │ ├── Simple.svelte │ │ │ ├── main.js │ │ │ └── vite-env.d.ts │ │ ├── svelte.config.js │ │ └── vite.config.js │ └── vue-vite/ │ ├── .gitignore │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── main.ts │ │ └── vite-env.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── knip.json ├── labeler-config.yml ├── media/ │ └── logo.sketch ├── nx.json ├── package.json ├── packages/ │ ├── angular-query-experimental/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── prepack.js │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── infinite-query-options.test-d.ts │ │ │ │ ├── infinite-query-options.test.ts │ │ │ │ ├── inject-devtools-panel.test.ts │ │ │ │ ├── inject-infinite-query.test-d.ts │ │ │ │ ├── inject-infinite-query.test.ts │ │ │ │ ├── inject-is-fetching.test.ts │ │ │ │ ├── inject-is-mutating.test.ts │ │ │ │ ├── inject-is-restoring.test.ts │ │ │ │ ├── inject-mutation-state.test-d.ts │ │ │ │ ├── inject-mutation-state.test.ts │ │ │ │ ├── inject-mutation.test-d.ts │ │ │ │ ├── inject-mutation.test.ts │ │ │ │ ├── inject-queries.test-d.ts │ │ │ │ ├── inject-queries.test.ts │ │ │ │ ├── inject-query.test-d.ts │ │ │ │ ├── inject-query.test.ts │ │ │ │ ├── mutation-options.test-d.ts │ │ │ │ ├── mutation-options.test.ts │ │ │ │ ├── pending-tasks.test.ts │ │ │ │ ├── provide-query-client.test.ts │ │ │ │ ├── provide-tanstack-query.test.ts │ │ │ │ ├── query-options.test-d.ts │ │ │ │ ├── query-options.test.ts │ │ │ │ ├── signal-proxy.test.ts │ │ │ │ ├── test-utils.ts │ │ │ │ └── with-devtools.test.ts │ │ │ ├── create-base-query.ts │ │ │ ├── devtools/ │ │ │ │ ├── index.ts │ │ │ │ ├── production/ │ │ │ │ │ └── index.ts │ │ │ │ ├── stub.ts │ │ │ │ ├── types.ts │ │ │ │ └── with-devtools.ts │ │ │ ├── devtools-panel/ │ │ │ │ ├── index.ts │ │ │ │ ├── inject-devtools-panel.ts │ │ │ │ ├── production/ │ │ │ │ │ └── index.ts │ │ │ │ ├── stub.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── infinite-query-options.ts │ │ │ ├── inject-infinite-query.ts │ │ │ ├── inject-is-fetching.ts │ │ │ ├── inject-is-mutating.ts │ │ │ ├── inject-is-restoring.ts │ │ │ ├── inject-mutation-state.ts │ │ │ ├── inject-mutation.ts │ │ │ ├── inject-queries-experimental/ │ │ │ │ └── index.ts │ │ │ ├── inject-queries.ts │ │ │ ├── inject-query-client.ts │ │ │ ├── inject-query.ts │ │ │ ├── mutation-options.ts │ │ │ ├── pending-tasks-compat.ts │ │ │ ├── providers.ts │ │ │ ├── query-options.ts │ │ │ ├── signal-proxy.ts │ │ │ └── types.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ └── vite.config.ts │ ├── angular-query-persist-client/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ └── with-persist-query-client.test.ts │ │ │ ├── index.ts │ │ │ └── with-persist-query-client.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── eslint-plugin-query/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── root.tsup.config.js │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── exhaustive-deps.test.ts │ │ │ │ ├── infinite-query-property-order.rule.test.ts │ │ │ │ ├── mutation-property-order.rule.test.ts │ │ │ │ ├── no-rest-destructuring.test.ts │ │ │ │ ├── no-unstable-deps.test.ts │ │ │ │ ├── no-void-query-fn.test.ts │ │ │ │ ├── sort-data-by-order.utils.test.ts │ │ │ │ ├── stable-query-client.test.ts │ │ │ │ ├── test-utils.test.ts │ │ │ │ ├── test-utils.ts │ │ │ │ └── ts-fixture/ │ │ │ │ ├── file.ts │ │ │ │ └── tsconfig.json │ │ │ ├── index.ts │ │ │ ├── rules/ │ │ │ │ ├── exhaustive-deps/ │ │ │ │ │ ├── exhaustive-deps.rule.ts │ │ │ │ │ └── exhaustive-deps.utils.ts │ │ │ │ ├── infinite-query-property-order/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── infinite-query-property-order.rule.ts │ │ │ │ ├── mutation-property-order/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── mutation-property-order.rule.ts │ │ │ │ ├── no-rest-destructuring/ │ │ │ │ │ ├── no-rest-destructuring.rule.ts │ │ │ │ │ └── no-rest-destructuring.utils.ts │ │ │ │ ├── no-unstable-deps/ │ │ │ │ │ └── no-unstable-deps.rule.ts │ │ │ │ ├── no-void-query-fn/ │ │ │ │ │ └── no-void-query-fn.rule.ts │ │ │ │ └── stable-query-client/ │ │ │ │ └── stable-query-client.rule.ts │ │ │ ├── rules.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── ast-utils.ts │ │ │ ├── create-property-order-rule.ts │ │ │ ├── detect-react-query-imports.ts │ │ │ ├── get-docs-url.ts │ │ │ ├── sort-data-by-order.ts │ │ │ └── unique-by.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── preact-query/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── HydrationBoundary.tsx │ │ │ ├── IsRestoringProvider.ts │ │ │ ├── QueryClientProvider.tsx │ │ │ ├── QueryErrorResetBoundary.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── ErrorBoundary/ │ │ │ │ │ ├── ErrorBoundary.ts │ │ │ │ │ ├── ErrorBoundaryContext.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── HydrationBoundary.test.tsx │ │ │ │ ├── QueryClientProvider.test.tsx │ │ │ │ ├── QueryResetErrorBoundary.test.tsx │ │ │ │ ├── fine-grained-persister.test.tsx │ │ │ │ ├── infiniteQueryOptions.test-d.tsx │ │ │ │ ├── infiniteQueryOptions.test.tsx │ │ │ │ ├── mutationOptions.test-d.tsx │ │ │ │ ├── mutationOptions.test.tsx │ │ │ │ ├── queryOptions.test-d.tsx │ │ │ │ ├── queryOptions.test.tsx │ │ │ │ ├── ssr-hydration.test.tsx │ │ │ │ ├── ssr.test.tsx │ │ │ │ ├── suspense.test.tsx │ │ │ │ ├── useInfiniteQuery.test-d.tsx │ │ │ │ ├── useInfiniteQuery.test.tsx │ │ │ │ ├── useIsFetching.test.tsx │ │ │ │ ├── useMutation.test.tsx │ │ │ │ ├── useMutationState.test-d.tsx │ │ │ │ ├── useMutationState.test.tsx │ │ │ │ ├── usePrefetchInfiniteQuery.test-d.tsx │ │ │ │ ├── usePrefetchInfiniteQuery.test.tsx │ │ │ │ ├── usePrefetchQuery.test-d.tsx │ │ │ │ ├── usePrefetchQuery.test.tsx │ │ │ │ ├── useQueries.test-d.tsx │ │ │ │ ├── useQueries.test.tsx │ │ │ │ ├── useQuery.test-d.tsx │ │ │ │ ├── useQuery.test.tsx │ │ │ │ ├── useSuspenseInfiniteQuery.test-d.tsx │ │ │ │ ├── useSuspenseInfiniteQuery.test.tsx │ │ │ │ ├── useSuspenseQueries.test-d.tsx │ │ │ │ ├── useSuspenseQueries.test.tsx │ │ │ │ ├── useSuspenseQuery.test-d.tsx │ │ │ │ ├── useSuspenseQuery.test.tsx │ │ │ │ └── utils.tsx │ │ │ ├── errorBoundaryUtils.ts │ │ │ ├── index.ts │ │ │ ├── infiniteQueryOptions.ts │ │ │ ├── mutationOptions.ts │ │ │ ├── queryOptions.ts │ │ │ ├── suspense.ts │ │ │ ├── types.ts │ │ │ ├── useBaseQuery.ts │ │ │ ├── useInfiniteQuery.ts │ │ │ ├── useIsFetching.ts │ │ │ ├── useMutation.ts │ │ │ ├── useMutationState.ts │ │ │ ├── usePrefetchInfiniteQuery.tsx │ │ │ ├── usePrefetchQuery.tsx │ │ │ ├── useQueries.ts │ │ │ ├── useQuery.ts │ │ │ ├── useSuspenseInfiniteQuery.ts │ │ │ ├── useSuspenseQueries.ts │ │ │ ├── useSuspenseQuery.ts │ │ │ └── utils.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── preact-query-devtools/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── root.eslint.config.js │ │ ├── root.tsup.config.js │ │ ├── src/ │ │ │ ├── PreactQueryDevtools.tsx │ │ │ ├── PreactQueryDevtoolsPanel.tsx │ │ │ ├── index.ts │ │ │ └── production.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── preact-query-persist-client/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PersistQueryClientProvider.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── PersistQueryClientProvider.test.tsx │ │ │ │ ├── testPersistProvider.tsx │ │ │ │ └── use-queries-with-persist.test.tsx │ │ │ └── index.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── query-async-storage-persister/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ └── asyncThrottle.test.ts │ │ │ ├── asyncThrottle.ts │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── query-broadcast-client-experimental/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ └── index.test.ts │ │ │ └── index.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── query-codemods/ │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── utils/ │ │ │ │ ├── index.cjs │ │ │ │ └── transformers/ │ │ │ │ ├── query-cache-transformer.cjs │ │ │ │ ├── query-client-transformer.cjs │ │ │ │ └── use-query-like-transformer.cjs │ │ │ ├── v4/ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ ├── default-import.input.tsx │ │ │ │ │ ├── default-import.output.tsx │ │ │ │ │ ├── named-import.input.tsx │ │ │ │ │ ├── named-import.output.tsx │ │ │ │ │ ├── namespaced-import.input.tsx │ │ │ │ │ ├── namespaced-import.output.tsx │ │ │ │ │ ├── parameter-is-identifier.input.tsx │ │ │ │ │ ├── parameter-is-identifier.output.tsx │ │ │ │ │ ├── parameter-is-object-expression.input.tsx │ │ │ │ │ ├── parameter-is-object-expression.output.tsx │ │ │ │ │ ├── replace-import-specifier.input.tsx │ │ │ │ │ ├── replace-import-specifier.output.tsx │ │ │ │ │ ├── type-arguments.input.tsx │ │ │ │ │ └── type-arguments.output.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── key-transformation.test.cjs │ │ │ │ │ └── replace-import-specifier.test.cjs │ │ │ │ ├── key-transformation.cjs │ │ │ │ ├── replace-import-specifier.cjs │ │ │ │ └── utils/ │ │ │ │ └── replacers/ │ │ │ │ └── key-replacer.cjs │ │ │ └── v5/ │ │ │ ├── is-loading/ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ ├── default-import.input.tsx │ │ │ │ │ ├── default-import.output.tsx │ │ │ │ │ ├── named-import.input.tsx │ │ │ │ │ └── named-import.output.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── is-loading.test.cjs │ │ │ │ └── is-loading.cjs │ │ │ ├── keep-previous-data/ │ │ │ │ ├── README.md │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ ├── default.input.tsx │ │ │ │ │ ├── default.output.tsx │ │ │ │ │ ├── named.input.tsx │ │ │ │ │ └── named.output.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── keep-previous-data.test.cjs │ │ │ │ ├── keep-previous-data.cjs │ │ │ │ └── utils/ │ │ │ │ └── already-has-placeholder-data-property.cjs │ │ │ ├── remove-overloads/ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ ├── bug-reports.input.tsx │ │ │ │ │ ├── bug-reports.output.tsx │ │ │ │ │ ├── default-import.input.tsx │ │ │ │ │ └── default-import.output.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── remove-overloads.test.cjs │ │ │ │ ├── remove-overloads.cjs │ │ │ │ ├── transformers/ │ │ │ │ │ ├── filter-aware-usage-transformer.cjs │ │ │ │ │ └── query-fn-aware-usage-transformer.cjs │ │ │ │ └── utils/ │ │ │ │ ├── index.cjs │ │ │ │ └── unknown-usage-error.cjs │ │ │ ├── rename-hydrate/ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ ├── default-import.input.tsx │ │ │ │ │ ├── default-import.output.tsx │ │ │ │ │ ├── named-import.input.tsx │ │ │ │ │ └── named-import.output.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── rename-hydrate.test.cjs │ │ │ │ └── rename-hydrate.cjs │ │ │ └── rename-properties/ │ │ │ ├── __testfixtures__/ │ │ │ │ ├── rename-cache-time.input.tsx │ │ │ │ ├── rename-cache-time.output.tsx │ │ │ │ ├── rename-use-error-boundary.input.tsx │ │ │ │ └── rename-use-error-boundary.output.tsx │ │ │ ├── __tests__/ │ │ │ │ └── rename-properties.test.cjs │ │ │ └── rename-properties.cjs │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── query-core/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── OmitKeyof.test-d.ts │ │ │ │ ├── environmentManager.test.tsx │ │ │ │ ├── focusManager.test.tsx │ │ │ │ ├── hydration.test.tsx │ │ │ │ ├── infiniteQueryBehavior.test.tsx │ │ │ │ ├── infiniteQueryObserver.test-d.tsx │ │ │ │ ├── infiniteQueryObserver.test.tsx │ │ │ │ ├── mutation.test-d.tsx │ │ │ │ ├── mutationCache.test.tsx │ │ │ │ ├── mutationObserver.test.tsx │ │ │ │ ├── mutations.test.tsx │ │ │ │ ├── notifyManager.test.tsx │ │ │ │ ├── onlineManager.test.tsx │ │ │ │ ├── queriesObserver.test.tsx │ │ │ │ ├── query.test.tsx │ │ │ │ ├── queryCache.test.tsx │ │ │ │ ├── queryClient.test-d.tsx │ │ │ │ ├── queryClient.test.tsx │ │ │ │ ├── queryObserver.test-d.tsx │ │ │ │ ├── queryObserver.test.tsx │ │ │ │ ├── streamedQuery.test.tsx │ │ │ │ ├── timeoutManager.test.tsx │ │ │ │ ├── utils.test-d.tsx │ │ │ │ ├── utils.test.tsx │ │ │ │ └── utils.ts │ │ │ ├── environmentManager.ts │ │ │ ├── focusManager.ts │ │ │ ├── hydration.ts │ │ │ ├── index.ts │ │ │ ├── infiniteQueryBehavior.ts │ │ │ ├── infiniteQueryObserver.ts │ │ │ ├── mutation.ts │ │ │ ├── mutationCache.ts │ │ │ ├── mutationObserver.ts │ │ │ ├── notifyManager.ts │ │ │ ├── onlineManager.ts │ │ │ ├── queriesObserver.ts │ │ │ ├── query.ts │ │ │ ├── queryCache.ts │ │ │ ├── queryClient.ts │ │ │ ├── queryObserver.ts │ │ │ ├── removable.ts │ │ │ ├── retryer.ts │ │ │ ├── streamedQuery.ts │ │ │ ├── subscribable.ts │ │ │ ├── thenable.ts │ │ │ ├── timeoutManager.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── query-devtools/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Devtools.tsx │ │ │ ├── DevtoolsComponent.tsx │ │ │ ├── DevtoolsPanelComponent.tsx │ │ │ ├── Explorer.tsx │ │ │ ├── TanstackQueryDevtools.tsx │ │ │ ├── TanstackQueryDevtoolsPanel.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── devtools.test.tsx │ │ │ │ └── utils.test.ts │ │ │ ├── constants.ts │ │ │ ├── contexts/ │ │ │ │ ├── PiPContext.tsx │ │ │ │ ├── QueryDevtoolsContext.ts │ │ │ │ ├── ThemeContext.ts │ │ │ │ └── index.ts │ │ │ ├── icons/ │ │ │ │ └── index.tsx │ │ │ ├── index.ts │ │ │ ├── theme.ts │ │ │ └── utils.tsx │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── query-persist-client-core/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── createPersister.test.ts │ │ │ │ ├── persist.test.ts │ │ │ │ └── utils.ts │ │ │ ├── createPersister.ts │ │ │ ├── index.ts │ │ │ ├── persist.ts │ │ │ └── retryStrategies.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── query-sync-storage-persister/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ └── storageIsFull.test.ts │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── query-test-utils/ │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __test__/ │ │ │ │ ├── queryKey.test.ts │ │ │ │ └── sleep.test.ts │ │ │ ├── index.ts │ │ │ ├── mockVisibilityState.ts │ │ │ ├── queryKey.ts │ │ │ └── sleep.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── react-query/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── HydrationBoundary.tsx │ │ │ ├── IsRestoringProvider.ts │ │ │ ├── QueryClientProvider.tsx │ │ │ ├── QueryErrorResetBoundary.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── HydrationBoundary.test.tsx │ │ │ │ ├── QueryClientProvider.test.tsx │ │ │ │ ├── QueryResetErrorBoundary.test.tsx │ │ │ │ ├── fine-grained-persister.test.tsx │ │ │ │ ├── infiniteQueryOptions.test-d.tsx │ │ │ │ ├── infiniteQueryOptions.test.tsx │ │ │ │ ├── mutationOptions.test-d.tsx │ │ │ │ ├── mutationOptions.test.tsx │ │ │ │ ├── queryOptions.test-d.tsx │ │ │ │ ├── queryOptions.test.tsx │ │ │ │ ├── ssr-hydration.test.tsx │ │ │ │ ├── ssr.test.tsx │ │ │ │ ├── suspense.test.tsx │ │ │ │ ├── useInfiniteQuery.test-d.tsx │ │ │ │ ├── useInfiniteQuery.test.tsx │ │ │ │ ├── useIsFetching.test.tsx │ │ │ │ ├── useMutation.test.tsx │ │ │ │ ├── useMutationState.test-d.tsx │ │ │ │ ├── useMutationState.test.tsx │ │ │ │ ├── usePrefetchInfiniteQuery.test-d.tsx │ │ │ │ ├── usePrefetchInfiniteQuery.test.tsx │ │ │ │ ├── usePrefetchQuery.test-d.tsx │ │ │ │ ├── usePrefetchQuery.test.tsx │ │ │ │ ├── useQueries.test-d.tsx │ │ │ │ ├── useQueries.test.tsx │ │ │ │ ├── useQuery.promise.test.tsx │ │ │ │ ├── useQuery.test-d.tsx │ │ │ │ ├── useQuery.test.tsx │ │ │ │ ├── useSuspenseInfiniteQuery.test-d.tsx │ │ │ │ ├── useSuspenseInfiniteQuery.test.tsx │ │ │ │ ├── useSuspenseQueries.test-d.tsx │ │ │ │ ├── useSuspenseQueries.test.tsx │ │ │ │ ├── useSuspenseQuery.test-d.tsx │ │ │ │ ├── useSuspenseQuery.test.tsx │ │ │ │ └── utils.tsx │ │ │ ├── errorBoundaryUtils.ts │ │ │ ├── index.ts │ │ │ ├── infiniteQueryOptions.ts │ │ │ ├── mutationOptions.ts │ │ │ ├── queryOptions.ts │ │ │ ├── suspense.ts │ │ │ ├── types.ts │ │ │ ├── useBaseQuery.ts │ │ │ ├── useInfiniteQuery.ts │ │ │ ├── useIsFetching.ts │ │ │ ├── useMutation.ts │ │ │ ├── useMutationState.ts │ │ │ ├── usePrefetchInfiniteQuery.tsx │ │ │ ├── usePrefetchQuery.tsx │ │ │ ├── useQueries.ts │ │ │ ├── useQuery.ts │ │ │ ├── useSuspenseInfiniteQuery.ts │ │ │ ├── useSuspenseQueries.ts │ │ │ └── useSuspenseQuery.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── react-query-devtools/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ReactQueryDevtools.tsx │ │ │ ├── ReactQueryDevtoolsPanel.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── devtools.test.tsx │ │ │ │ └── not-development.test.tsx │ │ │ ├── index.ts │ │ │ └── production.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── react-query-next-experimental/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── HydrationStreamProvider.tsx │ │ │ ├── ReactQueryStreamedHydration.tsx │ │ │ ├── htmlescape.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── react-query-persist-client/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PersistQueryClientProvider.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── PersistQueryClientProvider.test.tsx │ │ │ │ └── use-queries-with-persist.test.tsx │ │ │ └── index.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── solid-query/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── QueryClient.ts │ │ │ ├── QueryClientProvider.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── QueryClientProvider.test.tsx │ │ │ │ ├── createQueries.test-d.tsx │ │ │ │ ├── mutationOptions.test-d.tsx │ │ │ │ ├── mutationOptions.test.tsx │ │ │ │ ├── queryOptions.test-d.tsx │ │ │ │ ├── queryOptions.test.tsx │ │ │ │ ├── suspense.test.tsx │ │ │ │ ├── transition.test.tsx │ │ │ │ ├── useInfiniteQuery.test.tsx │ │ │ │ ├── useIsFetching.test.tsx │ │ │ │ ├── useIsMutating.test.tsx │ │ │ │ ├── useMutation.test.tsx │ │ │ │ ├── useMutationState.test-d.tsx │ │ │ │ ├── useMutationState.test.tsx │ │ │ │ ├── useQueries.test.tsx │ │ │ │ ├── useQuery.test-d.tsx │ │ │ │ ├── useQuery.test.tsx │ │ │ │ ├── useQueryOptions.test-d.tsx │ │ │ │ └── utils.tsx │ │ │ ├── index.ts │ │ │ ├── infiniteQueryOptions.ts │ │ │ ├── isRestoring.ts │ │ │ ├── mutationOptions.ts │ │ │ ├── queryOptions.ts │ │ │ ├── types.ts │ │ │ ├── useBaseQuery.ts │ │ │ ├── useInfiniteQuery.ts │ │ │ ├── useIsFetching.ts │ │ │ ├── useIsMutating.ts │ │ │ ├── useMutation.ts │ │ │ ├── useMutationState.ts │ │ │ ├── useQueries.ts │ │ │ └── useQuery.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── solid-query-devtools/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── devtools.test.tsx │ │ │ │ └── devtoolsPanel.test.tsx │ │ │ ├── clientOnly.tsx │ │ │ ├── devtools.tsx │ │ │ ├── devtoolsPanel.tsx │ │ │ └── index.tsx │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── solid-query-persist-client/ │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PersistQueryClientProvider.tsx │ │ │ ├── __tests__/ │ │ │ │ └── PersistQueryClientProvider.test.tsx │ │ │ └── index.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── svelte-query/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── HydrationBoundary.svelte │ │ │ ├── QueryClientProvider.svelte │ │ │ ├── containers.svelte.ts │ │ │ ├── context.ts │ │ │ ├── createBaseQuery.svelte.ts │ │ │ ├── createInfiniteQuery.ts │ │ │ ├── createMutation.svelte.ts │ │ │ ├── createQueries.svelte.ts │ │ │ ├── createQuery.ts │ │ │ ├── index.ts │ │ │ ├── infiniteQueryOptions.ts │ │ │ ├── mutationOptions.ts │ │ │ ├── queryOptions.ts │ │ │ ├── types.ts │ │ │ ├── useHydrate.ts │ │ │ ├── useIsFetching.svelte.ts │ │ │ ├── useIsMutating.svelte.ts │ │ │ ├── useIsRestoring.ts │ │ │ ├── useMutationState.svelte.ts │ │ │ ├── useQueryClient.ts │ │ │ └── utils.svelte.ts │ │ ├── svelte.config.js │ │ ├── tests/ │ │ │ ├── HydrationBoundary/ │ │ │ │ ├── BaseExample.svelte │ │ │ │ └── HydrationBoundary.svelte.test.ts │ │ │ ├── ProviderWrapper.svelte │ │ │ ├── QueryClientProvider/ │ │ │ │ ├── ChildComponent.svelte │ │ │ │ ├── ParentComponent.svelte │ │ │ │ └── QueryClientProvider.svelte.test.ts │ │ │ ├── containers.svelte.test.ts │ │ │ ├── context/ │ │ │ │ ├── BaseExample.svelte │ │ │ │ └── context.svelte.test.ts │ │ │ ├── createInfiniteQuery/ │ │ │ │ ├── BaseExample.svelte │ │ │ │ ├── ChangeClient.svelte │ │ │ │ ├── SelectExample.svelte │ │ │ │ └── createInfiniteQuery.svelte.test.ts │ │ │ ├── createMutation/ │ │ │ │ ├── FailureExample.svelte │ │ │ │ ├── OnSuccessExample.svelte │ │ │ │ ├── ResetExample.svelte │ │ │ │ └── createMutation.svelte.test.ts │ │ │ ├── createQueries.svelte.test.ts │ │ │ ├── createQueries.test-d.ts │ │ │ ├── createQuery.svelte.test.ts │ │ │ ├── createQuery.test-d.ts │ │ │ ├── infiniteQueryOptions.svelte.test.ts │ │ │ ├── infiniteQueryOptions.test-d.ts │ │ │ ├── mutationOptions/ │ │ │ │ ├── BaseExample.svelte │ │ │ │ ├── MultiExample.svelte │ │ │ │ ├── mutationOptions.svelte.test.ts │ │ │ │ └── mutationOptions.test-d.ts │ │ │ ├── queryOptions.svelte.test.ts │ │ │ ├── queryOptions.test-d.ts │ │ │ ├── test-setup.ts │ │ │ ├── useIsFetching/ │ │ │ │ ├── BaseExample.svelte │ │ │ │ ├── FetchStatus.svelte │ │ │ │ ├── Query.svelte │ │ │ │ └── useIsFetching.svelte.test.ts │ │ │ ├── useIsMutating/ │ │ │ │ ├── BaseExample.svelte │ │ │ │ ├── MutatingStatus.svelte │ │ │ │ ├── Query.svelte │ │ │ │ └── useIsMutating.svelte.test.ts │ │ │ ├── useMutationState/ │ │ │ │ ├── BaseExample.svelte │ │ │ │ ├── SelectExample.svelte │ │ │ │ └── useMutationState.svelte.test.ts │ │ │ └── utils.svelte.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── svelte-query-devtools/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Devtools.svelte │ │ │ └── index.ts │ │ ├── svelte.config.js │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── svelte-query-persist-client/ │ │ ├── .attw.json │ │ ├── CHANGELOG.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PersistQueryClientProvider.svelte │ │ │ ├── index.ts │ │ │ └── utils.svelte.ts │ │ ├── svelte.config.js │ │ ├── tests/ │ │ │ ├── AwaitOnSuccess/ │ │ │ │ ├── AwaitOnSuccess.svelte │ │ │ │ └── Provider.svelte │ │ │ ├── FreshData/ │ │ │ │ ├── FreshData.svelte │ │ │ │ └── Provider.svelte │ │ │ ├── InitialData/ │ │ │ │ ├── InitialData.svelte │ │ │ │ └── Provider.svelte │ │ │ ├── OnSuccess/ │ │ │ │ ├── OnSuccess.svelte │ │ │ │ └── Provider.svelte │ │ │ ├── PersistQueryClientProvider.svelte.test.ts │ │ │ ├── RemoveCache/ │ │ │ │ ├── Provider.svelte │ │ │ │ └── RemoveCache.svelte │ │ │ ├── RestoreCache/ │ │ │ │ ├── Provider.svelte │ │ │ │ └── RestoreCache.svelte │ │ │ ├── UseQueries/ │ │ │ │ ├── Provider.svelte │ │ │ │ └── UseQueries.svelte │ │ │ ├── test-setup.ts │ │ │ └── utils.svelte.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── vue-query/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __mocks__/ │ │ │ │ ├── useBaseQuery.ts │ │ │ │ └── useQueryClient.ts │ │ │ ├── __tests__/ │ │ │ │ ├── infiniteQueryOptions.test-d.ts │ │ │ │ ├── mutationCache.test.ts │ │ │ │ ├── queryCache.test.ts │ │ │ │ ├── queryClient.test-d.ts │ │ │ │ ├── queryClient.test.ts │ │ │ │ ├── queryOptions.test-d.ts │ │ │ │ ├── queryOptions.test.ts │ │ │ │ ├── useInfiniteQuery.test-d.tsx │ │ │ │ ├── useInfiniteQuery.test.ts │ │ │ │ ├── useIsFetching.test.ts │ │ │ │ ├── useIsMutating.test.ts │ │ │ │ ├── useMutation.test-d.tsx │ │ │ │ ├── useMutation.test.ts │ │ │ │ ├── useMutationState.test.ts │ │ │ │ ├── useQueries.test-d.ts │ │ │ │ ├── useQueries.test.ts │ │ │ │ ├── useQuery.test-d.ts │ │ │ │ ├── useQuery.test.ts │ │ │ │ ├── useQueryClient.test.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── vueQueryPlugin.test.ts │ │ │ ├── devtools/ │ │ │ │ ├── devtools.ts │ │ │ │ └── utils.ts │ │ │ ├── index.ts │ │ │ ├── infiniteQueryOptions.ts │ │ │ ├── mutationCache.ts │ │ │ ├── queryCache.ts │ │ │ ├── queryClient.ts │ │ │ ├── queryOptions.ts │ │ │ ├── types.ts │ │ │ ├── useBaseQuery.ts │ │ │ ├── useInfiniteQuery.ts │ │ │ ├── useIsFetching.ts │ │ │ ├── useMutation.ts │ │ │ ├── useMutationState.ts │ │ │ ├── useQueries.ts │ │ │ ├── useQuery.ts │ │ │ ├── useQueryClient.ts │ │ │ ├── utils.ts │ │ │ └── vueQueryPlugin.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.legacy.json │ │ ├── tsconfig.prod.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ └── vue-query-devtools/ │ ├── .attw.json │ ├── CHANGELOG.md │ ├── eslint.config.js │ ├── package.json │ ├── src/ │ │ ├── devtools.vue │ │ ├── devtoolsPanel.vue │ │ ├── index.ts │ │ ├── production.ts │ │ └── types.ts │ ├── tsconfig.json │ └── vite.config.ts ├── pnpm-workspace.yaml ├── prettier.config.js ├── scripts/ │ ├── create-github-release.mjs │ ├── generate-docs.ts │ ├── generate-labeler-config.ts │ ├── getTsupConfig.js │ ├── getViteAliases.js │ ├── tsconfig.json │ └── verify-links.ts └── tsconfig.json
Showing preview only (219K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2933 symbols across 493 files)
FILE: examples/angular/auto-refetching/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {}
FILE: examples/angular/auto-refetching/src/app/components/auto-refetching.component.ts
class AutoRefetchingExampleComponent (line 20) | class AutoRefetchingExampleComponent {
method clearTasks (line 34) | clearTasks() {
method inputChange (line 38) | inputChange($event: Event) {
method addItem (line 43) | addItem($event: Event) {
FILE: examples/angular/auto-refetching/src/app/services/tasks.service.ts
class TasksService (line 14) | class TasksService {
method addTask (line 35) | addTask() {
method clearAllTasks (line 50) | clearAllTasks() {
FILE: examples/angular/basic-persister/src/app/app.component.ts
class BasicExampleComponent (line 11) | class BasicExampleComponent {
FILE: examples/angular/basic-persister/src/app/components/post.component.ts
class PostComponent (line 18) | class PostComponent {
FILE: examples/angular/basic-persister/src/app/components/posts.component.ts
class PostsComponent (line 17) | class PostsComponent {
FILE: examples/angular/basic-persister/src/app/services/posts-service.ts
class PostsService (line 7) | class PostsService {
type Post (line 17) | interface Post {
FILE: examples/angular/basic/src/app/app.component.ts
class BasicExampleComponent (line 11) | class BasicExampleComponent {
FILE: examples/angular/basic/src/app/components/post.component.ts
class PostComponent (line 17) | class PostComponent {
FILE: examples/angular/basic/src/app/components/posts.component.ts
class PostsComponent (line 16) | class PostsComponent {
FILE: examples/angular/basic/src/app/services/posts-service.ts
class PostsService (line 7) | class PostsService {
type Post (line 17) | interface Post {
FILE: examples/angular/devtools-panel/src/app/app.component.ts
class AppComponent (line 21) | class AppComponent {}
FILE: examples/angular/devtools-panel/src/app/components/basic-devtools-panel-example.component.ts
class BasicDevtoolsPanelExampleComponent (line 30) | class BasicDevtoolsPanelExampleComponent {
method toggleIsOpen (line 34) | toggleIsOpen() {
FILE: examples/angular/devtools-panel/src/app/components/example-query.component.ts
type Response (line 6) | interface Response {
class ExampleQueryComponent (line 36) | class ExampleQueryComponent {
FILE: examples/angular/devtools-panel/src/app/components/lazy-load-devtools-panel-example.component.ts
class LazyLoadDevtoolsPanelExampleComponent (line 34) | class LazyLoadDevtoolsPanelExampleComponent {
method toggleIsOpen (line 44) | toggleIsOpen() {
FILE: examples/angular/infinite-query-with-max-pages/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {}
FILE: examples/angular/infinite-query-with-max-pages/src/app/components/example.component.ts
class ExampleComponent (line 18) | class ExampleComponent {
FILE: examples/angular/infinite-query-with-max-pages/src/app/directives/project-style.directive.ts
class ProjectStyleDirective (line 9) | class ProjectStyleDirective {
FILE: examples/angular/infinite-query-with-max-pages/src/app/services/projects.service.ts
type Project (line 4) | interface Project {
type ProjectResponse (line 9) | interface ProjectResponse {
class ProjectsService (line 18) | class ProjectsService {
FILE: examples/angular/optimistic-updates/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {}
FILE: examples/angular/optimistic-updates/src/app/components/optimistic-updates.component.ts
class OptimisticUpdatesComponent (line 54) | class OptimisticUpdatesComponent {
method addItem (line 64) | addItem() {
FILE: examples/angular/optimistic-updates/src/app/services/tasks.service.ts
class TasksService (line 14) | class TasksService {
method addTask (line 34) | addTask() {
FILE: examples/angular/pagination/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {}
FILE: examples/angular/pagination/src/app/components/example.component.ts
class ExampleComponent (line 22) | class ExampleComponent {
method previousPage (line 52) | previousPage() {
method nextPage (line 58) | nextPage() {
FILE: examples/angular/pagination/src/app/services/projects.service.ts
type Project (line 4) | interface Project {
type ProjectResponse (line 9) | interface ProjectResponse {
class ProjectsService (line 17) | class ProjectsService {
method getProjects (line 20) | getProjects(page: number) {
FILE: examples/angular/query-options-from-a-service/src/app/app.component.ts
class AppComponent (line 9) | class AppComponent {}
FILE: examples/angular/query-options-from-a-service/src/app/components/post.component.ts
class PostComponent (line 18) | class PostComponent {
FILE: examples/angular/query-options-from-a-service/src/app/components/posts.component.ts
class PostsComponent (line 12) | class PostsComponent {
FILE: examples/angular/query-options-from-a-service/src/app/services/queries-service.ts
type Post (line 6) | interface Post {
class QueriesService (line 15) | class QueriesService {
method post (line 18) | post(postId: number) {
method posts (line 31) | posts() {
FILE: examples/angular/router/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {}
FILE: examples/angular/router/src/app/components/post.component.ts
class PostComponent (line 19) | class PostComponent {
FILE: examples/angular/router/src/app/components/posts.component.ts
class PostsComponent (line 13) | class PostsComponent {
FILE: examples/angular/router/src/app/services/posts-service.ts
class PostsService (line 7) | class PostsService {
type Post (line 17) | interface Post {
FILE: examples/angular/rxjs/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {}
FILE: examples/angular/rxjs/src/app/components/example.component.ts
class ExampleComponent (line 17) | class ExampleComponent {
FILE: examples/angular/rxjs/src/app/services/autocomplete-service.ts
type Response (line 5) | interface Response {
class AutocompleteService (line 12) | class AutocompleteService {
FILE: examples/angular/simple/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {}
FILE: examples/angular/simple/src/app/components/simple-example.component.ts
type Response (line 6) | interface Response {
class SimpleExampleComponent (line 19) | class SimpleExampleComponent {
FILE: examples/preact/simple/src/index.tsx
function App (line 10) | function App() {
FILE: examples/react/algolia/src/App.tsx
function App (line 8) | function App() {
FILE: examples/react/algolia/src/Search.tsx
function Search (line 5) | function Search() {
FILE: examples/react/algolia/src/SearchResults.tsx
type Product (line 3) | type Product = {
type SearchResultsProps (line 9) | type SearchResultsProps = {
function SearchResults (line 13) | function SearchResults({ query = '' }: SearchResultsProps) {
FILE: examples/react/algolia/src/algolia.ts
constant ALGOLIA_APP_ID (line 6) | const ALGOLIA_APP_ID = 'latency'
constant ALGOLIA_SEARCH_API_KEY (line 7) | const ALGOLIA_SEARCH_API_KEY = '6be0576ff61c053d5f9a3225e2a90f76'
type SearchOptions (line 9) | type SearchOptions = {
function search (line 16) | async function search<TData>({
FILE: examples/react/algolia/src/useAlgolia.ts
type UseAlgoliaOptions (line 4) | type UseAlgoliaOptions = {
function useAlgolia (line 12) | function useAlgolia<TData>({
FILE: examples/react/auto-refetching/src/pages/index.tsx
function App (line 14) | function App() {
function Example (line 22) | function Example() {
FILE: examples/react/basic-graphql-request/src/index.tsx
type Post (line 16) | type Post = {
function App (line 22) | function App() {
function usePosts (line 47) | function usePosts() {
function Posts (line 71) | function Posts({
function usePost (line 119) | function usePost(postId: number) {
function Post (line 142) | function Post({
FILE: examples/react/basic/src/index.tsx
type Post (line 20) | type Post = {
function usePosts (line 26) | function usePosts() {
function Posts (line 36) | function Posts({
function usePost (line 91) | function usePost(postId: number) {
function Post (line 99) | function Post({
function App (line 132) | function App() {
FILE: examples/react/chat/src/chat.ts
function chatAnswer (line 11) | function chatAnswer(_question: string) {
FILE: examples/react/chat/src/index.tsx
function App (line 16) | function App() {
function ChatMessage (line 25) | function ChatMessage({ question }: { question: string }) {
function Example (line 41) | function Example() {
FILE: examples/react/chat/src/message.tsx
function Message (line 1) | function Message({
FILE: examples/react/default-query-function/src/index.tsx
type Post (line 12) | type Post = {
function App (line 35) | function App() {
function Posts (line 60) | function Posts({
function Post (line 112) | function Post({
FILE: examples/react/devtools-panel/src/index.tsx
function App (line 12) | function App() {
function Example (line 26) | function Example() {
FILE: examples/react/eslint-legacy/src/index.tsx
type Post (line 20) | type Post = {
function usePosts (line 26) | function usePosts() {
function Posts (line 36) | function Posts({
function usePost (line 91) | function usePost(postId: number) {
function Post (line 99) | function Post({
function App (line 132) | function App() {
FILE: examples/react/infinite-query-with-max-pages/src/pages/index.tsx
function App (line 11) | function App() {
function Example (line 19) | function Example() {
FILE: examples/react/load-more-infinite-scroll/src/pages/index.tsx
function App (line 13) | function App() {
function Example (line 21) | function Example() {
FILE: examples/react/nextjs-app-prefetching/app/get-query-client.ts
function makeQueryClient (line 7) | function makeQueryClient() {
function getQueryClient (line 25) | function getQueryClient() {
FILE: examples/react/nextjs-app-prefetching/app/layout.tsx
function RootLayout (line 10) | function RootLayout({
FILE: examples/react/nextjs-app-prefetching/app/page.tsx
function Home (line 7) | function Home() {
FILE: examples/react/nextjs-app-prefetching/app/pokemon-info.tsx
function PokemonInfo (line 7) | function PokemonInfo() {
FILE: examples/react/nextjs-app-prefetching/app/providers.tsx
function Providers (line 7) | function Providers({ children }: { children: React.ReactNode }) {
FILE: examples/react/nextjs-suspense-streaming/src/app/api/wait/route.ts
function GET (line 3) | async function GET(request: Request) {
FILE: examples/react/nextjs-suspense-streaming/src/app/layout.tsx
function RootLayout (line 8) | function RootLayout({
FILE: examples/react/nextjs-suspense-streaming/src/app/page.tsx
function getBaseURL (line 7) | function getBaseURL() {
function useWaitQuery (line 17) | function useWaitQuery(props: { wait: number }) {
function MyComponent (line 36) | function MyComponent(props: { wait: number }) {
function MyPage (line 42) | function MyPage() {
FILE: examples/react/nextjs-suspense-streaming/src/app/providers.tsx
function makeQueryClient (line 12) | function makeQueryClient() {
function getQueryClient (line 24) | function getQueryClient() {
function Providers (line 33) | function Providers(props: { children: React.ReactNode }) {
FILE: examples/react/nextjs/src/hooks/usePosts.ts
type Post (line 3) | type Post = {
FILE: examples/react/nextjs/src/pages/_app.tsx
function MyApp (line 10) | function MyApp({ Component, pageProps }: AppProps) {
FILE: examples/react/nextjs/src/pages/index.tsx
function getStaticProps (line 16) | async function getStaticProps() {
FILE: examples/react/offline/public/mockServiceWorker.js
constant INTEGRITY_CHECKSUM (line 10) | const INTEGRITY_CHECKSUM = '223d191a56023cd36aa88c802961b911'
constant IS_MOCKED_RESPONSE (line 11) | const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
function handleRequest (line 113) | async function handleRequest(event, requestId) {
function resolveMainClient (line 150) | async function resolveMainClient(event) {
function getResponse (line 173) | async function getResponse(event, client, requestId) {
function sendToClient (line 250) | function sendToClient(client, message, transferrables = []) {
function respondWithMock (line 269) | async function respondWithMock(response) {
FILE: examples/react/offline/src/App.tsx
function App (line 58) | function App() {
function Movies (line 76) | function Movies() {
function List (line 109) | function List() {
function MovieError (line 149) | function MovieError() {
function Detail (line 161) | function Detail() {
FILE: examples/react/optimistic-updates-cache/src/pages/api/data.ts
type Todo (line 3) | type Todo = { id: string; text: string }
FILE: examples/react/optimistic-updates-cache/src/pages/index.tsx
type Todos (line 15) | type Todos = {
function fetchTodos (line 23) | async function fetchTodos({ signal }: { signal: AbortSignal }): Promise<...
function Example (line 33) | function Example() {
function App (line 131) | function App() {
FILE: examples/react/optimistic-updates-ui/src/pages/api/data.ts
type Todo (line 3) | type Todo = { id: string; text: string }
FILE: examples/react/optimistic-updates-ui/src/pages/index.tsx
type Todos (line 13) | type Todos = {
function fetchTodos (line 21) | async function fetchTodos(): Promise<Todos> {
function useTodos (line 26) | function useTodos() {
function Example (line 30) | function Example() {
function App (line 110) | function App() {
FILE: examples/react/pagination/src/pages/index.tsx
function App (line 13) | function App() {
function Example (line 31) | function Example() {
FILE: examples/react/playground/src/index.tsx
type Todos (line 23) | type Todos = typeof list
type Todo (line 24) | type Todo = Todos[0]
function Root (line 32) | function Root() {
function App (line 125) | function App() {
function Todos (line 174) | function Todos({
function EditTodo (line 233) | function EditTodo({
function AddTodo (line 342) | function AddTodo() {
function fetchTodos (line 379) | function fetchTodos({ signal, queryKey: [, { filter }] }): Promise<Todos> {
function fetchTodoById (line 403) | function fetchTodoById({ id }: { id: number }): Promise<Todo> {
function postTodo (line 420) | function postTodo({ name, notes }: Omit<Todo, 'id'>) {
function patchTodo (line 439) | function patchTodo(todo?: Todo): Promise<Todo> {
FILE: examples/react/prefetching/src/pages/[user]/[repo].tsx
function fetchProject (line 6) | async function fetchProject(id: string): Promise<{
function Repo (line 18) | function Repo() {
FILE: examples/react/prefetching/src/pages/_app.tsx
function MyApp (line 5) | function MyApp({ Component, pageProps }: AppProps) {
FILE: examples/react/prefetching/src/pages/index.tsx
function Example (line 21) | function Example() {
FILE: examples/react/react-native/App.tsx
function onAppStateChange (line 14) | function onAppStateChange(status: AppStateStatus) {
function App (line 25) | function App() {
FILE: examples/react/react-native/src/components/Divider.tsx
function Divider (line 5) | function Divider() {
FILE: examples/react/react-native/src/components/ErrorMessage.tsx
type Props (line 4) | type Props = {
function ErrorMessage (line 8) | function ErrorMessage({ message }: Props) {
FILE: examples/react/react-native/src/components/ListItem.tsx
type Props (line 6) | type Props = {
function ListItem (line 11) | function ListItem({ item, onPress }: Props) {
FILE: examples/react/react-native/src/components/LoadingIndicator.tsx
function LoadingIndicator (line 4) | function LoadingIndicator() {
FILE: examples/react/react-native/src/hooks/useAppState.ts
function useAppState (line 5) | function useAppState(onChange: (status: AppStateStatus) => void) {
FILE: examples/react/react-native/src/hooks/useOnlineManager.ts
function useOnlineManager (line 6) | function useOnlineManager() {
FILE: examples/react/react-native/src/hooks/useRefreshByUser.ts
function useRefreshByUser (line 3) | function useRefreshByUser(refetch: () => Promise<unknown>) {
FILE: examples/react/react-native/src/hooks/useRefreshOnFocus.ts
function useRefreshOnFocus (line 4) | function useRefreshOnFocus(refetch: () => void) {
FILE: examples/react/react-native/src/lib/api.ts
type Movie (line 3) | type Movie = {
type MovieDetails (line 8) | type MovieDetails = Movie & {
function delay (line 15) | function delay(t: number) {
function fetchMovies (line 21) | async function fetchMovies(): Promise<Movie[]> {
function fetchMovie (line 33) | async function fetchMovie(title: string): Promise<MovieDetails> {
FILE: examples/react/react-native/src/navigation/MoviesStack.tsx
function MoviesStack (line 10) | function MoviesStack() {
FILE: examples/react/react-native/src/navigation/types.ts
type MoviesStackNavigator (line 3) | type MoviesStackNavigator = {
FILE: examples/react/react-native/src/screens/MovieDetailsScreen.tsx
type MoviesDetailsScreenNavigationProp (line 14) | type MoviesDetailsScreenNavigationProp = StackNavigationProp<
type Props (line 19) | type Props = {
function MovieDetailsScreen (line 24) | function MovieDetailsScreen({ route }: Props) {
FILE: examples/react/react-native/src/screens/MoviesListScreen.tsx
type MoviesListScreenNavigationProp (line 15) | type MoviesListScreenNavigationProp = StackNavigationProp<
type Props (line 20) | type Props = {
function MoviesListScreen (line 24) | function MoviesListScreen({ navigation }: Props) {
FILE: examples/react/react-router/src/contacts.ts
type Contact (line 28) | type Contact = (typeof initialData)[number]
function getContacts (line 39) | async function getContacts(query?: string) {
function createContact (line 49) | async function createContact(
function getContact (line 61) | async function getContact(id: string) {
function updateContact (line 69) | async function updateContact(id: string, updates: Partial<Contact>) {
function deleteContact (line 80) | async function deleteContact(id: string) {
function set (line 92) | function set(contacts: Contact[]) {
function fakeNetwork (line 96) | async function fakeNetwork() {
FILE: examples/react/react-router/src/error-page.tsx
function ErrorPage (line 3) | function ErrorPage() {
FILE: examples/react/react-router/src/routes/contact.tsx
function Contact (line 47) | function Contact() {
function Favorite (line 102) | function Favorite({ contact }: { contact: Contact }) {
FILE: examples/react/react-router/src/routes/edit.tsx
function Edit (line 26) | function Edit() {
function ContactForm (line 35) | function ContactForm({ contact }: { contact?: Contact }) {
FILE: examples/react/react-router/src/routes/index.tsx
function Index (line 1) | function Index() {
FILE: examples/react/react-router/src/routes/new.tsx
function New (line 17) | function New() {
FILE: examples/react/react-router/src/routes/root.tsx
function Root (line 34) | function Root() {
FILE: examples/react/rick-morty/src/App.tsx
function App (line 10) | function App() {
FILE: examples/react/rick-morty/src/Character.tsx
function Character (line 5) | function Character() {
function Episode (line 49) | function Episode({ episodeId }: { episodeId: string }) {
function Location (line 71) | function Location({ locationId }: { locationId: string }) {
FILE: examples/react/rick-morty/src/Characters.tsx
function Characters (line 5) | function Characters() {
FILE: examples/react/rick-morty/src/Episode.tsx
function Episode (line 5) | function Episode() {
function Character (line 33) | function Character({ characterId }: { characterId: string }) {
FILE: examples/react/rick-morty/src/Episodes.tsx
function Episodes (line 5) | function Episodes() {
FILE: examples/react/rick-morty/src/Home.tsx
function Home (line 3) | function Home() {
FILE: examples/react/rick-morty/src/Layout.tsx
function Layout (line 8) | function Layout() {
FILE: examples/react/shadow-dom/src/DogList.tsx
type DogsResp (line 3) | type DogsResp = {
FILE: examples/react/simple/src/index.tsx
function App (line 12) | function App() {
function Example (line 21) | function Example() {
FILE: examples/react/star-wars/src/App.tsx
function App (line 10) | function App() {
FILE: examples/react/star-wars/src/Character.tsx
function Character (line 5) | function Character() {
function Film (line 52) | function Film({ filmId }: { filmId: string }) {
function Homeworld (line 72) | function Homeworld({ homeworldId }: { homeworldId: string }) {
FILE: examples/react/star-wars/src/Characters.tsx
function Characters (line 5) | function Characters() {
FILE: examples/react/star-wars/src/Film.tsx
function Film (line 5) | function Film() {
function Character (line 33) | function Character({ characterId }: { characterId: string }) {
FILE: examples/react/star-wars/src/Films.tsx
function Films (line 5) | function Films() {
FILE: examples/react/star-wars/src/Home.tsx
function Home (line 3) | function Home() {
FILE: examples/react/star-wars/src/Layout.tsx
function Layout (line 8) | function Layout() {
FILE: examples/react/suspense/src/components/Button.tsx
function Button (line 5) | function Button({
FILE: examples/react/suspense/src/components/Project.tsx
function Project (line 7) | function Project({
FILE: examples/react/suspense/src/components/Projects.tsx
function Projects (line 7) | function Projects({
FILE: examples/react/suspense/src/components/Spinner.tsx
function Spinner (line 3) | function Spinner() {
FILE: examples/react/suspense/src/index.tsx
function App (line 28) | function App() {
function Example (line 36) | function Example() {
FILE: examples/react/suspense/src/queries.ts
function fetchProjects (line 1) | async function fetchProjects(): Promise<
function fetchProject (line 13) | async function fetchProject(id: string): Promise<{
FILE: examples/solid/astro/src/components/SolidApp.tsx
constant MAX_POKEMONS (line 28) | const MAX_POKEMONS = 100
method select (line 95) | select(data) {
method select (line 204) | select(data) {
FILE: examples/solid/basic-graphql-request/src/index.tsx
type Post (line 17) | type Post = {
function App (line 23) | function App() {
function createPosts (line 48) | function createPosts() {
function Posts (line 72) | function Posts(props: { setPostId: Setter<number> }) {
function createPost (line 119) | function createPost(postId: Accessor<number>) {
function Post (line 142) | function Post(props: { postId: number; setPostId: Setter<number> }) {
FILE: examples/solid/basic/src/index.tsx
type Post (line 20) | type Post = {
function createPosts (line 26) | function createPosts() {
function Posts (line 36) | function Posts(props: { setPostId: Setter<number> }) {
function createPost (line 90) | function createPost(postId: number) {
function Post (line 98) | function Post(props: { postId: number; setPostId: Setter<number> }) {
FILE: examples/solid/default-query-function/src/index.tsx
function App (line 33) | function App() {
function Posts (line 56) | function Posts(props: { setPostId: Setter<number> }) {
function Post (line 104) | function Post(props: { postId: number; setPostId: Setter<number> }) {
FILE: examples/solid/offline/src/App.tsx
function showNotification (line 42) | function showNotification(message: string, type: 'success' | 'error') {
function App (line 55) | function App() {
function Movies (line 73) | function Movies() {
function List (line 95) | function List(props: { onSelectMovie: (movieId: string) => void }) {
function Detail (line 141) | function Detail(props: { movieId: string; onBack: () => void }) {
FILE: examples/solid/simple/src/index.tsx
function App (line 13) | function App() {
function Example (line 22) | function Example() {
FILE: examples/solid/solid-start-streaming/src/app.tsx
function App (line 10) | function App() {
FILE: examples/solid/solid-start-streaming/src/components/example.tsx
type ExampleProps (line 3) | interface ExampleProps {
FILE: examples/solid/solid-start-streaming/src/components/post-viewer.tsx
type PostViewerProps (line 10) | interface PostViewerProps {
FILE: examples/solid/solid-start-streaming/src/components/query-boundary.tsx
type QueryBoundaryProps (line 5) | interface QueryBoundaryProps<T = unknown> {
function QueryBoundary (line 33) | function QueryBoundary<T>(props: QueryBoundaryProps<T>) {
FILE: examples/solid/solid-start-streaming/src/components/user-info.tsx
type UserInfoProps (line 8) | interface UserInfoProps {
FILE: examples/solid/solid-start-streaming/src/routes/[...404].tsx
function NotFound (line 4) | function NotFound() {
FILE: examples/solid/solid-start-streaming/src/routes/batch-methods.tsx
function sleep (line 5) | function sleep(milliseconds: number) {
function spin (line 9) | function spin(milliseconds: number) {
function sayHello (line 16) | async function sayHello(name: string) {
function BatchMethods (line 30) | function BatchMethods() {
FILE: examples/solid/solid-start-streaming/src/routes/deferred.tsx
function Deferred (line 5) | function Deferred() {
FILE: examples/solid/solid-start-streaming/src/routes/hydration.tsx
function Hydration (line 8) | function Hydration() {
type QueryState (line 72) | type QueryState = UseQueryResult<
FILE: examples/solid/solid-start-streaming/src/routes/index.tsx
function Home (line 3) | function Home() {
FILE: examples/solid/solid-start-streaming/src/routes/mixed.tsx
function Mixed (line 5) | function Mixed() {
FILE: examples/solid/solid-start-streaming/src/routes/prefetch.tsx
function Prefetch (line 14) | function Prefetch() {
FILE: examples/solid/solid-start-streaming/src/routes/streamed.tsx
function Streamed (line 5) | function Streamed() {
FILE: examples/solid/solid-start-streaming/src/routes/with-error.tsx
function Streamed (line 5) | function Streamed() {
FILE: examples/solid/solid-start-streaming/src/utils/api.ts
type PostData (line 1) | interface PostData {
FILE: examples/svelte/basic/src/lib/types.ts
type Post (line 1) | type Post = {
FILE: examples/svelte/optimistic-updates/src/routes/api/data/+server.ts
type Todo (line 4) | type Todo = {
FILE: examples/svelte/playground/src/lib/stores.svelte.ts
function ref (line 1) | function ref<T>(initial: T) {
type Todos (line 36) | type Todos = typeof initialList
type Todo (line 37) | type Todo = Todos[0]
FILE: examples/svelte/ssr/src/lib/types.ts
type Post (line 1) | type Post = {
FILE: examples/vue/2.6-basic/src/main.ts
method render (line 11) | render() {
FILE: examples/vue/2.6-basic/src/types.d.ts
type Post (line 1) | interface Post {
FILE: examples/vue/2.7-basic/src/types.d.ts
type Post (line 1) | interface Post {
FILE: examples/vue/basic/src/types.d.ts
type Post (line 1) | interface Post {
FILE: examples/vue/dependent-queries/src/types.d.ts
type Post (line 1) | interface Post {
type Author (line 8) | interface Author {
FILE: examples/vue/persister/src/types.d.ts
type Post (line 1) | interface Post {
FILE: examples/vue/simple/src/types.d.ts
type Post (line 1) | interface Post {
FILE: integrations/angular-cli-20/src/app/app.ts
class App (line 18) | class App {
FILE: integrations/react-next-14/app/client-component.tsx
function ClientComponent (line 6) | function ClientComponent() {
FILE: integrations/react-next-14/app/layout.tsx
function RootLayout (line 10) | function RootLayout({
FILE: integrations/react-next-14/app/page.tsx
function Home (line 9) | function Home() {
FILE: integrations/react-next-14/app/providers.tsx
function Providers (line 6) | function Providers({ children }: { children: React.ReactNode }) {
FILE: integrations/react-next-15/app/_action.ts
function queryExampleAction (line 6) | async function queryExampleAction() {
FILE: integrations/react-next-15/app/client-component.tsx
function ClientComponent (line 7) | function ClientComponent() {
FILE: integrations/react-next-15/app/layout.tsx
function RootLayout (line 10) | function RootLayout({
FILE: integrations/react-next-15/app/make-query-client.ts
function makeQueryClient (line 21) | function makeQueryClient() {
FILE: integrations/react-next-15/app/page.tsx
function Home (line 9) | function Home() {
FILE: integrations/react-next-15/app/providers.tsx
function getQueryClient (line 12) | function getQueryClient() {
function Providers (line 26) | function Providers({ children }: { children: React.ReactNode }) {
FILE: integrations/react-next-16/app/_action.ts
function queryExampleAction (line 6) | async function queryExampleAction() {
FILE: integrations/react-next-16/app/client-component.tsx
function ClientComponent (line 7) | function ClientComponent() {
FILE: integrations/react-next-16/app/layout.tsx
function RootLayout (line 10) | function RootLayout({
FILE: integrations/react-next-16/app/make-query-client.ts
function makeQueryClient (line 21) | function makeQueryClient() {
FILE: integrations/react-next-16/app/page.tsx
function Home (line 9) | function Home() {
FILE: integrations/react-next-16/app/providers.tsx
function getQueryClient (line 12) | function getQueryClient() {
function Providers (line 26) | function Providers({ children }: { children: React.ReactNode }) {
FILE: packages/angular-query-experimental/scripts/prepack.js
constant FILES_TO_COPY (line 21) | const FILES_TO_COPY = ['README.md']
constant FIELDS_TO_REMOVE (line 27) | const FIELDS_TO_REMOVE = [
function replaceDist (line 40) | function replaceDist(filePath) {
function processExports (line 51) | function processExports(exports) {
FILE: packages/angular-query-experimental/src/__tests__/infinite-query-options.test-d.ts
type MyQueryKey (line 195) | type MyQueryKey = [Array<string>, { type: 'foo' }]
type MyQueryKey (line 210) | type MyQueryKey = DataTag<
FILE: packages/angular-query-experimental/src/__tests__/inject-devtools-panel.test.ts
function MockTanstackQueryDevtoolsPanel (line 21) | function MockTanstackQueryDevtoolsPanel() {
FILE: packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts
class FakeComponent (line 141) | @Component({
FILE: packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts
class FakeComponent (line 304) | @Component({
method mutate (line 319) | mutate(): void {
method mutate (line 359) | mutate(): void {
class FakeComponent (line 344) | @Component({
method mutate (line 319) | mutate(): void {
method mutate (line 359) | mutate(): void {
FILE: packages/angular-query-experimental/src/__tests__/inject-queries.test-d.ts
type Data (line 108) | type Data = string
FILE: packages/angular-query-experimental/src/__tests__/inject-queries.test.ts
class Page (line 36) | @Component({
FILE: packages/angular-query-experimental/src/__tests__/inject-query.test.ts
type CustomErrorType (line 89) | type CustomErrorType = { message: string }
function queryFn (line 135) | function queryFn<T = string>(): Promise<T> {
type MyData (line 162) | type MyData = number
type MyQueryKey (line 163) | type MyQueryKey = readonly ['my-data', number]
class FakeComponent (line 522) | @Component({
FILE: packages/angular-query-experimental/src/__tests__/pending-tasks.test.ts
class TestComponent (line 280) | @Component({
FILE: packages/angular-query-experimental/src/__tests__/test-utils.ts
function evaluateSignals (line 8) | function evaluateSignals<T extends Record<string, any>>(
type ToSignalInputUpdatableMap (line 38) | type ToSignalInputUpdatableMap<T> = {
function componentHasSignalInputProperty (line 44) | function componentHasSignalInputProperty<TProperty extends string>(
function setSignalInputs (line 57) | function setSignalInputs<T extends NonNullable<unknown>>(
function setFixtureSignalInputs (line 68) | function setFixtureSignalInputs<T extends NonNullable<unknown>>(
FILE: packages/angular-query-experimental/src/__tests__/with-devtools.test.ts
function MockTanstackQueryDevtools (line 33) | function MockTanstackQueryDevtools() {
class ReactiveService (line 566) | class ReactiveService {
FILE: packages/angular-query-experimental/src/create-base-query.ts
function createBaseQuery (line 31) | function createBaseQuery<
FILE: packages/angular-query-experimental/src/devtools-panel/types.ts
type InjectDevtoolsPanelOptions (line 5) | interface InjectDevtoolsPanelOptions {
type DevtoolsPanelRef (line 17) | interface DevtoolsPanelRef {
type DevtoolsPanelOptions (line 24) | interface DevtoolsPanelOptions {
type InjectDevtoolsPanel (line 54) | type InjectDevtoolsPanel = (
FILE: packages/angular-query-experimental/src/devtools/types.ts
type WithDevtoolsOptions (line 12) | interface WithDevtoolsOptions {
type DevtoolsOptions (line 41) | interface DevtoolsOptions {
type WithDevtoolsFn (line 102) | type WithDevtoolsFn = (...deps: Array<any>) => DevtoolsOptions
type WithDevtools (line 104) | type WithDevtools = (
FILE: packages/angular-query-experimental/src/devtools/with-devtools.ts
constant DEVTOOLS_PROVIDED (line 27) | const DEVTOOLS_PROVIDED = new InjectionToken('', {
constant DEVTOOLS_OPTIONS_SIGNAL (line 36) | const DEVTOOLS_OPTIONS_SIGNAL = new InjectionToken<Signal<DevtoolsOption...
FILE: packages/angular-query-experimental/src/infinite-query-options.ts
type UndefinedInitialDataInfiniteOptions (line 13) | type UndefinedInitialDataInfiniteOptions<
type UnusedSkipTokenInfiniteOptions (line 34) | type UnusedSkipTokenInfiniteOptions<
type DefinedInitialDataInfiniteOptions (line 62) | type DefinedInitialDataInfiniteOptions<
function infiniteQueryOptions (line 181) | function infiniteQueryOptions(options: unknown) {
FILE: packages/angular-query-experimental/src/inject-infinite-query.ts
type InjectInfiniteQueryOptions (line 25) | interface InjectInfiniteQueryOptions {
function injectInfiniteQuery (line 113) | function injectInfiniteQuery(
FILE: packages/angular-query-experimental/src/inject-is-fetching.ts
type InjectIsFetchingOptions (line 13) | interface InjectIsFetchingOptions {
function injectIsFetching (line 31) | function injectIsFetching(
FILE: packages/angular-query-experimental/src/inject-is-mutating.ts
type InjectIsMutatingOptions (line 13) | interface InjectIsMutatingOptions {
function injectIsMutating (line 30) | function injectIsMutating(
FILE: packages/angular-query-experimental/src/inject-is-restoring.ts
constant IS_RESTORING (line 13) | const IS_RESTORING = new InjectionToken('', {
type InjectIsRestoringOptions (line 18) | interface InjectIsRestoringOptions {
function injectIsRestoring (line 32) | function injectIsRestoring(options?: InjectIsRestoringOptions) {
function provideIsRestoring (line 43) | function provideIsRestoring(isRestoring: Signal<boolean>): Provider {
FILE: packages/angular-query-experimental/src/inject-mutation-state.ts
type MutationStateOptions (line 23) | type MutationStateOptions<TResult = MutationState> = {
function getResult (line 33) | function getResult<TResult = MutationState>(
type InjectMutationStateOptions (line 45) | interface InjectMutationStateOptions {
function injectMutationState (line 60) | function injectMutationState<TResult = MutationState>(
FILE: packages/angular-query-experimental/src/inject-mutation.ts
type InjectMutationOptions (line 28) | interface InjectMutationOptions {
function injectMutation (line 45) | function injectMutation<
FILE: packages/angular-query-experimental/src/inject-queries.ts
type QueryObserverOptionsForCreateQueries (line 39) | type QueryObserverOptionsForCreateQueries<
type MAXIMUM_DEPTH (line 52) | type MAXIMUM_DEPTH = 20
type SkipTokenForCreateQueries (line 55) | type SkipTokenForCreateQueries = symbol
type GetCreateQueryOptionsForCreateQueries (line 57) | type GetCreateQueryOptionsForCreateQueries<T> =
type GetDefinedOrUndefinedQueryResult (line 94) | type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T ex...
type GetCreateQueryResult (line 110) | type GetCreateQueryResult<T> =
type QueriesOptions (line 144) | type QueriesOptions<
type QueriesResults (line 186) | type QueriesResults<
type InjectQueriesOptions (line 204) | interface InjectQueriesOptions<
function injectQueries (line 220) | function injectQueries<
FILE: packages/angular-query-experimental/src/inject-query-client.ts
function injectQueryClient (line 18) | function injectQueryClient(
FILE: packages/angular-query-experimental/src/inject-query.ts
type InjectQueryOptions (line 20) | interface InjectQueryOptions {
function injectQuery (line 218) | function injectQuery(
FILE: packages/angular-query-experimental/src/mutation-options.ts
function mutationOptions (line 103) | function mutationOptions<
FILE: packages/angular-query-experimental/src/pending-tasks-compat.ts
type PendingTasksCompat (line 5) | type PendingTasksCompat = { add: () => PendingTaskRef }
type PendingTaskRef (line 7) | type PendingTaskRef = () => void
constant PENDING_TASKS (line 9) | const PENDING_TASKS = new InjectionToken<PendingTasksCompat>(
FILE: packages/angular-query-experimental/src/providers.ts
function provideQueryClient (line 14) | function provideQueryClient(
function provideTanStackQuery (line 105) | function provideTanStackQuery(
function provideAngularQuery (line 124) | function provideAngularQuery(queryClient: QueryClient): Array<Provider> {
type QueryFeatureKind (line 130) | type QueryFeatureKind = (typeof queryFeatures)[number]
type QueryFeature (line 135) | interface QueryFeature<TFeatureKind extends QueryFeatureKind> {
function queryFeature (line 146) | function queryFeature<TFeatureKind extends QueryFeatureKind>(
type DevtoolsFeature (line 158) | type DevtoolsFeature = QueryFeature<'Devtools'>
type PersistQueryClientFeature (line 164) | type PersistQueryClientFeature = QueryFeature<'PersistQueryClient'>
type QueryFeatures (line 173) | type QueryFeatures = DevtoolsFeature | PersistQueryClientFeature
FILE: packages/angular-query-experimental/src/query-options.ts
type UndefinedInitialDataOptions (line 13) | type UndefinedInitialDataOptions<
type UnusedSkipTokenOptions (line 25) | type UnusedSkipTokenOptions<
type DefinedInitialDataOptions (line 40) | type DefinedInitialDataOptions<
function queryOptions (line 172) | function queryOptions(options: unknown) {
FILE: packages/angular-query-experimental/src/signal-proxy.ts
type MapToSignals (line 4) | type MapToSignals<T> = {
function signalProxy (line 14) | function signalProxy<TInput extends Record<string | symbol, any>>(
FILE: packages/angular-query-experimental/src/types.ts
type CreateBaseQueryOptions (line 21) | interface CreateBaseQueryOptions<
type CreateQueryOptions (line 35) | interface CreateQueryOptions<
type CreateStatusBasedQueryResult (line 45) | type CreateStatusBasedQueryResult<
type BaseQueryNarrowing (line 51) | interface BaseQueryNarrowing<TData = unknown, TError = DefaultError> {
type CreateInfiniteQueryOptions (line 75) | interface CreateInfiniteQueryOptions<
type CreateBaseQueryResult (line 92) | type CreateBaseQueryResult<
type CreateQueryResult (line 99) | type CreateQueryResult<
type DefinedCreateQueryResult (line 104) | type DefinedCreateQueryResult<
type CreateInfiniteQueryResult (line 111) | type CreateInfiniteQueryResult<
type DefinedCreateInfiniteQueryResult (line 117) | type DefinedCreateInfiniteQueryResult<
type CreateMutationOptions (line 126) | interface CreateMutationOptions<
type CreateMutateFunction (line 136) | type CreateMutateFunction<
type CreateMutateAsyncFunction (line 147) | type CreateMutateAsyncFunction<
type CreateBaseMutationResult (line 154) | type CreateBaseMutationResult<
type CreateStatusBasedMutationResult (line 171) | type CreateStatusBasedMutationResult<
type SignalFunction (line 182) | type SignalFunction<T extends () => any> = T & Signal<ReturnType<T>>
type BaseMutationNarrowing (line 184) | interface BaseMutationNarrowing<
type CreateMutationResult (line 260) | type CreateMutationResult<
FILE: packages/angular-query-experimental/vite.config.ts
function ensureImportFileExtension (line 8) | function ensureImportFileExtension({
FILE: packages/angular-query-persist-client/src/__tests__/with-persist-query-client.test.ts
method persistClient (line 33) | persistClient(persistClient: PersistedClient) {
method restoreClient (line 36) | async restoreClient() {
method removeClient (line 39) | removeClient() {
method persistClient (line 52) | async persistClient() {
method restoreClient (line 55) | async restoreClient() {
class Page (line 87) | @Component({
class Page (line 175) | @Component({
class Page (line 265) | @Component({
class Page (line 339) | @Component({
class Page (line 391) | @Component({
FILE: packages/angular-query-persist-client/src/with-persist-query-client.ts
type PersistQueryClientOptions (line 21) | type PersistQueryClientOptions = {
function withPersistQueryClient (line 55) | function withPersistQueryClient(
FILE: packages/angular-query-persist-client/tsup.config.ts
method outExtension (line 10) | outExtension({ format }) {
FILE: packages/eslint-plugin-query/root.tsup.config.js
function modernConfig (line 8) | function modernConfig(opts) {
function legacyConfig (line 35) | function legacyConfig(opts) {
FILE: packages/eslint-plugin-query/src/__tests__/infinite-query-property-order.rule.test.ts
type CheckedProperties (line 22) | type CheckedProperties = (typeof checkedProperties)[number]
type OrderIndependentProps (line 29) | type OrderIndependentProps = (typeof orderIndependentProps)[number]
type TestCase (line 31) | interface TestCase {
function generateInvalidPermutations (line 41) | function generateInvalidPermutations(
type Interleaved (line 103) | type Interleaved = CheckedProperties | OrderIndependentProps
function getCode (line 139) | function getCode({
FILE: packages/eslint-plugin-query/src/__tests__/mutation-property-order.rule.test.ts
type CheckedProperties (line 22) | type CheckedProperties = (typeof checkedProperties)[number]
type OrderIndependentProps (line 29) | type OrderIndependentProps = (typeof orderIndependentProps)[number]
type TestCase (line 31) | interface TestCase {
function generateInvalidPermutations (line 41) | function generateInvalidPermutations(
type Interleaved (line 96) | type Interleaved = CheckedProperties | OrderIndependentProps
function getCode (line 130) | function getCode({ mutationFunction: mutationFunction, properties }: Tes...
FILE: packages/eslint-plugin-query/src/__tests__/no-unstable-deps.test.ts
type TestCase (line 10) | interface TestCase {
FILE: packages/eslint-plugin-query/src/__tests__/test-utils.ts
function normalizeIndent (line 3) | function normalizeIndent(template: TemplateStringsArray) {
function generatePermutations (line 9) | function generatePermutations<T>(arr: Array<T>): Array<Array<T>> {
function generatePartialCombinations (line 26) | function generatePartialCombinations<T>(
function expectArrayEqualIgnoreOrder (line 46) | function expectArrayEqualIgnoreOrder<T>(a: Array<T>, b: Array<T>) {
function generateInterleavedCombinations (line 50) | function generateInterleavedCombinations<
FILE: packages/eslint-plugin-query/src/index.ts
type RuleKey (line 5) | type RuleKey = keyof typeof rules
type Plugin (line 7) | interface Plugin extends Omit<ESLint.Plugin, 'rules'> {
FILE: packages/eslint-plugin-query/src/rules/exhaustive-deps/exhaustive-deps.rule.ts
constant QUERY_KEY (line 10) | const QUERY_KEY = 'queryKey'
constant QUERY_FN (line 11) | const QUERY_FN = 'queryFn'
method fix (line 137) | fix(fixer) {
function getQueryFnRelevantNode (line 157) | function getQueryFnRelevantNode(queryFn: TSESTree.Property) {
function dereferenceVariablesAndTypeAssertions (line 172) | function dereferenceVariablesAndTypeAssertions(
FILE: packages/eslint-plugin-query/src/rules/exhaustive-deps/exhaustive-deps.utils.ts
method isRelevantReference (line 6) | isRelevantReference(params: {
method isInstanceOfKind (line 62) | isInstanceOfKind(node: TSESTree.Node) {
method collectQueryKeyDeps (line 69) | collectQueryKeyDeps(params: {
method isNode (line 159) | isNode(value: unknown): value is TSESTree.Node {
method collectExternalRefsInFunction (line 168) | collectExternalRefsInFunction(params: {
FILE: packages/eslint-plugin-query/src/rules/infinite-query-property-order/constants.ts
type InfiniteQueryFunctions (line 7) | type InfiniteQueryFunctions = (typeof infiniteQueryFunctions)[number]
type InfiniteQueryProperties (line 15) | type InfiniteQueryProperties = (typeof checkedProperties)[number]
FILE: packages/eslint-plugin-query/src/rules/mutation-property-order/constants.ts
type MutationFunctions (line 3) | type MutationFunctions = (typeof mutationFunctions)[number]
type MutationProperties (line 7) | type MutationProperties = (typeof checkedProperties)[number]
FILE: packages/eslint-plugin-query/src/rules/no-rest-destructuring/no-rest-destructuring.utils.ts
method isObjectRestDestructuring (line 5) | isObjectRestDestructuring(node: TSESTree.Node): boolean {
FILE: packages/eslint-plugin-query/src/rules/no-unstable-deps/no-unstable-deps.rule.ts
function getReactHook (line 41) | function getReactHook(node: TSESTree.CallExpression): string | undefined {
function collectVariableNames (line 61) | function collectVariableNames(
function hasCombineProperty (line 70) | function hasCombineProperty(
method ImportDeclaration (line 88) | ImportDeclaration(node: TSESTree.ImportDeclaration) {
method VariableDeclarator (line 107) | VariableDeclarator(node) {
FILE: packages/eslint-plugin-query/src/rules/no-void-query-fn/no-void-query-fn.rule.ts
method Property (line 34) | Property(node) {
type Program (line 77) | type Program = ParserServicesWithTypeInformation['program']
type TypeChecker (line 78) | type TypeChecker = ReturnType<Program['getTypeChecker']>
type Type (line 79) | type Type = ReturnType<TypeChecker['getTypeAtLocation']>
function isIllegalReturn (line 81) | function isIllegalReturn(checker: TypeChecker, type: Type): boolean {
FILE: packages/eslint-plugin-query/src/types.ts
type ExtraRuleDocs (line 1) | type ExtraRuleDocs = {
FILE: packages/eslint-plugin-query/src/utils/ast-utils.ts
method isNodeOfOneOf (line 6) | isNodeOfOneOf<T extends AST_NODE_TYPES>(
method isIdentifier (line 12) | isIdentifier(node: TSESTree.Node): node is TSESTree.Identifier {
method isIdentifierWithName (line 15) | isIdentifierWithName(
method isIdentifierWithOneOfNames (line 21) | isIdentifierWithOneOfNames<T extends Array<string>>(
method isProperty (line 27) | isProperty(node: TSESTree.Node): node is TSESTree.Property {
method isObjectExpression (line 30) | isObjectExpression(node: TSESTree.Node): node is TSESTree.ObjectExpressi...
method isPropertyWithIdentifierKey (line 33) | isPropertyWithIdentifierKey(
method findPropertyWithIdentifierKey (line 41) | findPropertyWithIdentifierKey(
method getNestedIdentifiers (line 50) | getNestedIdentifiers(node: TSESTree.Node): Array<TSESTree.Identifier> {
method isAncestorIsCallee (line 135) | isAncestorIsCallee(identifier: TSESTree.Node) {
method traverseUpOnly (line 157) | traverseUpOnly(
method isDeclaredInNode (line 169) | isDeclaredInNode(params: {
method getExternalRefs (line 183) | getExternalRefs(params: {
method mapKeyNodeToText (line 232) | mapKeyNodeToText(
method mapKeyNodeToBaseText (line 244) | mapKeyNodeToBaseText(
method isValidReactComponentOrHookName (line 253) | isValidReactComponentOrHookName(
method getFunctionAncestor (line 262) | getFunctionAncestor(
method getReferencedExpressionByIdentifier (line 292) | getReferencedExpressionByIdentifier(params: {
method getClosestVariableDeclarator (line 315) | getClosestVariableDeclarator(node: TSESTree.Node) {
method getNestedReturnStatements (line 328) | getNestedReturnStatements(
FILE: packages/eslint-plugin-query/src/utils/create-property-order-rule.ts
function createPropertyOrderRule (line 10) | function createPropertyOrderRule<
FILE: packages/eslint-plugin-query/src/utils/detect-react-query-imports.ts
type Create (line 4) | type Create = Parameters<
type Context (line 8) | type Context = Parameters<Create>[0]
type Options (line 9) | type Options = Parameters<Create>[1]
type Helpers (line 10) | type Helpers = {
type EnhancedCreate (line 18) | type EnhancedCreate = (
function detectTanstackQueryImports (line 24) | function detectTanstackQueryImports(create: EnhancedCreate): Create {
FILE: packages/eslint-plugin-query/src/utils/sort-data-by-order.ts
function sortDataByOrder (line 1) | function sortDataByOrder<T, TKey extends keyof T>(
FILE: packages/eslint-plugin-query/src/utils/unique-by.ts
function uniqueBy (line 1) | function uniqueBy<T>(arr: Array<T>, fn: (x: T) => unknown): Array<T> {
FILE: packages/preact-query-devtools/root.tsup.config.js
function modernConfig (line 10) | function modernConfig(opts) {
function legacyConfig (line 28) | function legacyConfig(opts) {
FILE: packages/preact-query-devtools/src/PreactQueryDevtools.tsx
type DevtoolsOptions (line 13) | interface DevtoolsOptions {
function PreactQueryDevtools (line 58) | function PreactQueryDevtools(props: DevtoolsOptions): VNode | null {
FILE: packages/preact-query-devtools/src/PreactQueryDevtoolsPanel.tsx
type DevtoolsPanelOptions (line 8) | interface DevtoolsPanelOptions {
function PreactQueryDevtoolsPanel (line 47) | function PreactQueryDevtoolsPanel(
FILE: packages/preact-query-devtools/src/index.ts
type DevtoolsPanelOptions (line 18) | type DevtoolsPanelOptions = DevtoolsPanel.DevtoolsPanelOptions
FILE: packages/preact-query-persist-client/src/PersistQueryClientProvider.tsx
type PersistQueryClientProviderProps (line 18) | type PersistQueryClientProviderProps = QueryClientProviderProps & {
FILE: packages/preact-query-persist-client/src/__tests__/PersistQueryClientProvider.test.tsx
method persistClient (line 27) | persistClient(persistClient: PersistedClient) {
method restoreClient (line 31) | async restoreClient() {
method removeClient (line 34) | removeClient() {
function Page (line 69) | function Page() {
FILE: packages/preact-query-persist-client/src/__tests__/testPersistProvider.tsx
type Props (line 14) | type Props = {
function PersistQueryClientProvider (line 22) | function PersistQueryClientProvider({
FILE: packages/preact-query-persist-client/src/__tests__/use-queries-with-persist.test.tsx
function TestComponent (line 108) | function TestComponent() {
FILE: packages/preact-query/src/HydrationBoundary.tsx
type HydrationBoundaryProps (line 14) | interface HydrationBoundaryProps {
FILE: packages/preact-query/src/QueryClientProvider.tsx
type QueryClientProviderProps (line 24) | type QueryClientProviderProps = {
FILE: packages/preact-query/src/QueryErrorResetBoundary.tsx
type QueryErrorResetFunction (line 6) | type QueryErrorResetFunction = () => void
type QueryErrorIsResetFunction (line 7) | type QueryErrorIsResetFunction = () => boolean
type QueryErrorClearResetFunction (line 8) | type QueryErrorClearResetFunction = () => void
type QueryErrorResetBoundaryValue (line 10) | interface QueryErrorResetBoundaryValue {
function createValue (line 16) | function createValue(): QueryErrorResetBoundaryValue {
type QueryErrorResetBoundaryFunction (line 40) | type QueryErrorResetBoundaryFunction = (
type QueryErrorResetBoundaryProps (line 44) | interface QueryErrorResetBoundaryProps {
FILE: packages/preact-query/src/__tests__/ErrorBoundary/ErrorBoundary.ts
type ErrorBoundaryState (line 7) | type ErrorBoundaryState =
class ErrorBoundary (line 22) | class ErrorBoundary extends Component<
method constructor (line 26) | constructor(props: ErrorBoundaryProps) {
method getDerivedStateFromError (line 33) | static getDerivedStateFromError(error: Error) {
method resetErrorBoundary (line 37) | resetErrorBoundary(...args: any[]) {
method componentDidCatch (line 50) | componentDidCatch(error: Error, info: ErrorInfo) {
method componentDidUpdate (line 60) | componentDidUpdate(
method render (line 88) | render() {
function hasArrayChanged (line 129) | function hasArrayChanged(a: any[] = [], b: any[] = []) {
FILE: packages/preact-query/src/__tests__/ErrorBoundary/ErrorBoundaryContext.ts
type ErrorBoundaryContextType (line 3) | type ErrorBoundaryContextType = {
FILE: packages/preact-query/src/__tests__/ErrorBoundary/types.ts
type FallbackProps (line 8) | type FallbackProps = {
type PropsWithChildren (line 13) | type PropsWithChildren<TProps = {}> = TProps & {
type ErrorBoundarySharedProps (line 17) | type ErrorBoundarySharedProps = PropsWithChildren<{
type ErrorBoundaryPropsWithComponent (line 27) | type ErrorBoundaryPropsWithComponent = ErrorBoundarySharedProps & {
type ErrorBoundaryPropsWithRender (line 33) | type ErrorBoundaryPropsWithRender = ErrorBoundarySharedProps & {
type ErrorBoundaryPropsWithFallback (line 39) | type ErrorBoundaryPropsWithFallback = ErrorBoundarySharedProps & {
type ErrorBoundaryProps (line 45) | type ErrorBoundaryProps =
FILE: packages/preact-query/src/__tests__/HydrationBoundary.test.tsx
function Page (line 39) | function Page() {
function Page (line 71) | function Page() {
function Page (line 106) | function Page({ queryKey }: { queryKey: [string] }) {
function Page (line 177) | function Page({ queryKey }: { queryKey: [string] }) {
function Thrower (line 215) | function Thrower(): never {
function Page (line 270) | function Page() {
function Page (line 316) | function Page() {
function Page (line 344) | function Page() {
function Page (line 368) | function Page() {
function Page (line 392) | function Page() {
function Page (line 456) | function Page() {
FILE: packages/preact-query/src/__tests__/QueryClientProvider.test.tsx
function Page (line 28) | function Page() {
function Page1 (line 63) | function Page1() {
function Page2 (line 75) | function Page2() {
function Page (line 122) | function Page() {
function Page (line 154) | function Page() {
FILE: packages/preact-query/src/__tests__/QueryResetErrorBoundary.test.tsx
function Page (line 40) | function Page() {
function Page (line 101) | function Page() {
function Page (line 169) | function Page() {
function Page (line 235) | function Page() {
function Page (line 305) | function Page() {
function Page (line 366) | function Page() {
function Page (line 431) | function Page() {
function Page (line 511) | function Page() {
function Page (line 578) | function Page() {
function Page (line 649) | function Page() {
function Page (line 678) | function Page() {
function Page (line 741) | function Page() {
function Page (line 807) | function Page() {
FILE: packages/preact-query/src/__tests__/fine-grained-persister.test.tsx
function Test (line 55) | function Test() {
function Test (line 112) | function Test() {
function Test (line 153) | function Test() {
FILE: packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx
type MyQueryKey (line 220) | type MyQueryKey = [Array<string>, { type: 'foo' }]
type MyQueryKey (line 235) | type MyQueryKey = DataTag<
FILE: packages/preact-query/src/__tests__/mutationOptions.test.tsx
function IsMutating (line 46) | function IsMutating() {
function Mutation (line 54) | function Mutation() {
function Page (line 64) | function Page() {
function IsMutating (line 91) | function IsMutating() {
function Mutation (line 99) | function Mutation() {
function Page (line 109) | function Page() {
function IsMutating (line 140) | function IsMutating() {
function Mutation (line 148) | function Mutation() {
function Page (line 160) | function Page() {
function IsMutating (line 192) | function IsMutating() {
function Mutation (line 202) | function Mutation() {
function Page (line 214) | function Page() {
function Mutation (line 243) | function Mutation() {
function Mutation (line 274) | function Mutation() {
function Mutation (line 309) | function Mutation() {
function Mutation (line 347) | function Mutation() {
function Mutation (line 386) | function Mutation() {
function Mutation (line 420) | function Mutation() {
function Mutation (line 458) | function Mutation() {
function Mutation (line 500) | function Mutation() {
FILE: packages/preact-query/src/__tests__/queryOptions.test-d.tsx
function somethingWithQueryOptions (line 244) | function somethingWithQueryOptions<TQueryOpts extends AnyUseQueryOptions>(
type MyQueryKey (line 259) | type MyQueryKey = [Array<string>, { type: 'foo' }]
type MyQueryKey (line 272) | type MyQueryKey = DataTag<
FILE: packages/preact-query/src/__tests__/ssr-hydration.test.tsx
function fetchData (line 29) | async function fetchData<TData>(value: TData, ms?: number): Promise<TDat...
function PrintStateComponent (line 34) | function PrintStateComponent({ componentName, result }: any): any {
function SuccessComponent (line 54) | function SuccessComponent() {
function ErrorComponent (line 131) | function ErrorComponent() {
function SuccessComponent (line 208) | function SuccessComponent() {
FILE: packages/preact-query/src/__tests__/ssr.test.tsx
function Page (line 36) | function Page() {
function Page (line 81) | function Page() {
function Page (line 111) | function Page() {
function Page (line 141) | function Page() {
function Page (line 162) | function Page() {
FILE: packages/preact-query/src/__tests__/suspense.test.tsx
function renderWithSuspense (line 11) | function renderWithSuspense(client: QueryClient, ui: ComponentChildren) {
function createTestQuery (line 19) | function createTestQuery(options: {
FILE: packages/preact-query/src/__tests__/useInfiniteQuery.test.tsx
type Result (line 23) | interface Result {
function Page (line 70) | function Page() {
function Page (line 164) | function Page() {
function Page (line 204) | function Page() {
function Page (line 293) | function Page() {
function Page (line 332) | function Page() {
function Page (line 378) | function Page() {
function Page (line 434) | function Page() {
function Page (line 511) | function Page() {
function Page (line 623) | function Page() {
function Page (line 716) | function Page() {
function Page (line 802) | function Page() {
function Page (line 891) | function Page() {
function Page (line 951) | function Page() {
function Page (line 1026) | function Page() {
function Page (line 1078) | function Page() {
function List (line 1128) | function List() {
function Page (line 1146) | function Page() {
function Page (line 1175) | function Page() {
function Page (line 1231) | function Page() {
function Page (line 1269) | function Page() {
function Page (line 1308) | function Page() {
function Page (line 1347) | function Page() {
function Page (line 1400) | function Page() {
function Page (line 1524) | function Page() {
function Inner (line 1648) | function Inner() {
function Page (line 1662) | function Page() {
function Page (line 1688) | function Page() {
FILE: packages/preact-query/src/__tests__/useIsFetching.test.tsx
function IsFetching (line 23) | function IsFetching() {
function Query (line 29) | function Query() {
function Page (line 41) | function Page() {
function IsFetching (line 69) | function IsFetching() {
function FirstQuery (line 77) | function FirstQuery() {
function SecondQuery (line 86) | function SecondQuery() {
function Page (line 95) | function Page() {
function One (line 137) | function One() {
function Two (line 146) | function Two() {
function Page (line 155) | function Page() {
function Page (line 193) | function Page() {
function Page (line 222) | function Page() {
FILE: packages/preact-query/src/__tests__/useMutation.test.tsx
function Page (line 35) | function Page() {
function Page (line 67) | function Page() {
function Page (line 107) | function Page() {
type Value (line 152) | type Value = { count: number }
function Page (line 165) | function Page() {
function Page (line 209) | function Page() {
function Page (line 270) | function Page() {
function Page (line 320) | function Page() {
function Page (line 380) | function Page() {
function Page (line 409) | function Page() {
function Page (line 440) | function Page() {
function Page (line 494) | function Page() {
function Page (line 553) | function Page() {
function Page (line 609) | function Page() {
function Mutates (line 674) | function Mutates() {
function Page (line 678) | function Page() {
function Page (line 700) | function Page() {
function Page (line 743) | function Page() {
function Page (line 807) | function Page() {
function Page (line 855) | function Page() {
function Component (line 865) | function Component() {
function Page (line 926) | function Page() {
function Page (line 1034) | function Page() {
function Page (line 1080) | function Page() {
function Page (line 1126) | function Page() {
function Page (line 1166) | function Page() {
FILE: packages/preact-query/src/__tests__/useMutationState.test.tsx
function IsMutating (line 22) | function IsMutating() {
function Mutations (line 30) | function Mutations() {
function Page (line 48) | function Page() {
function IsMutating (line 83) | function IsMutating() {
function Page (line 89) | function Page() {
function IsMutating (line 117) | function IsMutating() {
function Page (line 126) | function Page() {
function Page (line 153) | function Page() {
function Variables (line 195) | function Variables() {
function Mutate (line 206) | function Mutate() {
function Page (line 220) | function Page() {
FILE: packages/preact-query/src/__tests__/usePrefetchInfiniteQuery.test.tsx
function Suspended (line 60) | function Suspended<T = unknown>(props: {
function App (line 98) | function App() {
function App (line 141) | function App() {
function Prefetch (line 175) | function Prefetch({ children }: { children: VNode }) {
function App (line 180) | function App() {
FILE: packages/preact-query/src/__tests__/usePrefetchQuery.test.tsx
function Suspended (line 39) | function Suspended<TData = unknown>(props: {
function App (line 64) | function App() {
function App (line 87) | function App() {
function App (line 125) | function App() {
function Prefetch (line 157) | function Prefetch({ children }: { children: VNode }) {
function App (line 162) | function App() {
function App (line 194) | function App() {
function App (line 249) | function App() {
FILE: packages/preact-query/src/__tests__/useQueries.test-d.tsx
type Data (line 107) | type Data = string
FILE: packages/preact-query/src/__tests__/useQueries.test.tsx
function Page (line 50) | function Page() {
function Page (line 97) | function Page() {
function Page (line 146) | function Page() {
function Page (line 251) | function Page() {
function Page (line 390) | function Page() {
type BizError (line 426) | type BizError = { code: number }
function Page (line 430) | function Page() {
type QueryKeyA (line 703) | type QueryKeyA = ['queryA']
type GetQueryFunctionA (line 705) | type GetQueryFunctionA = () => QueryFunction<number, QueryKeyA>
type SelectorA (line 709) | type SelectorA = (data: number) => [number, string]
type QueryKeyB (line 712) | type QueryKeyB = ['queryB', string]
type GetQueryFunctionB (line 714) | type GetQueryFunctionB = () => QueryFunction<string, QueryKeyB>
type SelectorB (line 718) | type SelectorB = (data: string) => [string, number]
function useWrappedQueries (line 722) | function useWrappedQueries<
function Page (line 755) | function Page() {
function Page (line 815) | function Page() {
function Page (line 881) | function Page() {
function Page (line 946) | function Page() {
function Page (line 972) | function Page() {
function Page (line 1017) | function Page() {
function Page (line 1068) | function Page() {
function Page (line 1089) | function Page() {
function Page (line 1133) | function Page() {
function Page (line 1234) | function Page() {
function Page (line 1274) | function Page() {
function Page (line 1324) | function Page() {
function Page (line 1408) | function Page() {
function Page (line 1479) | function Page() {
function Page (line 1533) | function Page() {
function Page (line 1595) | function Page() {
function Page (line 1672) | function Page() {
function Page (line 1750) | function Page() {
function Page (line 1823) | function Page() {
function Page (line 1879) | function Page() {
FILE: packages/preact-query/src/__tests__/useQuery.test-d.tsx
function queryFn (line 61) | function queryFn<T = string>(): Promise<T> {
type MyData (line 81) | type MyData = number
type MyQueryKey (line 82) | type MyQueryKey = readonly ['my-data', number]
type Data (line 310) | type Data = string
FILE: packages/preact-query/src/__tests__/useQuery.test.tsx
function Page (line 57) | function Page() {
function Page (line 82) | function Page() {
function Page (line 178) | function Page() {
function Page (line 302) | function Page() {
function Page (line 332) | function Page() {
function Page (line 367) | function Page() {
function Page (line 402) | function Page() {
function Page (line 438) | function Page() {
function Page (line 456) | function Page() {
function Component (line 471) | function Component({ value }: { value: string }) {
function Page (line 531) | function Page() {
function Page (line 604) | function Page() {
function Page (line 628) | function Page() {
function Page (line 648) | function Page() {
function Page (line 673) | function Page() {
function Page (line 699) | function Page() {
function Page (line 728) | function Page() {
function Page (line 766) | function Page() {
function Page (line 807) | function Page() {
function Page (line 837) | function Page() {
function Page (line 885) | function Page() {
function Page (line 947) | function Page() {
function Page (line 1002) | function Page() {
function Page (line 1038) | function Page() {
function Page (line 1084) | function Page() {
function Page (line 1124) | function Page() {
function Page (line 1161) | function Page() {
function Page (line 1221) | function Page() {
function Page (line 1287) | function Page() {
function Page (line 1359) | function Page() {
function Page (line 1414) | function Page() {
function Page (line 1500) | function Page({ count }: { count: number }) {
function Page (line 1591) | function Page() {
function Page (line 1663) | function Page() {
function Page (line 1761) | function Page() {
function FirstComponent (line 1841) | function FirstComponent() {
function SecondComponent (line 1862) | function SecondComponent() {
function Page (line 1867) | function Page() {
function FirstComponent (line 1915) | function FirstComponent() {
function SecondComponent (line 1929) | function SecondComponent() {
function Page (line 1943) | function Page() {
function Page (line 2005) | function Page() {
function UserInfo (line 2061) | function UserInfo({ id }: { id: number | null }) {
function Page (line 2092) | function Page() {
function Page (line 2131) | function Page() {
function Page (line 2188) | function Page() {
function Page (line 2241) | function Page() {
function Page (line 2346) | function Page() {
function Page (line 2387) | function Page() {
function Page (line 2408) | function Page() {
function Page (line 2432) | function Page() {
function Page (line 2456) | function Page() {
function Page (line 2506) | function Page() {
function Page (line 2529) | function Page() {
function Page (line 2560) | function Page() {
function Page (line 2591) | function Page() {
function Page (line 2622) | function Page() {
function Page (line 2653) | function Page() {
function Page (line 2692) | function Page() {
function Page (line 2749) | function Page() {
function Page (line 2788) | function Page() {
function Page (line 2822) | function Page() {
function Page (line 2853) | function Page() {
function Page (line 2886) | function Page() {
function Page (line 2911) | function Page() {
function Page (line 2947) | function Page() {
function Page (line 2988) | function Page() {
function App (line 3010) | function App() {
function Page (line 3043) | function Page() {
function App (line 3065) | function App() {
function Page (line 3107) | function Page() {
function Page (line 3152) | function Page() {
function Page (line 3184) | function Page() {
function Page (line 3218) | function Page() {
function Page (line 3256) | function Page() {
function Page (line 3289) | function Page() {
function Page (line 3327) | function Page() {
function Page (line 3370) | function Page() {
type DelayError (line 3405) | type DelayError = { delay: number }
function Page (line 3412) | function Page() {
function Page (line 3451) | function Page() {
function Page (line 3519) | function Page() {
function Page (line 3554) | function Page() {
function Page (line 3627) | function Page() {
function Page (line 3663) | function Page() {
function Page (line 3682) | function Page() {
function Page (line 3719) | function Page() {
function Page (line 3769) | function Page() {
function Page (line 3810) | function Page() {
function Page (line 3838) | function Page() {
function Page (line 3867) | function Page() {
function Page (line 3921) | function Page() {
function Page (line 3972) | function Page() {
function Page (line 3992) | function Page() {
function Page (line 4017) | function Page() {
function Page (line 4040) | function Page() {
function Page (line 4071) | function Page() {
function Page (line 4119) | function Page() {
function Page (line 4152) | function Page() {
function Page (line 4219) | function Page() {
function Page (line 4240) | function Page() {
function Page (line 4255) | function Page() {
function Disabled (line 4276) | function Disabled() {
function Page (line 4281) | function Page() {
function Page (line 4306) | function Page() {
function Page (line 4346) | function Page() {
function Page (line 4407) | function Page() {
function Page (line 4449) | function Page() {
function Page (line 4502) | function Page() {
function Page (line 4547) | function Page() {
function Page (line 4601) | function Page() {
function Page (line 4659) | function Page() {
function Page (line 4694) | function Page(props: { limit: number }) {
function Page (line 4755) | function Page() {
function Page (line 4802) | function Page() {
function Page (line 4873) | function Page() {
function queryKeyHashFn (line 4952) | function queryKeyHashFn(x: any) {
function Page (line 4957) | function Page() {
function queryKeyHashFn (line 4976) | function queryKeyHashFn(x: any) {
function Page (line 4983) | function Page() {
function Page (line 5003) | function Page({ enabled }: { enabled: boolean }) {
function App (line 5023) | function App() {
function Page (line 5058) | function Page({ id }: { id: number }) {
function App (line 5084) | function App() {
function Page (line 5118) | function Page({ id }: { id: boolean }) {
function App (line 5140) | function App() {
function Page (line 5182) | function Page() {
function Page (line 5255) | function Page() {
function Page (line 5297) | function Page() {
function Page (line 5360) | function Page() {
function Page (line 5408) | function Page() {
function Page (line 5454) | function Page() {
function Page (line 5502) | function Page() {
function Page (line 5562) | function Page() {
function Component (line 5616) | function Component() {
function Page (line 5636) | function Page() {
function Component (line 5675) | function Component() {
function Page (line 5695) | function Page() {
function Page (line 5732) | function Page() {
function Component (line 5787) | function Component() {
function Page (line 5806) | function Page() {
function Page (line 5859) | function Page() {
function Page (line 5895) | function Page() {
function Page (line 5939) | function Page() {
function Page (line 5989) | function Page() {
function Page (line 6033) | function Page() {
function Page (line 6061) | function Page() {
function Page (line 6103) | function Page() {
function Page (line 6131) | function Page() {
function Page (line 6164) | function Page() {
function Page (line 6199) | function Page() {
function Page (line 6220) | function Page() {
function fetchNumber (line 6256) | async function fetchNumber(id: number) {
function Test (line 6260) | function Test() {
function selector (line 6286) | function selector(data: any) {
function fetchNumber (line 6321) | async function fetchNumber(id: number) {
function Test (line 6325) | function Test() {
function selector (line 6352) | function selector(data: any) {
function Test (line 6388) | function Test() {
function Page (line 6413) | function Page() {
function Page (line 6517) | function Page() {
function Page (line 6531) | function Page({ enabled }: { enabled: boolean }) {
function App (line 6555) | function App() {
function App (line 6582) | function App() {
function Page (line 6613) | function Page() {
function App (line 6636) | function App() {
function Page (line 6728) | function Page() {
function Page (line 6786) | function Page() {
function Example (line 6830) | function Example() {
function Page (line 6850) | function Page() {
FILE: packages/preact-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx
function Page (line 23) | function Page() {
function App (line 35) | function App() {
function Page (line 60) | function Page() {
function Page (line 95) | function Page() {
FILE: packages/preact-query/src/__tests__/useSuspenseQueries.test-d.tsx
type Data (line 140) | type Data = string
method select (line 185) | select(data: boolean) {
method select (line 249) | select(data: string) {
FILE: packages/preact-query/src/__tests__/useSuspenseQueries.test.tsx
type NumberQueryOptions (line 27) | type NumberQueryOptions = UseSuspenseQueryOptions<number>
constant QUERY_DURATION (line 29) | const QUERY_DURATION = 1000
function SuspenseFallback (line 59) | function SuspenseFallback() {
function SuspendedComponent (line 70) | function SuspendedComponent(props: T) {
function QueriesContainer (line 81) | function QueriesContainer({
function Page (line 160) | function Page() {
function getUserData (line 197) | function getUserData() {
function getName (line 207) | function getName() {
function getAge (line 214) | function getAge() {
function App (line 221) | function App() {
function Fallback (line 279) | function Fallback() {
function Page (line 284) | function Page() {
function Fallback (line 333) | function Fallback() {
function Page (line 338) | function Page() {
function Page (line 389) | function Page({ id }: { id: number }) {
function TestApp (line 403) | function TestApp() {
function Page (line 450) | function Page({ fail }: { fail: boolean }) {
function TestApp (line 464) | function TestApp() {
function Page (line 500) | function Page({ count, isPending }: { count: number; isPending: boolean ...
function TestApp (line 509) | function TestApp() {
function App (line 542) | function App() {
function Page (line 557) | function Page({ count }: { count: number }) {
function Page (line 601) | function Page({ count, isPending }: { count: number; isPending: boolean ...
function TestApp (line 614) | function TestApp() {
function Page (line 653) | function Page() {
function App (line 668) | function App() {
function Page (line 705) | function Page() {
function Component (line 713) | function Component() {
function Page2 (line 723) | function Page2() {
function App (line 727) | function App() {
function Page (line 759) | function Page() {
function App (line 773) | function App() {
function Page (line 798) | function Page() {
function Page (line 834) | function Page() {
function Page (line 865) | function Page() {
function Page (line 918) | function Page() {
function Page (line 975) | function Page() {
function Page (line 1023) | function Page() {
FILE: packages/preact-query/src/__tests__/useSuspenseQuery.test.tsx
function TestApp (line 48) | function TestApp() {
function Page (line 62) | function Page({ stateKey }: { stateKey: Array<string> }) {
function Page (line 100) | function Page({ multiplier }: { multiplier: number }) {
function TestApp (line 114) | function TestApp() {
function Page (line 156) | function Page() {
function Page (line 179) | function Page() {
function App (line 188) | function App() {
function Page (line 235) | function Page() {
function Page (line 302) | function Page() {
function Component (line 367) | function Component() {
function Page (line 380) | function Page() {
function Component (line 406) | function Component(props: { queryKey: Array<string> }) {
function Page (line 415) | function Page() {
function Page (line 453) | function Page() {
function App (line 466) | function App() {
function Page (line 520) | function Page() {
function App (line 530) | function App() {
function Page (line 561) | function Page() {
function App (line 572) | function App() {
function Page (line 603) | function Page({ succeed }: { succeed: boolean }) {
function App (line 622) | function App() {
function Child (line 682) | function Child({ keyVal }: { keyVal: number }) {
function Page (line 706) | function Page() {
function App (line 721) | function App() {
function Page (line 765) | function Page() {
function Page (line 806) | function Page() {
function App (line 827) | function App() {
function TestApp (line 874) | function TestApp() {
function Page (line 888) | function Page({ stateKey }: { stateKey: Array<string> }) {
function Page (line 917) | function Page() {
function App (line 928) | function App() {
function Page (line 948) | function Page() {
function Page (line 991) | function Page() {
function Page (line 1024) | function Page() {
FILE: packages/preact-query/src/__tests__/utils.tsx
function renderWithClient (line 11) | function renderWithClient(
function Blink (line 27) | function Blink({
function mockOnlineManagerIsOnline (line 47) | function mockOnlineManagerIsOnline(
function setActTimeout (line 53) | function setActTimeout(fn: () => void, ms?: number) {
function setIsServer (line 61) | function setIsServer(value: boolean) {
FILE: packages/preact-query/src/infiniteQueryOptions.ts
type UndefinedInitialDataInfiniteOptions (line 14) | type UndefinedInitialDataInfiniteOptions<
type UnusedSkipTokenInfiniteOptions (line 35) | type UnusedSkipTokenInfiniteOptions<
type DefinedInitialDataInfiniteOptions (line 57) | type DefinedInitialDataInfiniteOptions<
function infiniteQueryOptions (line 148) | function infiniteQueryOptions(options: unknown) {
FILE: packages/preact-query/src/mutationOptions.ts
function mutationOptions (line 33) | function mutationOptions<
FILE: packages/preact-query/src/queryOptions.ts
type UndefinedInitialDataOptions (line 14) | type UndefinedInitialDataOptions<
type UnusedSkipTokenOptions (line 26) | type UnusedSkipTokenOptions<
type DefinedInitialDataOptions (line 41) | type DefinedInitialDataOptions<
function queryOptions (line 86) | function queryOptions(options: unknown) {
FILE: packages/preact-query/src/types.ts
type AnyUseBaseQueryOptions (line 21) | type AnyUseBaseQueryOptions = UseBaseQueryOptions<
type UseBaseQueryOptions (line 28) | interface UseBaseQueryOptions<
type UsePrefetchQueryOptions (line 48) | interface UsePrefetchQueryOptions<
type AnyUseQueryOptions (line 63) | type AnyUseQueryOptions = UseQueryOptions<any, any, any, any>
type UseQueryOptions (line 64) | interface UseQueryOptions<
type AnyUseSuspenseQueryOptions (line 74) | type AnyUseSuspenseQueryOptions = UseSuspenseQueryOptions<
type UseSuspenseQueryOptions (line 80) | interface UseSuspenseQueryOptions<
type AnyUseInfiniteQueryOptions (line 95) | type AnyUseInfiniteQueryOptions = UseInfiniteQueryOptions<
type UseInfiniteQueryOptions (line 102) | interface UseInfiniteQueryOptions<
type AnyUseSuspenseInfiniteQueryOptions (line 125) | type AnyUseSuspenseInfiniteQueryOptions =
type UseSuspenseInfiniteQueryOptions (line 127) | interface UseSuspenseInfiniteQueryOptions<
type UseBaseQueryResult (line 149) | type UseBaseQueryResult<
type UseQueryResult (line 154) | type UseQueryResult<
type UseSuspenseQueryResult (line 159) | type UseSuspenseQueryResult<
type DefinedUseQueryResult (line 167) | type DefinedUseQueryResult<
type UseInfiniteQueryResult (line 172) | type UseInfiniteQueryResult<
type DefinedUseInfiniteQueryResult (line 177) | type DefinedUseInfiniteQueryResult<
type UseSuspenseInfiniteQueryResult (line 182) | type UseSuspenseInfiniteQueryResult<
type AnyUseMutationOptions (line 190) | type AnyUseMutationOptions = UseMutationOptions<any, any, any, any>
type UseMutationOptions (line 191) | interface UseMutationOptions<
type UseMutateFunction (line 201) | type UseMutateFunction<
type UseMutateAsyncFunction (line 212) | type UseMutateAsyncFunction<
type UseBaseMutationResult (line 219) | type UseBaseMutationResult<
type UseMutationResult (line 236) | type UseMutationResult<
FILE: packages/preact-query/src/useBaseQuery.ts
function useBaseQuery (line 27) | function useBaseQuery<
FILE: packages/preact-query/src/useInfiniteQuery.ts
function useInfiniteQuery (line 72) | function useInfiniteQuery(
FILE: packages/preact-query/src/useIsFetching.ts
function useIsFetching (line 8) | function useIsFetching(
FILE: packages/preact-query/src/useMutation.ts
function useMutation (line 20) | function useMutation<
FILE: packages/preact-query/src/useMutationState.ts
function useIsMutating (line 14) | function useIsMutating(
type MutationStateOptions (line 25) | type MutationStateOptions<TResult = MutationState> = {
function getResult (line 30) | function getResult<TResult = MutationState>(
function useMutationState (line 42) | function useMutationState<TResult = MutationState>(
FILE: packages/preact-query/src/usePrefetchInfiniteQuery.tsx
function usePrefetchInfiniteQuery (line 10) | function usePrefetchInfiniteQuery<
FILE: packages/preact-query/src/usePrefetchQuery.tsx
function usePrefetchQuery (line 6) | function usePrefetchQuery<
FILE: packages/preact-query/src/useQueries.ts
type UseQueryOptionsForUseQueries (line 42) | type UseQueryOptionsForUseQueries<
type MAXIMUM_DEPTH (line 55) | type MAXIMUM_DEPTH = 20
type SkipTokenForUseQueries (line 58) | type SkipTokenForUseQueries = symbol
type GetUseQueryOptionsForUseQueries (line 60) | type GetUseQueryOptionsForUseQueries<T> =
type GetDefinedOrUndefinedQueryResult (line 97) | type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T ex...
type GetUseQueryResult (line 113) | type GetUseQueryResult<T> =
type QueriesOptions (line 147) | type QueriesOptions<
type QueriesResults (line 189) | type QueriesResults<
function useQueries (line 207) | function useQueries<
FILE: packages/preact-query/src/useQuery.ts
function useQuery (line 50) | function useQuery(options: UseQueryOptions, queryClient?: QueryClient) {
FILE: packages/preact-query/src/useSuspenseInfiniteQuery.ts
function useSuspenseInfiniteQuery (line 18) | function useSuspenseInfiniteQuery<
FILE: packages/preact-query/src/useSuspenseQueries.ts
type MAXIMUM_DEPTH (line 14) | type MAXIMUM_DEPTH = 20
type SkipTokenForUseQueries (line 17) | type SkipTokenForUseQueries = symbol
type GetUseSuspenseQueryOptions (line 19) | type GetUseSuspenseQueryOptions<T> =
type GetUseSuspenseQueryResult (line 67) | type GetUseSuspenseQueryResult<T> =
type SuspenseQueriesOptions (line 110) | type SuspenseQueriesOptions<
type SuspenseQueriesResults (line 147) | type SuspenseQueriesResults<
function useSuspenseQueries (line 189) | function useSuspenseQueries(options: any, queryClient?: QueryClient) {
FILE: packages/preact-query/src/useSuspenseQuery.ts
function useSuspenseQuery (line 8) | function useSuspenseQuery<
FILE: packages/preact-query/src/utils.ts
type InternalStore (line 9) | type InternalStore = {
type StoreRef (line 13) | type StoreRef = {
function useSyncExternalStore (line 16) | function useSyncExternalStore(
function didSnapshotChange (line 50) | function didSnapshotChange(inst: {
function useSyncExternalStoreWithSelector (line 65) | function useSyncExternalStoreWithSelector<TSnapshot, TSelected>(
FILE: packages/query-async-storage-persister/src/asyncThrottle.ts
type AsyncThrottleOptions (line 4) | interface AsyncThrottleOptions {
function asyncThrottle (line 9) | function asyncThrottle<TArgs extends ReadonlyArray<unknown>>(
FILE: packages/query-async-storage-persister/src/index.ts
type AsyncPersistRetryer (line 11) | type AsyncPersistRetryer = (props: {
type CreateAsyncStoragePersisterOptions (line 17) | interface CreateAsyncStoragePersisterOptions {
FILE: packages/query-async-storage-persister/src/utils.ts
function noop (line 3) | function noop() {}
FILE: packages/query-broadcast-client-experimental/src/index.ts
type BroadcastQueryClientOptions (line 5) | interface BroadcastQueryClientOptions {
function broadcastQueryClient (line 11) | function broadcastQueryClient({
FILE: packages/query-codemods/src/v4/__testfixtures__/type-arguments.input.tsx
type Todos (line 4) | type Todos = {
FILE: packages/query-codemods/src/v4/__testfixtures__/type-arguments.output.tsx
type Todos (line 4) | type Todos = {
FILE: packages/query-codemods/src/v4/utils/replacers/key-replacer.cjs
class UnprocessableKeyError (line 1) | class UnprocessableKeyError extends Error {
method constructor (line 2) | constructor(message) {
FILE: packages/query-codemods/src/v5/is-loading/__testfixtures__/default-import.input.tsx
function useSomethingElse (line 57) | function useSomethingElse() {
function useAnotherThing (line 66) | function useAnotherThing() {
FILE: packages/query-codemods/src/v5/is-loading/__testfixtures__/default-import.output.tsx
function useSomethingElse (line 57) | function useSomethingElse() {
function useAnotherThing (line 66) | function useAnotherThing() {
FILE: packages/query-codemods/src/v5/is-loading/__testfixtures__/named-import.input.tsx
function useSomethingElse (line 57) | function useSomethingElse() {
function useAnotherThing (line 66) | function useAnotherThing() {
FILE: packages/query-codemods/src/v5/is-loading/__testfixtures__/named-import.output.tsx
function useSomethingElse (line 57) | function useSomethingElse() {
function useAnotherThing (line 66) | function useAnotherThing() {
FILE: packages/query-codemods/src/v5/keep-previous-data/__testfixtures__/default.input.tsx
type Post (line 5) | type Post = {
FILE: packages/query-codemods/src/v5/keep-previous-data/__testfixtures__/default.output.tsx
type Post (line 5) | type Post = {
FILE: packages/query-codemods/src/v5/keep-previous-data/__testfixtures__/named.input.tsx
type Post (line 10) | type Post = {
FILE: packages/query-codemods/src/v5/keep-previous-data/__testfixtures__/named.output.tsx
type Post (line 11) | type Post = {
FILE: packages/query-codemods/src/v5/keep-previous-data/utils/already-has-placeholder-data-property.cjs
class AlreadyHasPlaceholderDataProperty (line 1) | class AlreadyHasPlaceholderDataProperty extends Error {
method constructor (line 6) | constructor(callExpression, filePath) {
method buildMessage (line 17) | buildMessage(callExpression, filePath) {
FILE: packages/query-codemods/src/v5/remove-overloads/__testfixtures__/bug-reports.input.tsx
function useDetails (line 2) | function useDetails({ groupId }: { groupId?: string }): any {
function useDetailsContainsIdentifierAsThirdArgument (line 12) | function useDetailsContainsIdentifierAsThirdArgument({ groupId }: { grou...
function useWhatever (line 21) | function useWhatever({ thing }: { thing: string }) {
function useDeleteSomething (line 30) | function useDeleteSomething(): any {
function useDeleteSomethingWithOnError (line 39) | function useDeleteSomethingWithOnError(): any {
FILE: packages/query-codemods/src/v5/remove-overloads/__testfixtures__/bug-reports.output.tsx
function useDetails (line 2) | function useDetails({ groupId }: { groupId?: string }): any {
function useDetailsContainsIdentifierAsThirdArgument (line 14) | function useDetailsContainsIdentifierAsThirdArgument({ groupId }: { grou...
function useWhatever (line 27) | function useWhatever({ thing }: { thing: string }) {
function useDeleteSomething (line 36) | function useDeleteSomething(): any {
function useDeleteSomethingWithOnError (line 47) | function useDeleteSomethingWithOnError(): any {
FILE: packages/query-codemods/src/v5/remove-overloads/utils/unknown-usage-error.cjs
class UnknownUsageError (line 1) | class UnknownUsageError extends Error {
method constructor (line 6) | constructor(callExpression, filePath) {
method buildMessage (line 18) | buildMessage(callExpression, filePath) {
FILE: packages/query-codemods/src/v5/rename-hydrate/__testfixtures__/default-import.input.tsx
function MyApp (line 9) | function MyApp({ Component, pageProps }) {
FILE: packages/query-codemods/src/v5/rename-hydrate/__testfixtures__/default-import.output.tsx
function MyApp (line 9) | function MyApp({ Component, pageProps }) {
FILE: packages/query-codemods/src/v5/rename-hydrate/__testfixtures__/named-import.input.tsx
function MyApp (line 9) | function MyApp({ Component, pageProps }) {
FILE: packages/query-codemods/src/v5/rename-hydrate/__testfixtures__/named-import.output.tsx
function MyApp (line 9) | function MyApp({ Component, pageProps }) {
FILE: packages/query-codemods/src/v5/rename-properties/__testfixtures__/rename-cache-time.input.tsx
type UseAlgoliaOptionsButWithStringLiterals (line 6) | type UseAlgoliaOptionsButWithStringLiterals = {
type UseAlgoliaOptions (line 16) | type UseAlgoliaOptions = {
function useAlgolia (line 26) | function useAlgolia<TData>({
FILE: packages/query-codemods/src/v5/rename-properties/__testfixtures__/rename-cache-time.output.tsx
type UseAlgoliaOptionsButWithStringLiterals (line 6) | type UseAlgoliaOptionsButWithStringLiterals = {
type UseAlgoliaOptions (line 16) | type UseAlgoliaOptions = {
function useAlgolia (line 26) | function useAlgolia<TData>({
FILE: packages/query-codemods/src/v5/rename-properties/__testfixtures__/rename-use-error-boundary.input.tsx
type Type1 (line 4) | type Type1 = {
type Type2 (line 9) | type Type2 = {
function useSomething (line 14) | function useSomething() {
FILE: packages/query-codemods/src/v5/rename-properties/__testfixtures__/rename-use-error-boundary.output.tsx
type Type1 (line 4) | type Type1 = {
type Type2 (line 9) | type Type2 = {
function useSomething (line 14) | function useSomething() {
FILE: packages/query-core/src/__tests__/OmitKeyof.test-d.ts
type A (line 6) | type A = {
type ExpectedType (line 11) | type ExpectedType = {
type A (line 61) | type A = {
type ExpectedType (line 66) | type ExpectedType = {
type A (line 120) | type A = {
type ExpectedType (line 125) | type ExpectedType = {
FILE: packages/query-core/src/__tests__/infiniteQueryBehavior.test.tsx
type TestResponse (line 339) | interface TestResponse {
FILE: packages/query-core/src/__tests__/query.test.tsx
method foo (line 1100) | get foo(): void {
FILE: packages/query-core/src/__tests__/queryClient.test-d.tsx
type CustomError (line 149) | type CustomError = Error & { customError: string }
type TData (line 223) | type TData = { foo: string }
type TError (line 224) | type TError = DefaultError & { bar: string }
method predicate (line 246) | predicate(query) {
method predicate (line 258) | predicate(mutation) {
type SetQueryDataUpdaterArg (line 286) | type SetQueryDataUpdaterArg = Parameters<
type SetQueriesDataUpdaterArg (line 296) | type SetQueriesDataUpdaterArg = Parameters<
method onSettled (line 338) | onSettled(data, error, variables, context) {
method predicate (line 387) | predicate(query) {
method predicate (line 397) | predicate(mutation) {
type SetQueryDataUpdaterArg (line 425) | type SetQueryDataUpdaterArg = Parameters<
type SetQueriesDataUpdaterArg (line 435) | type SetQueriesDataUpdaterArg = Parameters<
method onSettled (line 483) | onSettled(data, error, variables, context) {
type SuccessCallback (line 601) | type SuccessCallback = () => unknown
FILE: packages/query-core/src/__tests__/queryClient.test.tsx
type StrictData (line 620) | type StrictData = 'data'
type StrictQueryKey (line 621) | type StrictQueryKey = ['strict', ...ReturnType<typeof queryKey>]
type StrictData (line 794) | type StrictData = string
type StrictQueryKey (line 795) | type StrictQueryKey = ['strict', ...ReturnType<typeof queryKey>]
type StrictData (line 838) | type StrictData = 'data'
type StrictQueryKey (line 839) | type StrictQueryKey = ['strict', ...ReturnType<typeof queryKey>]
type StrictData (line 927) | type StrictData = 'data'
type StrictQueryKey (line 928) | type StrictQueryKey = ['strict', ...ReturnType<typeof queryKey>]
FILE: packages/query-core/src/__tests__/queryObserver.test-d.tsx
class CustomError (line 120) | class CustomError extends Error {
FILE: packages/query-core/src/__tests__/streamedQuery.test.tsx
function createAsyncNumberGenerator (line 20) | function createAsyncNumberGenerator(amount: number, start = 0) {
FILE: packages/query-core/src/__tests__/timeoutManager.test.tsx
function createMockProvider (line 11) | function createMockProvider(name: string = 'custom') {
FILE: packages/query-core/src/__tests__/utils.test-d.tsx
type TData (line 8) | type TData = { a: number; b: string }
type TError (line 9) | type TError = Error & { message: string }
method predicate (line 12) | predicate(query) {
method predicate (line 30) | predicate(query) {
type Key (line 79) | type Key =
FILE: packages/query-core/src/__tests__/utils.test.tsx
class Foo (line 81) | class Foo {
method constructor (line 83) | constructor() {
function Graph (line 91) | function Graph(this: any) {
FILE: packages/query-core/src/__tests__/utils.ts
function mockOnlineManagerIsOnline (line 6) | function mockOnlineManagerIsOnline(
function executeMutation (line 12) | function executeMutation<TVariables>(
function setIsServer (line 23) | function setIsServer(value: boolean) {
FILE: packages/query-core/src/environmentManager.ts
type IsServerValue (line 3) | type IsServerValue = () => boolean
method isServer (line 15) | isServer(): boolean {
method setIsServer (line 21) | setIsServer(isServerValue: IsServerValue): void {
FILE: packages/query-core/src/focusManager.ts
type Listener (line 3) | type Listener = (focused: boolean) => void
type SetupFn (line 5) | type SetupFn = (
class FocusManager (line 9) | class FocusManager extends Subscribable<Listener> {
method constructor (line 15) | constructor() {
method onSubscribe (line 34) | protected onSubscribe(): void {
method onUnsubscribe (line 40) | protected onUnsubscribe() {
method setEventListener (line 47) | setEventListener(setup: SetupFn): void {
method setFocused (line 59) | setFocused(focused?: boolean): void {
method onFocus (line 67) | onFocus(): void {
method isFocused (line 74) | isFocused(): boolean {
FILE: packages/query-core/src/hydration.ts
type TransformerFn (line 18) | type TransformerFn = (data: any) => any
function defaultTransformerFn (line 19) | function defaultTransformerFn(data: any): any {
type DehydrateOptions (line 23) | interface DehydrateOptions {
type HydrateOptions (line 30) | interface HydrateOptions {
type DehydratedMutation (line 38) | interface DehydratedMutation {
type DehydratedQuery (line 45) | interface DehydratedQuery {
type DehydratedState (line 57) | interface DehydratedState {
function dehydrateMutation (line 64) | function dehydrateMutation(mutation: Mutation): DehydratedMutation {
function dehydrateQuery (line 77) | function dehydrateQuery(
function defaultShouldDehydrateMutation (line 123) | function defaultShouldDehydrateMutation(mutation: Mutation) {
function defaultShouldDehydrateQuery (line 127) | function defaultShouldDehydrateQuery(query: Query) {
function defaultShouldRedactErrors (line 131) | function defaultShouldRedactErrors(_: unknown) {
function dehydrate (line 135) | function dehydrate(
function hydrate (line 178) | function hydrate(
FILE: packages/query-core/src/infiniteQueryBehavior.ts
function infiniteQueryBehavior (line 16) | function infiniteQueryBehavior<TQueryFnData, TError, TData, TPageParam>(
function getNextPageParam (line 132) | function getNextPageParam(
function getPreviousPageParam (line 147) | function getPreviousPageParam(
function hasNextPage (line 159) | function hasNextPage(
function hasPreviousPage (line 170) | function hasPreviousPage(
FILE: packages/query-core/src/infiniteQueryObserver.ts
type InfiniteQueryObserverListener (line 22) | type InfiniteQueryObserverListener<TData, TError> = (
class InfiniteQueryObserver (line 26) | class InfiniteQueryObserver<
method constructor (line 68) | constructor(
method bindMethods (line 81) | protected bindMethods(): void {
method setOptions (line 87) | setOptions(
method getOptimisticResult (line 102) | getOptimisticResult(
method fetchNextPage (line 118) | fetchNextPage(
method fetchPreviousPage (line 129) | fetchPreviousPage(
method createResult (line 140) | protected createResult(
type ReplaceReturnType (line 187) | type ReplaceReturnType<
FILE: packages/query-core/src/mutation.ts
type MutationConfig (line 18) | interface MutationConfig<TData, TError, TVariables, TOnMutateResult> {
type MutationState (line 26) | interface MutationState<
type FailedAction (line 43) | interface FailedAction<TError> {
type PendingAction (line 49) | interface PendingAction<TVariables, TOnMutateResult> {
type SuccessAction (line 56) | interface SuccessAction<TData> {
type ErrorAction (line 61) | interface ErrorAction<TError> {
type PauseAction (line 66) | interface PauseAction {
type ContinueAction (line 70) | interface ContinueAction {
type Action (line 74) | type Action<TData, TError, TVariables, TOnMutateResult> =
class Mutation (line 84) | class Mutation<
method constructor (line 101) | constructor(
method setOptions (line 116) | setOptions(
method meta (line 124) | get meta(): MutationMeta | undefined {
method addObserver (line 128) | addObserver(observer: MutationObserver<any, any, any, any>): void {
method removeObserver (line 143) | removeObserver(observer: MutationObserver<any, any, any, any>): void {
method optionalRemove (line 155) | protected optionalRemove() {
method continue (line 165) | continue(): Promise<unknown> {
method execute (line 173) | async execute(variables: TVariables): Promise<TData> {
method #dispatch (line 331) | #dispatch(action: Action<TData, TError, TVariables, TOnMutateResult>):...
function getDefaultState (line 402) | function getDefaultState<
FILE: packages/query-core/src/mutationCache.ts
type MutationCacheConfig (line 18) | interface MutationCacheConfig {
type NotifyEventMutationAdded (line 48) | interface NotifyEventMutationAdded extends NotifyEvent {
type NotifyEventMutationRemoved (line 52) | interface NotifyEventMutationRemoved extends NotifyEvent {
type NotifyEventMutationObserverAdded (line 57) | interface NotifyEventMutationObserverAdded extends NotifyEvent {
type NotifyEventMutationObserverRemoved (line 63) | interface NotifyEventMutationObserverRemoved extends NotifyEvent {
type NotifyEventMutationObserverOptionsUpdated (line 69) | interface NotifyEventMutationObserverOptionsUpdated extends NotifyEvent {
type NotifyEventMutationUpdated (line 75) | interface NotifyEventMutationUpdated extends NotifyEvent {
type MutationCacheNotifyEvent (line 81) | type MutationCacheNotifyEvent =
type MutationCacheListener (line 89) | type MutationCacheListener = (event: MutationCacheNotifyEvent) => void
class MutationCache (line 93) | class MutationCache extends Subscribable<MutationCacheListener> {
method constructor (line 98) | constructor(public config: MutationCacheConfig = {}) {
method build (line 105) | build<TData, TError, TVariables, TOnMutateResult>(
method add (line 123) | add(mutation: Mutation<any, any, any, any>): void {
method remove (line 137) | remove(mutation: Mutation<any, any, any, any>): void {
method canRun (line 160) | canRun(mutation: Mutation<any, any, any, any>): boolean {
method runNext (line 177) | runNext(mutation: Mutation<any, any, any, any>): Promise<unknown> {
method clear (line 190) | clear(): void {
method getAll (line 200) | getAll(): Array<Mutation> {
method find (line 204) | find<
method findAll (line 219) | findAll(filters: MutationFilters = {}): Array<Mutation> {
method notify (line 223) | notify(event: MutationCacheNotifyEvent) {
method resumePausedMutations (line 231) | resumePausedMutations(): Promise<unknown> {
function scopeFor (line 242) | function scopeFor(mutation: Mutation<any, any, any, any>) {
FILE: packages/query-core/src/mutationObserver.ts
type MutationObserverListener (line 17) | type MutationObserverListener<TData, TError, TVariables, TOnMutateResult...
class MutationObserver (line 23) | class MutationObserver<
method constructor (line 43) | constructor(
method bindMethods (line 60) | protected bindMethods(): void {
method setOptions (line 65) | setOptions(
method onUnsubscribe (line 96) | protected onUnsubscribe(): void {
method onMutationUpdate (line 102) | onMutationUpdate(
method getCurrentResult (line 110) | getCurrentResult(): MutationObserverResult<
method reset (line 119) | reset(): void {
method mutate (line 128) | mutate(
method #updateResult (line 145) | #updateResult(): void {
method #notify (line 161) | #notify(action?: Action<TData, TError, TVariables, TOnMutateResult>): ...
FILE: packages/query-core/src/notifyManager.ts
type NotifyCallback (line 5) | type NotifyCallback = () => void
type NotifyFunction (line 7) | type NotifyFunction = (callback: () => void) => void
type BatchNotifyFunction (line 9) | type BatchNotifyFunction = (callback: () => void) => void
type BatchCallsCallback (line 11) | type BatchCallsCallback<T extends Array<unknown>> = (...args: T) => void
type ScheduleFunction (line 13) | type ScheduleFunction = (callback: () => void) => void
function createNotifyManager (line 17) | function createNotifyManager() {
FILE: packages/query-core/src/onlineManager.ts
type Listener (line 3) | type Listener = (online: boolean) => void
type SetupFn (line 4) | type SetupFn = (setOnline: Listener) => (() => void) | undefined
class OnlineManager (line 6) | class OnlineManager extends Subscribable<Listener> {
method constructor (line 12) | constructor() {
method onSubscribe (line 35) | protected onSubscribe(): void {
method onUnsubscribe (line 41) | protected onUnsubscribe() {
method setEventListener (line 48) | setEventListener(setup: SetupFn): void {
method setOnline (line 54) | setOnline(online: boolean): void {
method isOnline (line 65) | isOnline(): boolean {
FILE: packages/query-core/src/queriesObserver.ts
function difference (line 12) | function difference<T>(array1: Array<T>, array2: Array<T>): Array<T> {
function replaceAt (line 17) | function replaceAt<T>(array: Array<T>, index: number, value: T): Array<T> {
type QueriesObserverListener (line 23) | type QueriesObserverListener = (result: Array<QueryObserverResult>) => void
type CombineFn (line 25) | type CombineFn<TCombinedResult> = (
type QueriesObserverOptions (line 29) | interface QueriesObserverOptions<
class QueriesObserver (line 35) | class QueriesObserver<
method constructor (line 49) | constructor(
method onSubscribe (line 65) | protected onSubscribe(): void {
method onUnsubscribe (line 75) | protected onUnsubscribe(): void {
method destroy (line 81) | destroy(): void {
method setQueries (line 88) | setQueries(
method getCurrentResult (line 160) | getCurrentResult(): Array<QueryObserverResult> {
method getQueries (line 164) | getQueries() {
method getObservers (line 168) | getObservers() {
method getOptimisticResult (line 172) | getOptimisticResult(
method #trackResult (line 199) | #trackResult(
method #combineResult (line 216) | #combineResult(
method #findMatchingObservers (line 252) | #findMatchingObservers(
method #onUpdate (line 287) | #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {
method #notify (line 295) | #notify(): void {
type QueryObserverMatch (line 312) | type QueryObserverMatch = {
FILE: packages/query-core/src/query.ts
type QueryConfig (line 34) | interface QueryConfig<
type QueryState (line 48) | interface QueryState<TData = unknown, TError = DefaultError> {
type FetchContext (line 63) | interface FetchContext<
type QueryBehavior (line 78) | interface QueryBehavior<
type FetchDirection (line 90) | type FetchDirection = 'forward' | 'backward'
type FetchMeta (line 92) | interface FetchMeta {
type FetchOptions (line 96) | interface FetchOptions<TData = unknown> {
type FailedAction (line 102) | interface FailedAction<TError> {
type FetchAction (line 108) | interface FetchAction {
type SuccessAction (line 113) | interface SuccessAction<TData> {
type ErrorAction (line 120) | interface ErrorAction<TError> {
type InvalidateAction (line 125) | interface InvalidateAction {
type PauseAction (line 129) | interface PauseAction {
type ContinueAction (line 133) | interface ContinueAction {
type SetStateAction (line 137) | interface SetStateAction<TData, TError> {
type Action (line 143) | type Action<TData, TError> =
type SetStateOptions (line 153) | interface SetStateOptions {
class Query (line 159) | class Query<
method constructor (line 179) | constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey...
method meta (line 194) | get meta(): QueryMeta | undefined {
method promise (line 198) | get promise(): Promise<TData> | undefined {
method setOptions (line 202) | setOptions(
method optionalRemove (line 221) | protected optionalRemove() {
method setData (line 227) | setData(
method setState (line 244) | setState(
method cancel (line 251) | cancel(options?: CancelOptions): Promise<void> {
method destroy (line 257) | destroy(): void {
method resetState (line 263) | get resetState(): QueryState<TData, TError> {
method reset (line 267) | reset(): void {
method isActive (line 272) | isActive(): boolean {
method isDisabled (line 278) | isDisabled(): boolean {
method isFetched (line 286) | isFetched() {
method isStatic (line 290) | isStatic(): boolean {
method isStale (line 301) | isStale(): boolean {
method isStaleByTime (line 313) | isStaleByTime(staleTime: StaleTime = 0): boolean {
method onFocus (line 330) | onFocus(): void {
method onOnline (line 339) | onOnline(): void {
method addObserver (line 348) | addObserver(observer: QueryObserver<any, any, any, any, any>): void {
method removeObserver (line 359) | removeObserver(observer: QueryObserver<any, any, any, any, any>): void {
method getObserversCount (line 381) | getObserversCount(): number {
method #isInitialPausedFetch (line 385) | #isInitialPausedFetch(): boolean {
method invalidate (line 391) | invalidate(): void {
method fetch (line 397) | async fetch(
method #dispatch (line 618) | #dispatch(action: Action<TData, TError>): void {
function fetchState (line 701) | function fetchState<
function successState (line 722) | function successState<TData>(data: TData | undefined, dataUpdatedAt?: nu...
function getDefaultState (line 732) | function getDefaultState<
FILE: packages/query-core/src/queryCache.ts
type QueryCacheConfig (line 19) | interface QueryCacheConfig {
type NotifyEventQueryAdded (line 32) | interface NotifyEventQueryAdded extends NotifyEvent {
type NotifyEventQueryRemoved (line 37) | interface NotifyEventQueryRemoved extends NotifyEvent {
type NotifyEventQueryUpdated (line 42) | interface NotifyEventQueryUpdated extends NotifyEvent {
type NotifyEventQueryObserverAdded (line 48) | interface NotifyEventQueryObserverAdded extends NotifyEvent {
type NotifyEventQueryObserverRemoved (line 54) | interface NotifyEventQueryObserverRemoved extends NotifyEvent {
type NotifyEventQueryObserverResultsUpdated (line 60) | interface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {
type NotifyEventQueryObserverOptionsUpdated (line 65) | interface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {
type QueryCacheNotifyEvent (line 71) | type QueryCacheNotifyEvent =
type QueryCacheListener (line 80) | type QueryCacheListener = (event: QueryCacheNotifyEvent) => void
type QueryStore (line 82) | interface QueryStore {
class QueryCache (line 92) | class QueryCache extends Subscribable<QueryCacheListener> {
method constructor (line 95) | constructor(public config: QueryCacheConfig = {}) {
method build (line 100) | build<
method add (line 133) | add(query: Query<any, any, any, any>): void {
method remove (line 144) | remove(query: Query<any, any, any, any>): void {
method clear (line 158) | clear(): void {
method get (line 166) | get<
method getAll (line 179) | getAll(): Array<Query> {
method find (line 183) | find<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnDa...
method findAll (line 193) | findAll(filters: QueryFilters<any> = {}): Array<Query> {
method notify (line 200) | notify(event: QueryCacheNotifyEvent): void {
method onFocus (line 208) | onFocus(): void {
method onOnline (line 216) | onOnline(): void {
FILE: packages/query-core/src/queryClient.ts
type QueryDefaults (line 49) | interface QueryDefaults {
type MutationDefaults (line 54) | interface MutationDefaults {
class QueryClient (line 61) | class QueryClient {
method constructor (line 71) | constructor(config: QueryClientConfig = {}) {
method mount (line 80) | mount(): void {
method unmount (line 98) | unmount(): void {
method isFetching (line 109) | isFetching<TQueryFilters extends QueryFilters<any> = QueryFilters>(
method isMutating (line 116) | isMutating<
method getQueryData (line 129) | getQueryData<
method ensureQueryData (line 140) | ensureQueryData<
method getQueriesData (line 166) | getQueriesData<
method setQueryData (line 176) | setQueryData<
method setQueriesData (line 211) | setQueriesData<
method getQueryState (line 232) | getQueryState<
method removeQueries (line 247) | removeQueries<TTaggedQueryKey extends QueryKey = QueryKey>(
method resetQueries (line 258) | resetQueries<TTaggedQueryKey extends QueryKey = QueryKey>(
method cancelQueries (line 278) | cancelQueries<TTaggedQueryKey extends QueryKey = QueryKey>(
method invalidateQueries (line 293) | invalidateQueries<TTaggedQueryKey extends QueryKey = QueryKey>(
method refetchQueries (line 315) | refetchQueries<TTaggedQueryKey extends QueryKey = QueryKey>(
method fetchQuery (line 341) | fetchQuery<
method prefetchQuery (line 372) | prefetchQuery<
method fetchInfiniteQuery (line 383) | fetchInfiniteQuery<
method prefetchInfiniteQuery (line 407) | prefetchInfiniteQuery<
method ensureInfiniteQueryData (line 425) | ensureInfiniteQueryData<
method resumePausedMutations (line 450) | resumePausedMutations(): Promise<unknown> {
method getQueryCache (line 457) | getQueryCache(): QueryCache {
method getMutationCache (line 461) | getMutationCache(): MutationCache {
method getDefaultOptions (line 465) | getDefaultOptions(): DefaultOptions {
method setDefaultOptions (line 469) | setDefaultOptions(options: DefaultOptions): void {
method setQueryDefaults (line 473) | setQueryDefaults<
method getQueryDefaults (line 493) | getQueryDefaults(
method setMutationDefaults (line 511) | setMutationDefaults<
method getMutationDefaults (line 529) | getMutationDefaults(
method defaultQueryOptions (line 548) | defaultQueryOptions<
method defaultMutationOptions (line 629) | defaultMutationOptions<T extends MutationOptions<any, any, any, any>>(
method clear (line 644) | clear(): void {
FILE: packages/query-core/src/queryObserver.ts
type QueryObserverListener (line 32) | type QueryObserverListener<TData, TError> = (
type ObserverFetchOptions (line 36) | interface ObserverFetchOptions extends FetchOptions {
class QueryObserver (line 40) | class QueryObserver<
method constructor (line 71) | constructor(
method bindMethods (line 91) | protected bindMethods(): void {
method onSubscribe (line 95) | protected onSubscribe(): void {
method onUnsubscribe (line 109) | protected onUnsubscribe(): void {
method shouldFetchOnReconnect (line 115) | shouldFetchOnReconnect(): boolean {
method shouldFetchOnWindowFocus (line 123) | shouldFetchOnWindowFocus(): boolean {
method destroy (line 131) | destroy(): void {
method setOptions (line 138) | setOptions(
method getOptimisticResult (line 222) | getOptimisticResult(
method getCurrentResult (line 259) | getCurrentResult(): QueryObserverResult<TData, TError> {
method trackResult (line 263) | trackResult(
method trackProp (line 289) | trackProp(key: keyof QueryObserverResult) {
method getCurrentQuery (line 293) | getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey> {
method refetch (line 297) | refetch({ ...options }: RefetchOptions = {}): Promise<
method fetchOptimistic (line 305) | fetchOptimistic(
method fetch (line 323) | protected fetch(
method #executeFetch (line 335) | #executeFetch(
method #updateStaleTimeout (line 354) | #updateStaleTimeout(): void {
method #computeRefetchInterval (line 382) | #computeRefetchInterval() {
method #updateRefetchInterval (line 390) | #updateRefetchInterval(nextInterval: number | false): void {
method #updateTimers (line 414) | #updateTimers(): void {
method #clearStaleTimeout (line 419) | #clearStaleTimeout(): void {
method #clearRefetchInterval (line 426) | #clearRefetchInterval(): void {
method createResult (line 433) | protected createResult(
method updateResult (line 645) | updateResult(): void {
method #updateQuery (line 703) | #updateQuery(): void {
method onQueryUpdate (line 722) | onQueryUpdate(): void {
method #notify (line 730) | #notify(notifyOptions: { listeners: boolean }): void {
function shouldLoadOnMount (line 748) | function shouldLoadOnMount(
function shouldFetchOnMount (line 759) | function shouldFetchOnMount(
function shouldFetchOn (line 770) | function shouldFetchOn(
function shouldFetchOptionally (line 788) | function shouldFetchOptionally(
function isStale (line 802) | function isStale(
function shouldAssignObserverCurrentProperties (line 814) | function shouldAssignObserverCurrentProperties<
FILE: packages/query-core/src/removable.ts
method destroy (line 10) | destroy(): void {
method scheduleGc (line 14) | protected scheduleGc(): void {
method updateGcTime (line 24) | protected updateGcTime(newGcTime: number | undefined): void {
method clearGcTimeout (line 32) | protected clearGcTimeout() {
FILE: packages/query-core/src/retryer.ts
type RetryerConfig (line 11) | interface RetryerConfig<TData = unknown, TError = DefaultError> {
type Retryer (line 24) | interface Retryer<TData = unknown> {
type RetryValue (line 35) | type RetryValue<TError> = boolean | number | ShouldRetryFunction<TError>
type ShouldRetryFunction (line 37) | type ShouldRetryFunction<TError = DefaultError> = (
type RetryDelayValue (line 42) | type RetryDelayValue<TError> = number | RetryDelayFunction<TError>
type RetryDelayFunction (line 44) | type RetryDelayFunction<TError = DefaultError> = (
function defaultRetryDelay (line 49) | function defaultRetryDelay(failureCount: number) {
function canFetch (line 53) | function canFetch(networkMode: NetworkMode | undefined): boolean {
class CancelledError (line 59) | class CancelledError extends Error {
method constructor (line 62) | constructor(options?: CancelOptions) {
function isCancelledError (line 72) | function isCancelledError(value: any): value is CancelledError {
function createRetryer (line 76) | function createRetryer<TData = unknown, TError = DefaultError>(
FILE: packages/query-core/src/streamedQuery.ts
type BaseStreamedQueryParams (line 9) | type BaseStreamedQueryParams<TQueryFnData, TQueryKey extends QueryKey> = {
type SimpleStreamedQueryParams (line 16) | type SimpleStreamedQueryParams<
type ReducibleStreamedQueryParams (line 24) | type ReducibleStreamedQueryParams<
type StreamedQueryParams (line 33) | type StreamedQueryParams<TQueryFnData, TData, TQueryKey extends QueryKey> =
function streamedQuery (line 51) | function streamedQuery<
FILE: packages/query-core/src/subscribable.ts
class Subscribable (line 1) | class Subscribable<TListener extends Function> {
method constructor (line 4) | constructor() {
method subscribe (line 8) | subscribe(listener: TListener): () => void {
method hasListeners (line 19) | hasListeners(): boolean {
method onSubscribe (line 23) | protected onSubscribe(): void {
method onUnsubscribe (line 27) | protected onUnsubscribe(): void {
FILE: packages/query-core/src/thenable.ts
type Fulfilled (line 12) | interface Fulfilled<T> {
type Rejected (line 16) | interface Rejected {
type Pending (line 20) | interface Pending<T> {
type FulfilledThenable (line 35) | type FulfilledThenable<T> = Promise<T> & Fulfilled<T>
type RejectedThenable (line 36) | type RejectedThenable<T> = Promise<T> & Rejected
type PendingThenable (line 37) | type PendingThenable<T> = Promise<T> & Pending<T>
type Thenable (line 39) | type Thenable<T> =
function pendingThenable (line 44) | function pendingThenable<T>(): PendingThenable<T> {
function tryResolveSync (line 94) | function tryResolveSync(promise: Promise<unknown> | Thenable<unknown>) {
FILE: packages/query-core/src/timeoutManager.ts
type TimeoutCallback (line 9) | type TimeoutCallback = (_: void) => void
type ManagedTimerId (line 17) | type ManagedTimerId = number | { [Symbol.toPrimitive]: () => number }
type TimeoutProvider (line 22) | type TimeoutProvider<TTimerId extends ManagedTimerId = ManagedTimerId> =
class TimeoutManager (line 62) | class TimeoutManager implements Omit<TimeoutProvider, 'name'> {
method setTimeoutProvider (line 72) | setTimeoutProvider<TTimerId extends ManagedTimerId>(
method setTimeout (line 101) | setTimeout(callback: TimeoutCallback, delay: number): ManagedTimerId {
method clearTimeout (line 108) | clearTimeout(timeoutId: ManagedTimerId | undefined): void {
method setInterval (line 112) | setInterval(callback: TimeoutCallback, delay: number): ManagedTimerId {
method clearInterval (line 119) | clearInterval(intervalId: ManagedTimerId | undefined): void {
function systemSetTimeoutZero (line 133) | function systemSetTimeoutZero(callback: TimeoutCallback): void {
FILE: packages/query-core/src/types.ts
type NonUndefinedGuard (line 12) | type NonUndefinedGuard<T> = T extends undefined ? never : T
type DistributiveOmit (line 14) | type DistributiveOmit<
type OmitKeyof (line 19) | type OmitKeyof<
type Override (line 31) | type Override<TTargetA, TTargetB> = {
type NoInfer (line 37) | type NoInfer<T> = [T][T extends any ? 0 : never]
type Register (line 39) | interface Register {
type DefaultError (line 47) | type DefaultError = Register extends {
type QueryKey (line 53) | type QueryKey = Register extends {
type dataTagSymbol (line 64) | type dataTagSymbol = typeof dataTagSymbol
type dataTagErrorSymbol (line 66) | type dataTagErrorSymbol = typeof dataTagErrorSymbol
type UnsetMarker (line 68) | type UnsetMarker = typeof unsetMarker
type AnyDataTag (line 69) | type AnyDataTag = {
type DataTag (line 73) | type DataTag<
type InferDataFromTag (line 84) | type InferDataFromTag<TQueryFnData, TTaggedQueryKey extends QueryKey> =
type InferErrorFromTag (line 89) | type InferErrorFromTag<TError, TTaggedQueryKey extends QueryKey> =
type QueryFunction (line 96) | type QueryFunction<
type StaleTime (line 102) | type StaleTime = number | 'static'
type StaleTimeFunction (line 104) | type StaleTimeFunction<
type Enabled (line 113) | type Enabled<
type QueryPersister (line 122) | type QueryPersister<
type QueryFunctionContext (line 138) | type QueryFunctionContext<
type InitialDataFunction (line 167) | type InitialDataFunction<T> = () => T | undefined
type NonFunctionGuard (line 169) | type NonFunctionGuard<T> = T extends Function ? never : T
type PlaceholderDataFunction (line 171) | type PlaceholderDataFunction<
type QueriesPlaceholderDataFunction (line 181) | type QueriesPlaceholderDataFunction<TQueryData> = (
type QueryKeyHashFunction (line 186) | type QueryKeyHashFunction<TQueryKey extends QueryKey> = (
type GetPreviousPageParamFunction (line 190) | type GetPreviousPageParamFunction<TPageParam, TQueryFnData = unknown> = (
type GetNextPageParamFunction (line 197) | type GetNextPageParamFunction<TPageParam, TQueryFnData = unknown> = (
type InfiniteData (line 204) | interface InfiniteData<TData, TPageParam = unknown> {
type QueryMeta (line 209) | type QueryMeta = Register extends {
type NetworkMode (line 217) | type NetworkMode = 'online' | 'always' | 'offlineFirst'
type NotifyOnChangeProps (line 219) | type NotifyOnChangeProps =
type QueryOptions (line 225) | interface QueryOptions<
type InitialPageParam (line 280) | interface InitialPageParam<TPageParam = unknown> {
type InfiniteQueryPageParamsOptions (line 284) | interface InfiniteQueryPageParamsOptions<
type ThrowOnError (line 300) | type ThrowOnError<
type QueryObserverOptions (line 312) | interface QueryObserverOptions<
type WithRequired (line 443) | type WithRequired<TTarget, TKey extends keyof TTarget> = TTarget & {
type DefaultedQueryObserverOptions (line 447) | type DefaultedQueryObserverOptions<
type InfiniteQueryObserverOptions (line 458) | interface InfiniteQueryObserverOptions<
type DefaultedInfiniteQueryObserverOptions (line 476) | type DefaultedInfiniteQueryObserverOptions<
type FetchQueryOptions (line 493) | interface FetchQueryOptions<
type EnsureQueryDataOptions (line 511) | interface EnsureQueryDataOptions<
type EnsureInfiniteQueryDataOptions (line 527) | type EnsureInfiniteQueryDataOptions<
type FetchInfiniteQueryPages (line 543) | type FetchInfiniteQueryPages<TQueryFnData = unknown, TPageParam = unknow...
type FetchInfiniteQueryOptions (line 550) | type FetchInfiniteQueryOptions<
type ResultOptions (line 569) | interface ResultOptions {
type RefetchOptions (line 573) | interface RefetchOptions extends ResultOptions {
type InvalidateQueryFilters (line 584) | interface InvalidateQueryFilters<
type RefetchQueryFilters (line 590) | interface RefetchQueryFilters<
type InvalidateOptions (line 594) | interface InvalidateOptions extends RefetchOptions {}
type ResetOptions (line 595) | interface ResetOptions extends RefetchOptions {}
type FetchNextPageOptions (line 597) | interface FetchNextPageOptions extends ResultOptions {
type FetchPreviousPageOptions (line 609) | interface FetchPreviousPageOptions extends ResultOptions {
type QueryStatus (line 621) | type QueryStatus = 'pending' | 'error' | 'success'
type FetchStatus (line 622) | type FetchStatus = 'fetching' | 'paused' | 'idle'
type QueryObserverBaseResult (line 624) | interface QueryObserverBaseResult<
type QueryObserverPendingResult (line 801) | interface QueryObserverPendingResult<
type QueryObserverLoadingResult (line 816) | interface QueryObserverLoadingResult<
type QueryObserverLoadingErrorResult (line 832) | interface QueryObserverLoadingErrorResult<
type QueryObserverRefetchErrorResult (line 848) | interface QueryObserverRefetchErrorResult<
type QueryObserverSuccessResult (line 864) | interface QueryObserverSuccessResult<
type QueryObserverPlaceholderResult (line 880) | interface QueryObserverPlaceholderResult<
type DefinedQueryObserverResult (line 896) | type DefinedQueryObserverResult<
type QueryObserverResult (line 903) | type QueryObserverResult<TData = unknown, TError = DefaultError> =
type InfiniteQueryObserverBaseResult (line 910) | interface InfiniteQueryObserverBaseResult<
type InfiniteQueryObserverPendingResult (line 952) | interface InfiniteQueryObserverPendingResult<
type InfiniteQueryObserverLoadingResult (line 969) | interface InfiniteQueryObserverLoadingResult<
type InfiniteQueryObserverLoadingErrorResult (line 987) | interface InfiniteQueryObserverLoadingErrorResult<
type InfiniteQueryObserverRefetchErrorResult (line 1005) | interface InfiniteQueryObserverRefetchErrorResult<
type InfiniteQueryObserverSuccessResult (line 1021) | interface InfiniteQueryObserverSuccessResult<
type InfiniteQueryObserverPlaceholderResult (line 1039) | interface InfiniteQueryObserverPlaceholderResult<
type DefinedInfiniteQueryObserverResult (line 1057) | type DefinedInfiniteQueryObserverResult<
type InfiniteQueryObserverResult (line 1064) | type InfiniteQueryObserverResult<
type MutationKey (line 1074) | type MutationKey = Register extends {
type MutationStatus (line 1084) | type MutationStatus = 'idle' | 'pending' | 'success' | 'error'
type MutationScope (line 1086) | type MutationScope = {
type MutationMeta (line 1090) | type MutationMeta = Register extends {
type MutationFunctionContext (line 1098) | type MutationFunctionContext = {
type MutationFunction (line 1104) | type MutationFunction<TData = unknown, TVariables = unknown> = (
type MutationOptions (line 1109) | interface MutationOptions<
type MutationObserverOptions (line 1149) | interface MutationObserverOptions<
type MutateOptions (line 1158) | interface MutateOptions<
type MutateFunction (line 1185) | type MutateFunction<
type MutationObserverBaseResult (line 1195) | interface MutationObserverBaseResult<
type MutationObserverIdleResult (line 1260) | interface MutationObserverIdleResult<
type MutationObserverLoadingResult (line 1281) | interface MutationObserverLoadingResult<
type MutationObserverErrorResult (line 1302) | interface MutationObserverErrorResult<
type MutationObserverSuccessResult (line 1323) | interface MutationObserverSuccessResult<
type MutationObserverResult (line 1344) | type MutationObserverResult<
type QueryClientConfig (line 1355) | interface QueryClientConfig {
type DefaultOptions (line 1361) | interface DefaultOptions<TError = DefaultError> {
type CancelOptions (line 1371) | interface CancelOptions {
type SetDataOptions (line 1376) | interface SetDataOptions {
type NotifyEventType (line 1380) | type NotifyEventType =
type NotifyEvent (line 1389) | interface NotifyEvent {
FILE: packages/query-core/src/utils.ts
type DropLast (line 19) | type DropLast<T extends ReadonlyArray<unknown>> = T extends readonly [
type TuplePrefixes (line 26) | type TuplePrefixes<T extends ReadonlyArray<unknown>> = T extends readonl...
type QueryFilters (line 30) | interface QueryFilters<TQueryKey extends QueryKey = QueryKey> {
type MutationFilters (line 57) | interface MutationFilters<
type Updater (line 83) | type Updater<TInput, TOutput> = TOutput | ((input: TInput) => TOutput)
type QueryTypeFilter (line 85) | type QueryTypeFilter = 'all' | 'active' | 'inactive'
function noop (line 96) | function noop() {}
function functionalUpdate (line 98) | function functionalUpdate<TInput, TOutput>(
function isValidTimeout (line 107) | function isValidTimeout(value: unknown): value is number {
function timeUntilStale (line 111) | function timeUntilStale(updatedAt: number, staleTime?: number): number {
function resolveStaleTime (line 115) | function resolveStaleTime<
function resolveEnabled (line 129) | function resolveEnabled<
function matchQuery (line 141) | function matchQuery(
function matchMutation (line 189) | function matchMutation(
function hashQueryKeyByOptions (line 218) | function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(
function hashKey (line 230) | function hashKey(queryKey: QueryKey | MutationKey): string {
function partialMatchKey (line 247) | function partialMatchKey(a: any, b: any): boolean {
function replaceEqualDeep (line 271) | function replaceEqualDeep(a: any, b: any, depth = 0): any {
function shallowEqualObjects (line 322) | function shallowEqualObjects<T extends Record<string, any>>(
function isPlainArray (line 339) | function isPlainArray(value: unknown): value is Array<unknown> {
function isPlainObject (line 344) | function isPlainObject(o: any): o is Record<PropertyKey, unknown> {
function hasObjectPrototype (line 375) | function hasObjectPrototype(o: any): boolean {
function sleep (line 379) | function sleep(timeout: number): Promise<void> {
function replaceData (line 385) | function replaceData<
function keepPreviousData (line 410) | function keepPreviousData<T>(
function addToEnd (line 416) | function addToEnd<T>(items: Array<T>, item: T, max = 0): Array<T> {
function addToStart (line 421) | function addToStart<T>(items: Array<T>, item: T, max = 0): Array<T> {
type SkipToken (line 427) | type SkipToken = typeof skipToken
function ensureQueryFn (line 429) | function ensureQueryFn<
function shouldThrowError (line 462) | function shouldThrowError<T extends (...args: Array<any>) => boolean>(
function addConsumeAwareSignal (line 474) | function addConsumeAwareSignal<T>(
FILE: packages/query-devtools/src/Devtools.tsx
type DevtoolsPanelProps (line 83) | interface DevtoolsPanelProps {
type ContentViewProps (line 88) | interface ContentViewProps {
type QueryStatusProps (line 95) | interface QueryStatusProps {
type DevtoolsComponentType (line 110) | type DevtoolsComponentType = Component<QueryDevtoolsProps> & {
type DevToolsActionType (line 2697) | type DevToolsActionType =
constant DEV_TOOLS_EVENT (line 2709) | const DEV_TOOLS_EVENT = '@tanstack/query-devtools-event'
FILE: packages/query-devtools/src/Explorer.tsx
function chunkArray (line 41) | function chunkArray<T extends { label: string; value: unknown }>(
type CopyState (line 97) | type CopyState = 'NoCopy' | 'SuccessCopy' | 'ErrorCopy'
type ExplorerProps (line 254) | type ExplorerProps = {
function isIterable (line 265) | function isIterable(x: any): x is Iterable<unknown> {
function Explorer (line 269) | function Explorer(props: ExplorerProps) {
FILE: packages/query-devtools/src/TanstackQueryDevtools.tsx
type TanstackQueryDevtoolsConfig (line 18) | interface TanstackQueryDevtoolsConfig extends QueryDevtoolsProps {
class TanstackQueryDevtools (line 23) | class TanstackQueryDevtools {
method constructor (line 40) | constructor(config: TanstackQueryDevtoolsConfig) {
method setButtonPosition (line 69) | setButtonPosition(position: DevtoolsButtonPosition) {
method setPosition (line 73) | setPosition(position: DevtoolsPosition) {
method setInitialIsOpen (line 77) | setInitialIsOpen(isOpen: boolean) {
method setErrorTypes (line 81) | setErrorTypes(errorTypes: Array<DevtoolsErrorType>) {
method setClient (line 85) | setClient(client: QueryClient) {
method setTheme (line 89) | setTheme(theme?: Theme) {
method mount (line 93) | mount<T extends HTMLElement>(el: T) {
method unmount (line 151) | unmount() {
FILE: packages/query-devtools/src/TanstackQueryDevtoolsPanel.tsx
type TanstackQueryDevtoolsPanelConfig (line 18) | interface TanstackQueryDevtoolsPanelConfig extends QueryDevtoolsProps {
class TanstackQueryDevtoolsPanel (line 24) | class TanstackQueryDevtoolsPanel {
method constructor (line 42) | constructor(config: TanstackQueryDevtoolsPanelConfig) {
method setButtonPosition (line 73) | setButtonPosition(position: DevtoolsButtonPosition) {
method setPosition (line 77) | setPosition(position: DevtoolsPosition) {
method setInitialIsOpen (line 81) | setInitialIsOpen(isOpen: boolean) {
method setErrorTypes (line 85) | setErrorTypes(errorTypes: Array<DevtoolsErrorType>) {
method setClient (line 89) | setClient(client: QueryClient) {
method setOnClose (line 93) | setOnClose(onClose: () => unknown) {
method setTheme (line 97) | setTheme(theme?: Theme) {
method mount (line 101) | mount<T extends HTMLElement>(el: T) {
method unmount (line 163) | unmount() {
FILE: packages/query-devtools/src/constants.ts
constant BUTTON_POSITION (line 8) | const BUTTON_POSITION: DevtoolsButtonPosition = 'bottom-right'
constant POSITION (line 9) | const POSITION: DevtoolsPosition = 'bottom'
constant THEME_PREFERENCE (line 10) | const THEME_PREFERENCE = 'system'
constant INITIAL_IS_OPEN (line 11) | const INITIAL_IS_OPEN = false
constant DEFAULT_HEIGHT (line 12) | const DEFAULT_HEIGHT = 500
constant PIP_DEFAULT_HEIGHT (line 13) | const PIP_DEFAULT_HEIGHT = 500
constant DEFAULT_WIDTH (line 14) | const DEFAULT_WIDTH = 500
constant DEFAULT_SORT_FN_NAME (line 15) | const DEFAULT_SORT_FN_NAME = Object.keys(sortFns)[0]
constant DEFAULT_SORT_ORDER (line 16) | const DEFAULT_SORT_ORDER = 1
constant DEFAULT_MUTATION_SORT_FN_NAME (line 17) | const DEFAULT_MUTATION_SORT_FN_NAME = Object.keys(mutationSortFns)[0]
FILE: packages/query-devtools/src/contexts/PiPContext.tsx
type PiPProviderProps (line 15) | interface PiPProviderProps {
type PiPContextType (line 22) | type PiPContextType = {
class PipOpenError (line 29) | class PipOpenError extends Error {}
FILE: packages/query-devtools/src/contexts/QueryDevtoolsContext.ts
type XPosition (line 4) | type XPosition = 'left' | 'right'
type YPosition (line 5) | type YPosition = 'top' | 'bottom'
type DevtoolsPosition (line 6) | type DevtoolsPosition = XPosition | YPosition
type DevtoolsButtonPosition (line 7) | type DevtoolsButtonPosition = `${YPosition}-${XPosition}` | 'relative'
type Theme (line 8) | type Theme = 'dark' | 'light' | 'system'
type DevtoolsErrorType (line 10) | interface DevtoolsErrorType {
type QueryDevtoolsProps (line 21) | interface QueryDevtoolsProps {
function useQueryDevtoolsContext (line 45) | function useQueryDevtoolsContext() {
FILE: packages/query-devtools/src/contexts/ThemeContext.ts
function useTheme (line 8) | function useTheme() {
FILE: packages/query-devtools/src/icons/index.tsx
function Search (line 3) | function Search() {
function Trash (line 23) | function Trash() {
function ChevronDown (line 43) | function ChevronDown() {
function ArrowUp (line 63) | function ArrowUp() {
function ArrowDown (line 83) | function ArrowDown() {
function ArrowLeft (line 103) | function ArrowLeft() {
function ArrowRight (line 126) | function ArrowRight() {
function Sun (line 149) | function Sun() {
function Moon (line 169) | function Moon() {
function Monitor (line 189) | function Monitor() {
function Wifi (line 209) | function Wifi() {
function Offline (line 226) | function Offline() {
function Settings (line 244) | function Settings() {
function PiPIcon (line 271) | function PiPIcon() {
function Copier (line 291) | function Copier() {
function Pencil (line 312) | function Pencil() {
function CopiedCopier (line 332) | function CopiedCopier(props: { theme: 'light' | 'dark' }) {
function ErrorCopier (line 352) | function ErrorCopier() {
function List (line 372) | function List() {
function Check (line 391) | function Check(props: { checked: boolean; theme: 'light' | 'dark' }) {
function CheckCircle (line 432) | function CheckCircle() {
function LoadingCircle (line 452) | function LoadingCircle() {
function XCircle (line 481) | function XCircle() {
function PauseCircle (line 501) | function PauseCircle() {
function TanstackLogo (line 521) | function TanstackLogo() {
FILE: packages/query-devtools/src/utils.tsx
function getQueryStatusLabel (line 6) | function getQueryStatusLabel(query: Query) {
type QueryStatusLabel (line 18) | type QueryStatusLabel = 'fresh' | 'stale' | 'paused' | 'inactive' | 'fet...
function getSidedProp (line 20) | function getSidedProp<T extends string>(
function getQueryStatusColor (line 29) | function getQueryStatusColor({
function getMutationStatusColor (line 49) | function getMutationStatusColor({
function getQueryStatusColorByLabel (line 67) | function getQueryStatusColorByLabel(label: QueryStatusLabel) {
type SortFn (line 91) | type SortFn = (a: Query, b: Query) => number
type MutationSortFn (line 121) | type MutationSortFn = (a: Mutation, b: Mutation) => number
FILE: packages/query-persist-client-core/src/__tests__/createPersister.test.ts
function getFreshStorage (line 10) | function getFreshStorage() {
function setupPersister (line 28) | function setupPersister(
FILE: packages/query-persist-client-core/src/__tests__/utils.ts
function createMockPersister (line 5) | function createMockPersister(): Persister {
function createSpyPersister (line 22) | function createSpyPersister(): Persister {
FILE: packages/query-persist-client-core/src/createPersister.ts
type PersistedQuery (line 16) | interface PersistedQuery {
type MaybePromise (line 23) | type MaybePromise<T> = T | Promise<T>
type AsyncStorage (line 25) | interface AsyncStorage<TStorageValue = string> {
type StoragePersisterOptions (line 32) | interface StoragePersisterOptions<TStorageValue = string> {
constant PERSISTER_KEY_PREFIX (line 78) | const PERSISTER_KEY_PREFIX = 'tanstack-query'
function experimental_createQueryPersister (line 95) | function experimental_createQueryPersister<TStorageValue = string>({
FILE: packages/query-persist-client-core/src/persist.ts
type Promisable (line 10) | type Promisable<T> = T | PromiseLike<T>
type Persister (line 12) | interface Persister {
type PersistedClient (line 18) | interface PersistedClient {
type PersistQueryClientRootOptions (line 24) | interface PersistQueryClientRootOptions {
type PersistedQueryClientRestoreOptions (line 35) | interface PersistedQueryClientRestoreOptions extends PersistQueryClientR...
type PersistedQueryClientSaveOptions (line 44) | interface PersistedQueryClientSaveOptions extends PersistQueryClientRoot...
type PersistQueryClientOptions (line 49) | interface PersistQueryClientOptions
function isCacheEventType (line 61) | function isCacheEventType(eventType: NotifyEventType) {
function persistQueryClientRestore (line 71) | async function persistQueryClientRestore({
function persistQueryClientSave (line 113) | async function persistQueryClientSave({
function persistQueryClientSubscribe (line 132) | function persistQueryClientSubscribe(
function persistQueryClient (line 160) | function persistQueryClient(
FILE: packages/query-persist-client-core/src/retryStrategies.ts
type PersistRetryer (line 3) | type PersistRetryer = (props: {
FILE: packages/query-sync-storage-persister/src/__tests__/storageIsFull.test.ts
function getMockStorage (line 12) | function getMockStorage(limitSize?: number) {
FILE: packages/query-sync-storage-persister/src/index.ts
type Storage (line 10) | interface Storage {
type CreateSyncStoragePersisterOptions (line 16) | interface CreateSyncStoragePersisterOptions {
function createSyncStoragePersister (line 44) | function createSyncStoragePersister({
function throttle (line 101) | function throttle<TArgs extends Array<any>>(
FILE: packages/query-sync-storage-persister/src/utils.ts
function noop (line 3) | function noop() {}
FILE: packages/react-query-devtools/src/ReactQueryDevtools.tsx
type DevtoolsOptions (line 13) | interface DevtoolsOptions {
function ReactQueryDevtools (line 57) | function ReactQueryDevtools(
FILE: packages/react-query-devtools/src/ReactQueryDevtoolsPanel.tsx
type DevtoolsPanelOptions (line 8) | interface DevtoolsPanelOptions {
function ReactQueryDevtoolsPanel (line 49) | function ReactQueryDevtoolsPanel(
FILE: packages/react-query-devtools/src/index.ts
type DevtoolsPanelOptions (line 20) | type DevtoolsPanelOptions = DevtoolsPanel.DevtoolsPanelOptions
FILE: packages/react-query-next-experimental/src/HydrationStreamProvider.tsx
type DataTransformer (line 10) | interface DataTransformer {
type Serialized (line 15) | type Serialized<TData> = unknown & {
type TypedDataTransformer (line 19) | interface TypedDataTransformer<TData> {
type HydrationStreamContext (line 24) | interface HydrationStreamContext<TShape> {
type HydrationStreamProviderProps (line 36) | interface HydrationStreamProviderProps<TShape> {
function createHydrationStreamProvider (line 59) | function createHydrationStreamProvider<TShape>() {
FILE: packages/react-query-next-experimental/src/ReactQueryStreamedHydration.tsx
function ReactQueryStreamedHydration (line 27) | function ReactQueryStreamedHydration(props: {
FILE: packages/react-query-next-experimental/src/htmlescape.ts
constant ESCAPE_LOOKUP (line 12) | const ESCAPE_LOOKUP: Record<string, string> = {
constant ESCAPE_REGEX (line 20) | const ESCAPE_REGEX = /[&><\u2028\u2029]/g
function htmlEscapeJsonString (line 22) | function htmlEscapeJsonString(str: string): string {
FILE: packages/react-query-persist-client/src/PersistQueryClientProvider.tsx
type PersistQueryClientProviderProps (line 12) | type PersistQueryClientProviderProps = QueryClientProviderProps & {
FILE: packages/react-query-persist-client/src/__tests__/PersistQueryClientProvider.test.tsx
method persistClient (line 21) | persistClient(persistClient: PersistedClient) {
method restoreClient (line 24) | async restoreClient() {
method removeClient (line 27) | removeClient() {
method persistClient (line 40) | async persistClient() {
method restoreClient (line 43) | async restoreClient() {
function Page (line 79) | function Page() {
function Page (line 154) | function Page() {
function Page (line 222) | function Page() {
function Page (line 302) | function Page() {
function Page (line 384) | function Page() {
function Page (line 454) | function Page() {
function Page (line 508) | function Page() {
function Page (line 569) | function Page() {
function App (line 634) | function App() {
function Page (line 669) | function Page() {
method persistClient (line 732) | persistClient(persistClient) {
method restoreClient (line 735) | async restoreClient() {
method removeClient (line 739) | removeClient() {
function Page (line 763) | function Page() {
FILE: packages/react-query-persist-client/src/__tests__/use-queries-with-persist.test.tsx
function TestComponent (line 96) | function TestComponent() {
FILE: packages/react-query/src/HydrationBoundary.tsx
type HydrationBoundaryProps (line 13) | interface HydrationBoundaryProps {
FILE: packages/react-query/src/QueryClientProvider.tsx
type QueryClientProviderProps (line 24) | type QueryClientProviderProps = {
FILE: packages/react-query/src/QueryErrorResetBoundary.tsx
type QueryErrorResetFunction (line 5) | type QueryErrorResetFunction = () => void
type QueryErrorIsResetFunction (line 6) | type QueryErrorIsResetFunction = () => boolean
type QueryErrorClearResetFunction (line 7) | type QueryErrorClearResetFunction = () => void
type QueryErrorResetBoundaryValue (line 9) | interface QueryErrorResetBoundaryValue {
function createValue (line 15) | function createValue(): QueryErrorResetBoundaryValue {
type QueryErrorResetBoundaryFunction (line 39) | type QueryErrorResetBoundaryFunction = (
type QueryErrorResetBoundaryProps (line 43) | interface QueryErrorResetBoundaryProps {
FILE: packages/react-query/src/__tests__/HydrationBoundary.test.tsx
function Page (line 38) | function Page() {
function Page (line 70) | function Page() {
function Page (line 105) | function Page({ queryKey }: { queryKey: [string] }) {
function Page (line 176) | function Page({ queryKey }: { queryKey: [string] }) {
function Thrower (line 214) | function Thrower(): never {
function Page (line 269) | function Page() {
function Page (line 315) | function Page() {
function Page (line 343) | function Page() {
function Page (line 367) | function Page() {
function Page (line 391) | function Page() {
function Page (line 455) | function Page() {
function Page (line 488) | function Page() {
function Page (line 518) | function Page() {
FILE: packages/react-query/src/__tests__/QueryClientProvider.test.tsx
function Page (line 27) | function Page() {
function Page1 (line 62) | function Page1() {
function Page2 (line 74) | function Page2() {
function Page (line 121) | function Page() {
function Page (line 153) | function Page() {
FILE: packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx
function Page (line 38) | function Page() {
function Page (line 99) | function Page() {
function Page (line 167) | function Page() {
function Page (line 233) | function Page() {
function Page (line 303) | function Page() {
function Page (line 364) | function Page() {
function Page (line 429) | function Page() {
function Page (line 509) | function Page() {
function Page (line 576) | function Page() {
function Page (line 647) | function Page() {
function Page (line 676) | function Page() {
function Page (line 743) | function Page() {
function Page (line 817) | function Page() {
function Page (line 883) | function Page() {
FILE: packages/react-query/src/__tests__/fine-grained-persister.test.tsx
function Test (line 54) | function Test() {
function Test (line 111) | function Test() {
function Test (line 152) | function Test() {
FILE: packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx
type MyQueryKey (line 219) | type MyQueryKey = [Array<string>, { type: 'foo' }]
type MyQueryKey (line 234) | type MyQueryKey = DataTag<
FILE: packages/react-query/src/__tests__/mutationOptions.test.tsx
function IsMutating (line 45) | function IsMutating() {
function Mutation (line 53) | function Mutation() {
function Page (line 63) | function Page() {
function IsMutating (line 90) | function IsMutating() {
function Mutation (line 98) | function Mutation() {
function Page (line 108) | function Page() {
function IsMutating (line 139) | function IsMutating() {
function Mutation (line 147) | function Mutation() {
function Page (line 159) | function Page() {
function IsMutating (line 191) | function IsMutating() {
function Mutation (line 201) | function Mutation() {
function Page (line 213) | function Page() {
function Mutation (line 242) | function Mutation() {
function Mutation (line 273) | function Mutation() {
function Mutation (line 308) | function Mutation() {
function Mutation (line 346) | function Mutation() {
function Mutation (line 385) | function Mutation() {
function Mutation (line 419) | function Mutation() {
function Mutation (line 457) | function Mutation() {
function Mutation (line 499) | function Mutation() {
FILE: packages/react-query/src/__tests__/queryOptions.test-d.tsx
function somethingWithQueryOptions (line 243) | function somethingWithQueryOptions<TQueryOpts extends AnyUseQueryOptions>(
type MyQueryKey (line 258) | type MyQueryKey = [Array<string>, { type: 'foo' }]
type MyQueryKey (line 271) | type MyQueryKey = DataTag<
FILE: packages/react-query/src/__tests__/ssr-hydration.test.tsx
function fetchData (line 25) | async function fetchData<TData>(value: TData, ms?: number): Promise<TDat...
function PrintStateComponent (line 30) | function PrintStateComponent({ componentName, result }: any): any {
function SuccessComponent (line 55) | function SuccessComponent() {
function ErrorComponent (line 132) | function ErrorComponent() {
function SuccessComponent (line 209) | function SuccessComponent() {
FILE: packages/react-query/src/__tests__/ssr.test.tsx
function Page (line 38) | function Page() {
function Page (line 83) | function Page() {
function Page (line 113) | function Page() {
function Page (line 146) | function Page() {
function Page (line 185) | function Page() {
function Page (line 218) | function Page() {
function Page (line 255) | function Page() {
function Page (line 275) | function Page() {
FILE: packages/react-query/src/__tests__/suspense.test.tsx
function renderWithSuspense (line 9) | function renderWithSuspense(client: QueryClient, ui: React.ReactNode) {
function createTestQuery (line 17) | function createTestQuery(options: {
FILE: packages/react-query/src/__tests__/useInfiniteQuery.test.tsx
type Result (line 24) | interface Result {
function Page (line 71) | function Page() {
function Page (line 165) | function Page() {
function Page (line 205) | function Page() {
function Page (line 294) | function Page() {
function Page (line 333) | function Page() {
function Page (line 379) | function Page() {
function Page (line 435) | function Page() {
function Page (line 512) | function Page() {
function Page (line 624) | function Page() {
function Page (line 717) | function Page() {
function Page (line 803) | function Page() {
function Page (line 892) | function Page() {
function Page (line 952) | function Page() {
function Page (line 1027) | function Page() {
function Page (line 1079) | function Page() {
function List (line 1129) | function List() {
function Page (line 1147) | function Page() {
function Page (line 1176) | function Page() {
function Page (line 1236) | function Page() {
function Page (line 1309) | function Page() {
function Page (line 1347) | function Page() {
function Page (line 1386) | function Page() {
function Page (line 1425) | function Page() {
function Page (line 1478) | function Page() {
function Page (line 1602) | function Page() {
function Inner (line 1727) | function Inner() {
function Page (line 1741) | function Page() {
function Page (line 1767) | function Page() {
function Loading (line 1794) | function Loading() {
function MyComponent (line 1799) | function MyComponent() {
function Page (line 1827) | function Page() {
FILE: packages/react-query/src/__tests__/useIsFetching.test.tsx
function IsFetching (line 22) | function IsFetching() {
function Query (line 28) | function Query() {
function Page (line 40) | function Page() {
function IsFetching (line 68) | function IsFetching() {
function FirstQuery (line 76) | function FirstQuery() {
function SecondQuery (line 85) | function SecondQuery() {
function Page (line 94) | function Page() {
function One (line 136) | function One() {
function Two (line 145) | function Two() {
function Page (line 154) | function Page() {
function Page (line 192) | function Page() {
function Page (line 221) | function Page() {
FILE: packages/react-query/src/__tests__/useMutation.test.tsx
function Page (line 34) | function Page() {
function Page (line 66) | function Page() {
function Page (line 106) | function Page() {
type Value (line 151) | type Value = { count: number }
function Page (line 164) | function Page() {
function Page (line 208) | function Page() {
function Page (line 269) | function Page() {
function Page (line 319) | function Page() {
function Page (line 379) | function Page() {
function Page (line 408) | function Page() {
function Page (line 439) | function Page() {
function Page (line 493) | function Page() {
function Page (line 552) | function Page() {
function Page (line 608) | function Page() {
function Mutates (line 673) | function Mutates() {
function Page (line 677) | function Page() {
function Page (line 699) | function Page() {
function Page (line 742) | function Page() {
function Page (line 806) | function Page() {
function Page (line 854) | function Page() {
function Component (line 864) | function Component() {
function Page (line 925) | function Page() {
function Page (line 1033) | function Page() {
function Page (line 1079) | function Page() {
function Page (line 1125) | function Page() {
function Page (line 1165) | function Page() {
FILE: packages/react-query/src/__tests__/useMutationState.test.tsx
function IsMutating (line 21) | function IsMutating() {
function Mutations (line 29) | function Mutations() {
function Page (line 47) | function Page() {
function IsMutating (line 82) | function IsMutating() {
function Page (line 88) | function Page() {
function IsMutating (line 116) | function IsMutating() {
function Page (line 125) | function Page() {
function Page (line 152) | function Page() {
function Variables (line 194) | function Variables() {
function Mutate (line 205) | function Mutate() {
function Page (line 219) | function Page() {
FILE: packages/react-query/src/__tests__/usePrefetchInfiniteQuery.test.tsx
function Suspended (line 57) | function Suspended<T = unknown>(props: {
function App (line 96) | function App() {
function App (line 140) | function App() {
function Prefetch (line 174) | function Prefetch({ children }: { children: React.ReactNode }) {
function App (line 179) | function App() {
FILE: packages/react-query/src/__tests__/usePrefetchQuery.test.tsx
function Suspended (line 38) | function Suspended<TData = unknown>(props: {
function App (line 63) | function App() {
function App (line 86) | function App() {
function App (line 124) | function App() {
function Prefetch (line 156) | function Prefetch({ children }: { children: React.ReactNode }) {
function App (line 161) | function App() {
function App (line 193) | function App() {
function App (line 248) | function App() {
FILE: packages/react-query/src/__tests__/useQueries.test-d.tsx
type Data (line 106) | type Data = string
FILE: packages/react-query/src/__tests__/useQueries.test.tsx
function Page (line 49) | function Page() {
function Page (line 96) | function Page() {
function Page (line 145) | function Page() {
function Page (line 250) | function Page() {
function Page (line 389) | function Page() {
type BizError (line 425) | type BizError = { code: number }
function Page (line 429) | function Page() {
type QueryKeyA (line 702) | type QueryKeyA = ['queryA']
type GetQueryFunctionA (line 704) | type GetQueryFunctionA = () => QueryFunction<number, QueryKeyA>
type SelectorA (line 708) | type SelectorA = (data: number) => [number, string]
type QueryKeyB (line 711) | type QueryKeyB = ['queryB', string]
type GetQueryFunctionB (line 713) | type GetQueryFunctionB = () => QueryFunction<string, QueryKeyB>
type SelectorB (line 717) | type SelectorB = (data: string) => [string, number]
function useWrappedQueries (line 721) | function useWrappedQueries<
function Page (line 754) | function Page() {
function Page (line 814) | function Page() {
function Page (line 880) | function Page() {
function Page (line 945) | function Page() {
function Page (line 971) | function Page() {
function Page (line 1016) | function Page() {
function Page (line 1067) | function Page() {
function Page (line 1088) | function Page() {
function Page (line 1132) | function Page() {
function Page (line 1233) | function Page() {
function Page (line 1273) | function Page() {
function Page (line 1323) | function Page() {
function Page (line 1407) | function Page() {
function Page (line 1478) | function Page() {
function Page (line 1532) | function Page() {
function Page (line 1594) | function Page() {
function Page (line 1671) | function Page() {
function Page (line 1749) | function Page() {
function Page (line 1821) | function Page() {
function Page (line 1874) | function Page() {
function Page (line 1930) | function Page() {
FILE: packages/react-query/src/__tests__/useQuery.promise.test.tsx
function MyComponent (line 48) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 54) | function Loading() {
function Page (line 59) | function Page() {
function MyComponent (line 104) | function MyComponent() {
function Loading (line 120) | function Loading() {
function Page (line 124) | function Page() {
function MyComponent (line 158) | function MyComponent() {
function Loading (line 174) | function Loading() {
function Page (line 178) | function Page() {
function MyComponent (line 226) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 232) | function Loading() {
function Page (line 237) | function Page() {
function MyComponent (line 282) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 288) | function Loading() {
function Page (line 292) | function Page() {
function MyComponent (line 328) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 334) | function Loading() {
function Page (line 339) | function Page() {
function MyComponent (line 379) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 385) | function Loading() {
function Page (line 390) | function Page() {
function MyComponent (line 450) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 456) | function Loading() {
function Page (line 461) | function Page() {
function MyComponent (line 505) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 511) | function Loading() {
function Page (line 516) | function Page() {
function MyComponent (line 598) | function MyComponent() {
function Page (line 612) | function Page() {
function MyComponent (line 645) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 652) | function Loading() {
function Page (line 656) | function Page() {
function MyComponent (line 713) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 719) | function Loading() {
function Page (line 722) | function Page() {
function MyComponent (line 770) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 776) | function Loading() {
function Page (line 779) | function Page() {
function MyComponent (line 829) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 835) | function Loading() {
function Page (line 838) | function Page() {
function MyComponent (line 904) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 910) | function Loading() {
function Page (line 913) | function Page() {
function MyComponent (line 963) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 969) | function Loading() {
function Page (line 972) | function Page() {
function MyComponent (line 1018) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 1024) | function Loading() {
function Page (line 1027) | function Page() {
function MyComponent (line 1059) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 1066) | function Loading() {
function Page (line 1070) | function Page() {
function MyComponent (line 1140) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 1148) | function Loading() {
function Page (line 1151) | function Page() {
function MyComponent (line 1216) | function MyComponent(props: { promise: Promise<string> }) {
function Loading (line 1224) | function Loading() {
function Page (line 1227) | function Page() {
function MyComponent (line 1318) | function MyComponent({ input }: { input: string }) {
function useTheQuery (line 1325) | function useTheQuery(input: string) {
function Page (line 1336) | function Page() {
function Page (line 1399) | function Page() {
function Page (line 1445) | function Page() {
FILE: packages/react-query/src/__tests__/useQuery.test-d.tsx
function queryFn (line 60) | function queryFn<T = string>(): Promise<T> {
type MyData (line 80) | type MyData = number
type MyQueryKey (line 81) | type MyQueryKey = readonly ['my-data', number]
type Data (line 308) | type Data = string
FILE: packages/react-query/src/__tests__/useQuery.test.tsx
function Page (line 49) | function Page() {
function Page (line 74) | function Page() {
function Page (line 170) | function Page() {
function Page (line 294) | function Page() {
function Page (line 324) | function Page() {
function Page (line 359) | function Page() {
function Page (line 394) | function Page() {
function Page (line 430) | function Page() {
function Page (line 448) | function Page() {
function Component (line 463) | function Component({ value }: { value: string }) {
function Page (line 523) | function Page() {
function Page (line 596) | function Page() {
function Page (line 620) | function Page() {
function Page (line 640) | function Page() {
function Page (line 665) | function Page() {
function Page (line 691) | function Page() {
function Page (line 720) | function Page() {
function Page (line 758) | function Page() {
function Page (line 799) | function Page() {
function Page (line 829) | function Page() {
function Page (line 877) | function Page() {
function Page (line 939) | function Page() {
function Page (line 994) | function Page() {
function Page (line 1030) | function Page() {
function Page (line 1076) | function Page() {
function Page (line 1116) | function Page() {
function Page (line 1153) | function Page() {
function Page (line 1213) | function Page() {
function Page (line 1279) | function Page() {
function Page (line 1351) | function Page() {
function Page (line 1406) | function Page() {
function Page (line 1492) | function Page({ count }: { count: number }) {
function Page (line 1583) | function Page() {
function Page (line 1655) | function Page() {
function Page (line 1753) | function Page() {
function FirstComponent (line 1833) | function FirstComponent() {
function SecondComponent (line 1854) | function SecondComponent() {
function Page (line 1859) | function Page() {
function FirstComponent (line 1907) | function FirstComponent() {
function SecondComponent (line 1921) | function SecondComponent() {
function Page (line 1935) | function Page() {
function Page (line 1997) | function Page() {
function UserInfo (line 2053) | function UserInfo({ id }: { id: number | null }) {
function Page (line 2084) | function Page() {
function Page (line 2123) | function Page() {
function Page (line 2180) | function Page() {
function Page (line 2233) | function Page() {
function Page (line 2338) | function Page() {
function Page (line 2379) | function Page() {
function Page (line 2400) | function Page() {
function Page (line 2424) | function Page() {
function Page (line 2448) | function Page() {
function Page (line 2498) | function Page() {
function Page (line 2521) | function Page() {
function Page (line 2552) | function Page() {
function Page (line 2583) | function Page() {
function Page (line 2614) | function Page() {
function Page (line 2645) | function Page() {
function Page (line 2684) | function Page() {
function Page (line 2741) | function Page() {
function Page (line 2780) | function Page() {
function Page (line 2814) | function Page() {
function Page (line 2845) | function Page() {
function Page (line 2878) | function Page() {
function Page (line 2903) | function Page() {
function Page (line 2939) | function Page() {
function Page (line 2980) | function Page() {
function App (line 3002) | function App() {
function Page (line 3035) | function Page() {
function App (line 3057) | function App() {
function Page (line 3099) | function Page() {
function Page (line 3144) | function Page() {
function Page (line 3176) | function Page() {
function Page (line 3210) | function Page() {
function Page (line 3248) | function Page() {
function Page (line 3281) | function Page() {
function Page (line 3319) | function Page() {
function Page (line 3362) | function Page() {
type DelayError (line 3397) | type DelayError = { delay: number }
function Page (line 3404) | function Page() {
function Page (line 3443) | function Page() {
function Page (line 3511) | function Page() {
function Page (line 3546) | function Page() {
function Page (line 3619) | function Page() {
function Page (line 3655) | function Page() {
function Page (line 3674) | function Page() {
function Page (line 3711) | function Page() {
function Page (line 3761) | function Page() {
function Page (line 3802) | function Page() {
function Page (line 3830) | function Page() {
function Page (line 3859) | function Page() {
function Page (line 3913) | function Page() {
function Page (line 3964) | function Page() {
function Page (line 3984) | function Page() {
function Page (line 4009) | function Page() {
function Page (line 4032) | function Page() {
function Page (line 4063) | function Page() {
function Page (line 4111) | function Page() {
function Page (line 4144) | function Page() {
function Page (line 4211) | function Page() {
function Page (line 4232) | function Page() {
function Page (line 4247) | function Page() {
function Disabled (line 4268) | function Disabled() {
function Page (line 4273) | function Page() {
function Page (line 4298) | function Page() {
function Page (line 4338) | function Page() {
function Page (line 4399) | function Page() {
function Page (line 4441) | function Page() {
function Page (line 4494) | function Page() {
function Page (line 4539) | function Page() {
function Page (line 4593) | function Page() {
function Page (line 4651) | function Page() {
function Page (line 4686) | function Page(props: { limit: number }) {
function Page (line 4748) | function Page() {
function Page (line 4795) | function Page() {
function Page (line 4866) | function Page() {
function queryKeyHashFn (line 4945) | function queryKeyHashFn(x: any) {
function Page (line 4950) | function Page() {
function queryKeyHashFn (line 4969) | function queryKeyHashFn(x: any) {
function Page (line 4976) | function Page() {
function Page (line 4996) | function Page({ enabled }: { enabled: boolean }) {
function App (line 5016) | function App() {
function Page (line 5051) | function Page({ id }: { id: number }) {
function App (line 5077) | function App() {
function Page (line 5111) | function Page({ id }: { id: boolean }) {
function App (line 5133) | function App() {
function Page (line 5175) | function Page() {
function Page (line 5248) | function Page() {
function Page (line 5290) | function Page() {
function Page (line 5353) | function Page() {
function Page (line 5401) | function Page() {
function Page (line 5447) | function Page() {
function Page (line 5495) | function Page() {
function Page (line 5555) | function Page() {
function Component (line 5609) | function Component() {
function Page (line 5629) | function Page() {
function Component (line 5668) | function Component() {
function Page (line 5688) | function Page() {
function Page (line 5726) | function Page() {
function Component (line 5781) | function Component() {
function Page (line 5800) | function Page() {
function Page (line 5853) | function Page() {
function Page (line 5889) | function Page() {
function Page (line 5933) | function Page() {
function Page (line 5984) | function Page() {
function Page (line 6029) | function Page() {
function Page (line 6058) | function Page() {
function Page (line 6100) | function Page() {
function Page (line 6128) | function Page() {
function Page (line 6161) | function Page() {
function Page (line 6196) | function Page() {
function Page (line 6217) | function Page() {
function fetchNumber (line 6253) | async function fetchNumber(id: number) {
function Test (line 6258) | function Test() {
function selector (line 6284) | function selector(data: any) {
function fetchNumber (line 6319) | async function fetchNumber(id: number) {
function Test (line 6324) | function Test() {
function selector (line 6351) | function selector(data: any) {
function Test (line 6387) | function Test() {
function Page (line 6412) | function Page() {
function Page (line 6516) | function Page() {
function Page (line 6530) | function Page({ enabled }: { enabled: boolean }) {
function App (line 6554) | function App() {
function App (line 6581) | function App() {
function Page (line 6612) | function Page() {
function App (line 6635) | function App() {
function Page (line 6727) | function Page() {
function Page (line 6785) | function Page() {
function Example (line 6830) | function Example() {
function Component (line 6854) | function Component() {
function Component (line 6900) | function Component() {
function Component (line 6972) | function Component() {
function Page (line 7019) | function Page() {
FILE: packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx
function Page (line 31) | function Page() {
function Page (line 86) | function Page() {
function App (line 99) | function App() {
function Page (line 124) | function Page() {
function Page (line 159) | function Page() {
FILE: packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx
type Data (line 139) | type Data = string
method select (line 184) | select(data: boolean) {
method select (line 248) | select(data: string) {
FILE: packages/react-query/src/__tests__/useSuspenseQueries.test.tsx
type NumberQueryOptions (line 24) | type NumberQueryOptions = UseSuspenseQueryOptions<number>
constant QUERY_DURATION (line 26) | const QUERY_DURATION = 1000
function SuspenseFallback (line 54) | function SuspenseFallback() {
function SuspendedComponent (line 63) | function SuspendedComponent(props: T) {
function QueriesContainer (line 74) | function QueriesContainer({
function Page (line 154) | function Page() {
function getUserData (line 191) | function getUserData() {
function getName (line 201) | function getName() {
function getAge (line 208) | function getAge() {
function App (line 215) | function App() {
function Fallback (line 274) | function Fallback() {
function Page (line 279) | function Page() {
function Fallback (line 328) | function Fallback() {
function Page (line 333) | function Page() {
function Page (line 385) | function Page() {
function Page (line 439) | function Page() {
function Page (line 487) | function Page() {
function App (line 527) | function App() {
function Page (line 544) | function Page({ count }: { count: number }) {
function Page (line 588) | function Page() {
function Page (line 630) | function Page() {
function App (line 645) | function App() {
function Page (line 682) | function Page() {
function Component (line 690) | function Component() {
function Page2 (line 700) | function Page2() {
function App (line 704) | function App() {
function Page (line 736) | function Page() {
function App (line 751) | function App() {
function Page (line 776) | function Page() {
function Page (line 812) | function Page() {
function Page (line 843) | function Page() {
function Page (line 896) | function Page() {
function Page (line 953) | function Page() {
function Page (line 1001) | function Page() {
FILE: packages/react-query/src/__tests__/useSuspenseQuery.test.tsx
function Page (line 41) | function Page() {
function Page (line 88) | function Page() {
function Page (line 142) | function Page() {
function Page (line 165) | function Page() {
function App (line 174) | function App() {
function Page (line 217) | function Page() {
function Page (line 284) | function Page() {
function Component (line 349) | function Component() {
function Page (line 362) | function Page() {
function Component (line 386) | function Component(props: { queryKey: Array<string> }) {
function Page (line 395) | function Page() {
function Page (line 433) | function Page() {
function App (line 446) | function App() {
function Page (line 500) | function Page() {
function App (line 510) | function App() {
function Page (line 541) | function Page() {
function App (line 552) | function App() {
function Page (line 585) | function Page() {
function App (line 607) | function App() {
function Page (line 651) | function Page() {
function App (line 679) | function App() {
function Page (line 725) | function Page() {
function Page (line 765) | function Page() {
function App (line 786) | function App() {
function Page (line 833) | function Page() {
function Page (line 874) | function Page() {
function App (line 885) | function App() {
function Page (line 905) | function Page() {
function Page (line 942) | function Page() {
function Page (line 975) | function Page() {
FILE: packages/react-query/src/__tests__/utils.tsx
function renderWithClient (line 9) | function renderWithClient(
function Blink (line 25) | function Blink({
function mockOnlineManagerIsOnline (line 45) | function mockOnlineManagerIsOnline(
function setActTimeout (line 51) | function setActTimeout(fn: () => void, ms?: number) {
function setIsServer (line 59) | function setIsServer(value: boolean) {
FILE: packages/react-query/src/infiniteQueryOptions.ts
type UndefinedInitialDataInfiniteOptions (line 13) | type UndefinedInitialDataInfiniteOptions<
type UnusedSkipTokenInfiniteOptions (line 34) | type UnusedSkipTokenInfiniteOptions<
type DefinedInitialDataInfiniteOptions (line 56) | type DefinedInitialDataInfiniteOptions<
function infiniteQueryOptions (line 147) | function infiniteQueryOptions(options: unknown) {
FILE: packages/react-query/src/mutationOptions.ts
function mutationOptions (line 32) | function mutationOptions<
FILE: packages/react-query/src/queryOptions.ts
type UndefinedInitialDataOptions (line 13) | type UndefinedInitialDataOptions<
type UnusedSkipTokenOptions (line 25) | type UnusedSkipTokenOptions<
type DefinedInitialDataOptions (line 40) | type DefinedInitialDataOptions<
function queryOptions (line 85) | function queryOptions(options: unknown) {
FILE: packages/react-query/src/types.ts
type AnyUseBaseQueryOptions (line 22) | type AnyUseBaseQueryOptions = UseBaseQueryOptions<
type UseBaseQueryOptions (line 29) | interface UseBaseQueryOptions<
type UsePrefetchQueryOptions (line 49) | interface UsePrefetchQueryOptions<
type AnyUseQueryOptions (line 64) | type AnyUseQueryOptions = UseQueryOptions<any, any, any, any>
type UseQueryOptions (line 65) | interface UseQueryOptions<
type AnyUseSuspenseQueryOptions (line 75) | type AnyUseSuspenseQueryOptions = UseSuspenseQueryOptions<
type UseSuspenseQueryOptions (line 81) | interface UseSuspenseQueryOptions<
type AnyUseInfiniteQueryOptions (line 96) | type AnyUseInfiniteQueryOptions = UseInfiniteQueryOptions<
type UseInfiniteQueryOptions (line 103) | interface UseInfiniteQueryOptions<
type AnyUseSuspenseInfiniteQueryOptions (line 126) | type AnyUseSuspenseInfiniteQueryOptions =
type UseSuspenseInfiniteQueryOptions (line 128) | interface UseSuspenseInfiniteQueryOptions<
type UseBaseQueryResult (line 150) | type UseBaseQueryResult<
type UseQueryResult (line 155) | type UseQueryResult<
type UseSuspenseQueryResult (line 160) | type UseSuspenseQueryResult<
type DefinedUseQueryResult (line 168) | type DefinedUseQueryResult<
type UseInfiniteQueryResult (line 173) | type UseInfiniteQueryResult<
type DefinedUseInfiniteQueryResult (line 178) | type DefinedUseInfiniteQueryResult<
type UseSuspenseInfiniteQueryResult (line 183) | type UseSuspenseInfiniteQueryResult<
type AnyUseMutationOptions (line 191) | type AnyUseMutationOptions = UseMutationOptions<any, any, any, any>
type UseMutationOptions (line 192) | interface UseMutationOptions<
type UseMutateFunction (line 202) | type UseMutateFunction<
type UseMutateAsyncFunction (line 213) | type UseMutateAsyncFunction<
type UseBaseMutationResult (line 220) | type UseBaseMutationResult<
type UseMutationResult (line 237) | type UseMutationResult<
FILE: packages/react-query/src/useBaseQuery.ts
function useBaseQuery (line 27) | function useBaseQuery<
FILE: packages/react-query/src/useInfiniteQuery.ts
function useInfiniteQuery (line 72) | function useInfiniteQuery(
FILE: packages/react-query/src/useIsFetching.ts
function useIsFetching (line 8) | function useIsFetching(
FILE: packages/react-query/src/useMutation.ts
function useMutation (line 19) | function useMutation<
FILE: packages/react-query/src/useMutationState.ts
function useIsMutating (line 14) | function useIsMutating(
type MutationStateOptions (line 25) | type MutationStateOptions<TResult = MutationState> = {
function getResult (line 30) | function getResult<TResult = MutationState>(
function useMutationState (line 42) | function useMutationState<TResult = MutationState>(
FILE: packages/react-query/src/usePrefetchInfiniteQuery.tsx
function usePrefetchInfiniteQuery (line 9) | function usePrefetchInfiniteQuery<
FILE: packages/react-query/src/usePrefetchQuery.tsx
function usePrefetchQuery (line 5) | function usePrefetchQuery<
FILE: packages/react-query/src/useQueries.ts
type UseQueryOptionsForUseQueries (line 42) | type UseQueryOptionsForUseQueries<
type MAXIMUM_DEPTH (line 55) | type MAXIMUM_DEPTH = 20
type SkipTokenForUseQueries (line 58) | type SkipTokenForUseQueries = symbol
type GetUseQueryOptionsForUseQueries (line 60) | type GetUseQueryOptionsForUseQueries<T> =
type GetDefinedOrUndefinedQueryResult (line 97) | type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T ex...
type GetUseQueryResult (line 113) | type GetUseQueryResult<T> =
type QueriesOptions (line 147) | type QueriesOptions<
type QueriesResults (line 189) | type QueriesResults<
function useQueries (line 207) | function useQueries<
FILE: packages/react-query/src/useQuery.ts
function useQuery (line 50) | function useQuery(options: UseQueryOptions, queryClient?: QueryClient) {
FILE: packages/react-query/src/useSuspenseInfiniteQuery.ts
function useSuspenseInfiniteQuery (line 18) | function useSuspenseInfiniteQuery<
FILE: packages/react-query/src/useSuspenseQueries.ts
type MAXIMUM_DEPTH (line 14) | type MAXIMUM_DEPTH = 20
type SkipTokenForUseQueries (line 17) | type SkipTokenForUseQueries = symbol
type GetUseSuspenseQueryOptions (line 19) | type GetUseSuspenseQueryOptions<T> =
type GetUseSuspenseQueryResult (line 67) | type GetUseSuspenseQueryResult<T> =
type SuspenseQueriesOptions (line 110) | type SuspenseQueriesOptions<
type SuspenseQueriesResults (line 147) | type SuspenseQueriesResults<
function useSuspenseQueries (line 189) | function useSuspenseQueries(options: any, queryClient?: QueryClient) {
FILE: packages/react-query/src/useSuspenseQuery.ts
function useSuspenseQuery (line 8) | function useSuspenseQuery<
FILE: packages/solid-query-devtools/src/clientOnly.tsx
function clientOnly (line 17) | function clientOnly<T extends Component<any>>(
FILE: packages/solid-query-devtools/src/devtools.tsx
type DevtoolsOptions (line 12) | interface DevtoolsOptions {
function SolidQueryDevtools (line 56) | function SolidQueryDevtools(props: DevtoolsOptions) {
FILE: packages/solid-query-devtools/src/devtoolsPanel.tsx
type DevtoolsPanelOptions (line 8) | interface DevtoolsPanelOptions {
function SolidQueryDevtoolsPanel (line 49) | function SolidQueryDevtoolsPanel(props: DevtoolsPanelOptions) {
FILE: packages/solid-query-persist-client/src/PersistQueryClientProvider.tsx
type PersistQueryClientProviderProps (line 11) | type PersistQueryClientProviderProps = QueryClientProviderProps & {
FILE: packages/solid-query-persist-client/src/__tests__/PersistQueryClientProvider.test.tsx
method persistClient (line 17) | persistClient(persistClient: PersistedClient) {
method restoreClient (line 20) | async restoreClient() {
method removeClient (line 23) | removeClient() {
method persistClient (line 36) | async persistClient() {
method restoreClient (line 39) | async restoreClient() {
function Page (line 79) | function Page() {
function Page (line 158) | function Page() {
function Page (line 242) | function Page() {
function Page (line 328) | function Page() {
function Page (line 404) | function Page() {
function Page (line 451) | function Page() {
function App (line 519) | function App() {
function Page (line 553) | function Page() {
FILE: packages/solid-query/src/QueryClient.ts
type QueryObserverOptions (line 12) | interface QueryObserverOptions<
type InfiniteQueryObserverOptions (line 42) | interface InfiniteQueryObserverOptions<
type DefaultOptions (line 70) | interface DefaultOptions<
type QueryClientConfig (line 76) | interface QueryClientConfig extends QueryCoreClientConfig {
class QueryClient (line 80) | class QueryClient extends QueryCoreClient {
method constructor (line 81) | constructor(config: QueryClientConfig = {}) {
FILE: packages/solid-query/src/QueryClientProvider.tsx
type QueryClientProviderProps (line 27) | type QueryClientProviderProps = {
FILE: packages/solid-query/src/__tests__/QueryClientProvider.test.tsx
function Page (line 22) | function Page() {
function Page1 (line 60) | function Page1() {
function Page2 (line 75) | function Page2() {
function Page (line 125) | function Page() {
function Page (line 160) | function Page() {
function Page (line 178) | function Page() {
FILE: packages/solid-query/src/__tests__/mutationOptions.test.tsx
function Mutation (line 49) | function Mutation() {
function Mutation (line 86) | function Mutation() {
function Mutation (line 127) | function Mutation() {
function Mutation (line 170) | function Mutation() {
function Mutation (line 213) | function Mutation() {
function Mutation (line 254) | function Mutation() {
function Mutation (line 299) | function Mutation() {
function Mutation (line 347) | function Mutation() {
function Mutation (line 400) | function Mutation() {
function Mutation (line 439) | function Mutation() {
function Mutation (line 482) | function Mutation() {
function Mutation (line 529) | function Mutation() {
FILE: packages/solid-query/src/__tests__/suspense.test.tsx
function Page (line 40) | function Page() {
function Page (line 93) | function Page() {
function Page (line 154) | function Page() {
function Page (line 181) | function Page() {
function App (line 190) | function App() {
function Page (line 231) | function Page() {
function Page (line 291) | function Page() {
function Component (line 357) | function Component() {
function Page (line 374) | function Page() {
function Component (line 419) | function Component(props: { queryKey: Array<string> }) {
function Page (line 430) | function Page() {
function Page (line 471) | function Page() {
function App (line 488) | function App() {
function Page (line 520) | function Page() {
function App (line 537) | function App() {
function Page (line 571) | function Page() {
function App (line 588) | function App() {
function Page (line 620) | function Page() {
function App (line 638) | function App() {
function Page (line 670) | function Page() {
function Page (line 716) | function Page() {
function App (line 741) | function App() {
function Page (line 782) | function Page() {
function App (line 806) | function App() {
function Page (line 846) | function Page() {
function App (line 876) | function App() {
function Page (line 915) | function Page() {
FILE: packages/solid-query/src/__tests__/transition.test.tsx
function Suspended (line 22) | function Suspended() {
function Page (line 33) | function Page() {
FILE: packages/solid-query/src/__tests__/useInfiniteQuery.test.tsx
type Result (line 31) | interface Result {
function Page (line 69) | function Page() {
function Page (line 171) | function Page() {
function Page (line 216) | function Page() {
function Page (line 314) | function Page() {
function Page (line 359) | function Page() {
function Page (line 406) | function Page() {
function Page (line 479) | function Page() {
function Page (line 564) | function Page() {
function Page (line 690) | function Page() {
function Page (line 799) | function Page() {
function Page (line 901) | function Page() {
function Page (line 1007) | function Page() {
function Page (line 1105) | function Page() {
function Page (line 1186) | function Page() {
function Page (line 1243) | function Page() {
function List (line 1298) | function List() {
function Page (line 1316) | function Page() {
function Page (line 1349) | function Page() {
function Page (line 1440) | function Page() {
function Page (line 1513) | function Page() {
function Page (line 1557) | function Page() {
function Page (line 1602) | function Page() {
function Page (line 1647) | function Page() {
function Page (line 1706) | function Page() {
function Page (line 1838) | function Page() {
function Page (line 1966) | function Page() {
function Page (line 1997) | function Page() {
function Page (line 2030) | function Page() {
FILE: packages/solid-query/src/__tests__/useIsFetching.test.tsx
function IsFetching (line 29) | function IsFetching() {
function Query (line 35) | function Query() {
function Page (line 47) | function Page() {
function IsFetching (line 79) | function IsFetching() {
function FirstQuery (line 89) | function FirstQuery() {
function SecondQuery (line 98) | function SecondQuery() {
function Page (line 107) | function Page() {
function One (line 146) | function One() {
function Two (line 155) | function Two() {
function Page (line 164) | function Page() {
function Page (line 209) | function Page() {
function Page (line 239) | function Page() {
FILE: packages/solid-query/src/__tests__/useIsMutating.test.tsx
function IsMutating (line 27) | function IsMutating() {
function Mutations (line 37) | function Mutations() {
function Page (line 57) | function Page() {
function IsMutating (line 81) | function IsMutating() {
function Page (line 91) | function Page() {
function IsMutating (line 125) | function IsMutating() {
function Page (line 138) | function Page() {
function Page (line 171) | function Page() {
class MutationCacheMock (line 207) | class MutationCacheMock extends QueryCore.MutationCache {
method subscribe (line 208) | subscribe(listener: any) {
function IsMutating (line 222) | function IsMutating() {
function Page (line 227) | function Page() {
FILE: packages/solid-query/src/__tests__/useMutation.test.tsx
function Page (line 34) | function Page() {
function Page (line 69) | function Page() {
function Page (line 112) | function Page() {
type Value (line 167) | type Value = { count: number }
function Page (line 177) | function Page() {
function Page (line 232) | function Page() {
function Page (line 304) | function Page() {
function Page (line 355) | function Page() {
function Page (line 414) | function Page() {
function Page (line 450) | function Page() {
function Page (line 486) | function Page() {
function Page (line 546) | function Page() {
function Page (line 609) | function Page() {
function Page (line 666) | function Page() {
function Mutates (line 752) | function Mutates() {
function Page (line 756) | function Page() {
function Page (line 780) | function Page() {
function Page (line 824) | function Page() {
function Page (line 890) | function Page() {
function Page (line 939) | function Page() {
function Component (line 949) | function Component() {
function Page (line 1011) | function Page() {
function Page (line 1083) | function Page() {
function Page (line 1133) | function Page() {
function Page (line 1183) | function Page() {
function Page (line 1227) | function Page() {
FILE: packages/solid-query/src/__tests__/useMutationState.test.tsx
function States (line 25) | function States() {
function Mutate (line 31) | function Mutate() {
function Page (line 44) | function Page() {
function Variables (line 74) | function Variables() {
function Mutate (line 87) | function Mutate() {
function Page (line 104) | function Page() {
FILE: packages/solid-query/src/__tests__/useQueries.test.tsx
function Page (line 46) | function Page() {
function Page (line 101) | function Page() {
function Page (line 206) | function Page() {
function Page (line 348) | function Page() {
type QueryKeyA (line 567) | type QueryKeyA = ['queryA']
type GetQueryFunctionA (line 569) | type GetQueryFunctionA = () => QueryFunction<number, QueryKeyA>
type SelectorA (line 573) | type SelectorA = (data: number) => [number, string]
type QueryKeyB (line 576) | type QueryKeyB = ['queryB', string]
type GetQueryFunctionB (line 578) | type GetQueryFunctionB = () => QueryFunction<string, QueryKeyB>
type SelectorB (line 582) | type SelectorB = (data: string) => [string, number]
function useWrappedQueries (line 586) | function useWrappedQueries<
function Page (line 623) | function Page() {
class QueriesObserverMock (line 680) | class QueriesObserverMock extends QueriesObserver {
method subscribe (line 681) | subscribe(listener: any) {
function Queries (line 696) | function Queries() {
function Page (line 716) | function Page() {
FILE: packages/solid-query/src/__tests__/useQuery.test.tsx
function Page (line 62) | function Page() {
function Page (line 220) | function Page() {
function Page (line 248) | function Page(): JSX.Element {
function Page (line 356) | function Page() {
function Page (line 485) | function Page() {
function Page (line 521) | function Page() {
function Page (line 560) | function Page() {
function Page (line 599) | function Page() {
function Page (line 641) | function Page() {
function Page (line 666) | function Page() {
function Component (line 684) | function Component({ value }: { value: string }) {
function Page (line 745) | function Page() {
function Page (line 776) | function Page() {
function Page (line 804) | function Page() {
function Page (line 833) | function Page() {
function Page (line 862) | function Page() {
function Page (line 891) | function Page() {
function Page (line 930) | function Page() {
function Page (line 965) | function Page() {
function Page (line 1012) | function Page() {
function Page (line 1058) | function Page() {
function Page (line 1131) | function Page() {
function Page (line 1195) | function Page() {
function Page (line 1243) | function Page() {
function Page (line 1320) | function Page() {
function Page (line 1366) | function Page() {
function Page (line 1411) | function Page() {
function Page (line 1465) | function Page() {
function Page (line 1531) | function Page() {
function Page (line 1610) | function Page() {
function FirstComponent (line 1685) | function FirstComponent() {
function SecondComponent (line 1703) | function SecondComponent() {
function Page (line 1711) | function Page() {
function FirstComponent (line 1759) | function FirstComponent() {
function SecondComponent (line 1771) | function SecondComponent() {
function Page (line 1783) | function Page() {
function Page (line 1849) | function Page() {
function Page (line 1879) | function Page() {
function Page (line 1925) | function Page() {
function Page (line 1967) | function Page() {
function Page (line 1989) | function Page() {
function Page (line 2012) | function Page() {
function Page (line 2044) | function Page() {
function Page (line 2091) | function Page() {
function Page (line 2115) | function Page() {
function Page (line 2148) | function Page() {
function Page (line 2181) | function Page() {
function Page (line 2214) | function Page() {
function Page (line 2247) | function Page() {
function Page (line 2283) | function Page() {
function Page (line 2341) | function Page() {
function Page (line 2385) | function Page() {
function Page (line 2426) | function Page() {
function Page (line 2462) | function Page() {
function Page (line 2501) | function Page() {
function Page (line 2540) | function Page() {
function Page (line 2581) | function Page() {
function Page (line 2623) | function Page() {
function Page (line 2650) | function Page() {
function Page (line 2683) | function Page() {
function Page (line 2725) | function Page() {
function App (line 2747) | function App() {
function Page (line 2793) | function Page() {
function App (line 2814) | function App() {
function Page (line 2874) | function Page() {
function Page (line 2927) | function Page() {
function Page (line 2965) | function Page() {
function Page (line 3005) | function Page() {
function Page (line 3049) | function Page() {
function Page (line 3088) | function Page() {
function Page (line 3133) | function Page() {
function Page (line 3184) | function Page() {
type DelayError (line 3225) | type DelayError = { delay: number }
function Page (line 3233) | function Page() {
function Page (line 3279) | function Page() {
function Page (line 3362) | function Page() {
function Page (line 3406) | function Page() {
function Page (line 3481) | function Page() {
function Page (line 3520) | function Page() {
function Page (line 3541) | function Page() {
function Page (line 3594) | function Page() {
function Page (line 3649) | function Page() {
function Component (line 3689) | function Component() {
function Component (line 3753) | function Component() {
function Page (line 3819) | function Page() {
function Page (line 3853) | function Page() {
function Page (line 3885) | function Page() {
function Page (line 3928) | function Page() {
function Page (line 3953) | function Page() {
function Page (line 3981) | function Page() {
function Page (line 4009) | function Page() {
function Page (line 4044) | function Page() {
function Page (line 4090) | function Page() {
function Page (line 4129) | function Page() {
function Page (line 4209) | function Page() {
function Page (line 4252) | function Page() {
function Page (line 4271) | function Page() {
function Disabled (line 4296) | function Disabled() {
function Page (line 4301) | function Page() {
function Page (line 4337) | function Page() {
function Page (line 4384) | function Page() {
function Page (line 4452) | function Page() {
function Page (line 4501) | function Page() {
function Page (line 4552) | function Page() {
function Page (line 4606) | function Page() {
function Page (line 4656) | function Page() {
function Page (line 4719) | function Page() {
function Page (line 4757) | function Page(props: { limit: number }) {
function Page (line 4819) | function Page() {
function Page (line 4865) | function Page() {
function Page (line 4940) | function Page() {
function queryKeyHashFn (line 5022) | function queryKeyHashFn(x: any) {
function Page (line 5027) | function Page() {
function Page (line 5052) | function Page(props: { enabled: boolean }) {
function App (line 5075) | function App() {
function Page (line 5117) | function Page(props: { id: number }) {
function App (line 5142) | function App() {
function Page (line 5180) | function Page(props: { id: boolean }) {
function App (line 5201) | function App() {
function Page (line 5247) | function Page() {
function Page (line 5327) | function Page() {
function Page (line 5376) | function Page() {
function Page (line 5452) | function Page() {
function Page (line 5507) | function Page() {
function Page (line 5557) | function Page() {
function Page (line 5610) | function Page() {
function Page (line 5679) | function Page() {
function Component (line 5751) | function Component() {
function Page (line 5771) | function Page() {
function Component (line 5816) | function Component() {
function Page (line 5836) | function Page() {
function Page (line 5879) | function Page() {
function Component (line 5939) | function Component() {
function Page (line 5958) | function Page() {
function Page (line 6014) | function Page() {
function Page (line 6056) | function Page() {
function Page (line 6110) | function Page() {
function Page (line 6182) | function Page() {
function Page (line 6217) | function Page() {
function Page (line 6258) | function Page() {
function Page (line 6298) | function Page() {
function Page (line 6342) | function Page() {
function Page (line 6370) | function Page(props: { client: () => QueryClient }) {
FILE: packages/solid-query/src/__tests__/utils.tsx
function Blink (line 7) | function Blink(
function mockOnlineManagerIsOnline (line 27) | function mockOnlineManagerIsOnline(
function setActTimeout (line 33) | function setActTimeout(fn: () => void, ms?: number) {
FILE: packages/solid-query/src/infiniteQueryOptions.ts
type UndefinedInitialDataInfiniteOptions (line 11) | type UndefinedInitialDataInfiniteOptions<
type DefinedInitialDataInfiniteOptions (line 29) | type DefinedInitialDataInfiniteOptions<
function infiniteQueryOptions (line 104) | function infiniteQueryOptions(options: unknown) {
FILE: packages/solid-query/src/mutationOptions.ts
function mutationOptions (line 32) | function mutationOptions<
FILE: packages/solid-query/src/queryOptions.ts
type UndefinedInitialDataOptions (line 5) | type UndefinedInitialDataOptions<
type DefinedInitialDataOptions (line 16) | type DefinedInitialDataOptions<
function queryOptions (line 57) | function queryOptions(options: unknown) {
FILE: packages/solid-query/src/types.ts
type UseBaseQueryOptions (line 22) | interface UseBaseQueryOptions<
type SolidQueryOptions (line 47) | interface SolidQueryOptions<
type UseQueryOptions (line 60) | type UseQueryOptions<
type UseBaseQueryResult (line 69) | type UseBaseQueryResult<
type UseQueryResult (line 74) | type UseQueryResult<
type DefinedUseBaseQueryResult (line 79) | type DefinedUseBaseQueryResult<
type DefinedUseQueryResult (line 84) | type DefinedUseQueryResult<
type SolidInfiniteQueryOptions (line 90) | interface SolidInfiniteQueryOptions<
type UseInfiniteQueryOptions (line 122) | type UseInfiniteQueryOptions<
type UseInfiniteQueryResult (line 132) | type UseInfiniteQueryResult<
type DefinedUseInfiniteQueryResult (line 137) | type DefinedUseInfiniteQueryResult<
type SolidMutationOptions (line 143) | interface SolidMutationOptions<
type UseMutationOptions (line 153) | type UseMutationOptions<
type UseMutateFunction (line
Condensed preview — 2057 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,059K chars).
[
{
"path": ".changeset/config.json",
"chars": 447,
"preview": "{\n \"$schema\": \"https://unpkg.com/@changesets/config@3.1.2/schema.json\",\n \"changelog\": [\n \"@svitejs/changesets-chang"
},
{
"path": ".editorconfig",
"chars": 147,
"preview": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_"
},
{
"path": ".gitattributes",
"chars": 73,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto eol=lf\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 32,
"preview": "github: [tannerlinsley, tkdodo]\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 5568,
"preview": "name: '🐛 Bug report'\ndescription: Report a reproducible bug or regression\nbody:\n - type: markdown\n attributes:\n "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 446,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: 🤔 Feature Requests & Questions\n url: https://github.com/TanStack"
},
{
"path": ".github/pull_request_template.md",
"chars": 530,
"preview": "## 🎯 Changes\n\n<!-- What changes are made in this PR? Describe the change and its motivation. -->\n\n## ✅ Checklist\n\n- [ ] "
},
{
"path": ".github/renovate.json",
"chars": 873,
"preview": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"configMigration\": true,\n \"extends\": [\n \"confi"
},
{
"path": ".github/workflows/autofix.yml",
"chars": 720,
"preview": "name: autofix.ci # needed to securely identify the workflow\n\non:\n pull_request:\n push:\n branches: [main, 'v[0-9]', "
},
{
"path": ".github/workflows/detect-agent.yml",
"chars": 503,
"preview": "name: Detect Agent\n\non:\n pull_request_target:\n types: [opened]\n workflow_dispatch: {}\n\npermissions:\n issues: write"
},
{
"path": ".github/workflows/labeler.yml",
"chars": 342,
"preview": "name: Labeler\n\non:\n pull_request_target:\n\npermissions:\n contents: read\n pull-requests: write\n\njobs:\n labeler:\n na"
},
{
"path": ".github/workflows/pr.yml",
"chars": 2324,
"preview": "name: PR\n\non:\n pull_request:\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.event.number || github.ref }}\n c"
},
{
"path": ".github/workflows/release.yml",
"chars": 3318,
"preview": "name: Release\n\non:\n push:\n branches: [main, 'v[0-9]', '*-pre', '*-maint']\n\nconcurrency:\n group: ${{ github.workflow"
},
{
"path": ".gitignore",
"chars": 665,
"preview": "\n# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\npackage-lock.js"
},
{
"path": ".npmrc",
"chars": 16,
"preview": "provenance=true\n"
},
{
"path": ".nvmrc",
"chars": 7,
"preview": "24.8.0\n"
},
{
"path": ".nx/workflows/dynamic-changesets.yaml",
"chars": 127,
"preview": "distribute-on:\n small-changeset: 3 linux-medium-js\n medium-changeset: 4 linux-medium-js\n large-changeset: 5 linux-med"
},
{
"path": ".prettierignore",
"chars": 228,
"preview": "**/.next\n**/.nx/cache\n**/.svelte-kit\n**/build\n**/coverage\n**/dist\n**/query-codemods/**/__testfixtures__\n.changeset/*.md\n"
},
{
"path": ".size-limit.json",
"chars": 379,
"preview": "[\n {\n \"name\": \"react full\",\n \"path\": \"packages/react-query/build/modern/index.js\",\n \"limit\": \"13.00 kB\",\n \""
},
{
"path": "CONTRIBUTING.md",
"chars": 7125,
"preview": "# Contributing\n\n## Questions\n\nIf you have questions about implementation details, help or support, then please use our d"
},
{
"path": "FUNDING.json",
"chars": 107,
"preview": "{\n \"drips\": {\n \"ethereum\": {\n \"ownedBy\": \"0xD5371B61b35E13F2ae354BE95081aD63FB383452\"\n }\n }\n}\n"
},
{
"path": "LICENSE",
"chars": 1079,
"preview": "MIT License\n\nCopyright (c) 2021-present Tanner Linsley\n\nPermission is hereby granted, free of charge, to any person obta"
},
{
"path": "README.md",
"chars": 5120,
"preview": "<img referrerpolicy=\"no-referrer-when-downgrade\" src=\"https://static.scarf.sh/a.png?x-pxid=be2d8a11-9712-4c1d-9963-580b2"
},
{
"path": "docs/community-resources.md",
"chars": 7585,
"preview": "---\ntitle: Community Resources\narticles:\n [\n {\n title: \"TkDodo's Blog Posts\",\n url: 'https://tkdodo.eu/blo"
},
{
"path": "docs/config.json",
"chars": 51838,
"preview": "{\n \"$schema\": \"https://raw.githubusercontent.com/TanStack/tanstack.com/main/tanstack-docs-config.schema.json\",\n \"docSe"
},
{
"path": "docs/eslint/eslint-plugin-query.md",
"chars": 2108,
"preview": "---\nid: eslint-plugin-query\ntitle: ESLint Plugin Query\n---\n\nTanStack Query comes with its own ESLint plugin. This plugin"
},
{
"path": "docs/eslint/exhaustive-deps.md",
"chars": 1072,
"preview": "---\nid: exhaustive-deps\ntitle: Exhaustive dependencies for query keys\n---\n\nQuery keys should be seen like a dependency a"
},
{
"path": "docs/eslint/infinite-query-property-order.md",
"chars": 1706,
"preview": "---\nid: infinite-query-property-order\ntitle: Ensure correct order of inference sensitive properties for infinite queries"
},
{
"path": "docs/eslint/mutation-property-order.md",
"chars": 1782,
"preview": "---\nid: mutation-property-order\ntitle: Ensure correct order of inference-sensitive properties in useMutation()\n---\n\nFor "
},
{
"path": "docs/eslint/no-rest-destructuring.md",
"chars": 1119,
"preview": "---\nid: no-rest-destructuring\ntitle: Disallow object rest destructuring on query results\n---\n\nUse object rest destructur"
},
{
"path": "docs/eslint/no-unstable-deps.md",
"chars": 1496,
"preview": "---\nid: no-unstable-deps\ntitle: Disallow putting the result of query hooks directly in a React hook dependency array\n---"
},
{
"path": "docs/eslint/no-void-query-fn.md",
"chars": 857,
"preview": "---\nid: no-void-query-fn\ntitle: Disallow returning void from query functions\n---\n\nQuery functions must return a value th"
},
{
"path": "docs/eslint/stable-query-client.md",
"chars": 1274,
"preview": "---\nid: stable-query-client\ntitle: Stable Query Client\n---\n\nThe QueryClient contains the QueryCache, so you'd only want "
},
{
"path": "docs/framework/angular/angular-httpclient-and-other-data-fetching-clients.md",
"chars": 3394,
"preview": "---\nid: Angular-HttpClient-and-other-data-fetching-clients\ntitle: Angular HttpClient and other data fetching clients\n---"
},
{
"path": "docs/framework/angular/devtools.md",
"chars": 7484,
"preview": "---\nid: devtools\ntitle: Devtools\n---\n\n> For Chrome, Firefox, and Edge users: Third-party browser extensions are availabl"
},
{
"path": "docs/framework/angular/guides/background-fetching-indicators.md",
"chars": 1274,
"preview": "---\nid: background-fetching-indicators\ntitle: Background Fetching Indicators\nref: docs/framework/react/guides/background"
},
{
"path": "docs/framework/angular/guides/caching.md",
"chars": 2720,
"preview": "---\nid: caching\ntitle: Caching Examples\n---\n\n> Please thoroughly read the [Important Defaults](./important-defaults.md) "
},
{
"path": "docs/framework/angular/guides/default-query-function.md",
"chars": 1116,
"preview": "---\nid: default-query-function\ntitle: Default Query Function\nref: docs/framework/react/guides/default-query-function.md\n"
},
{
"path": "docs/framework/angular/guides/dependent-queries.md",
"chars": 697,
"preview": "---\nid: dependent-queries\ntitle: Dependent Queries\nref: docs/framework/react/guides/dependent-queries.md\nreplace: { 'use"
},
{
"path": "docs/framework/angular/guides/disabling-queries.md",
"chars": 2032,
"preview": "---\nid: disabling-queries\ntitle: Disabling/Pausing Queries\nref: docs/framework/react/guides/disabling-queries.md\nreplace"
},
{
"path": "docs/framework/angular/guides/does-this-replace-client-state.md",
"chars": 277,
"preview": "---\nid: does-this-replace-client-state\ntitle: Does TanStack Query replace global state managers?\nref: docs/framework/rea"
},
{
"path": "docs/framework/angular/guides/filters.md",
"chars": 79,
"preview": "---\nid: filters\ntitle: Filters\nref: docs/framework/react/guides/filters.md\n---\n"
},
{
"path": "docs/framework/angular/guides/important-defaults.md",
"chars": 364,
"preview": "---\nid: important-defaults\ntitle: Important Defaults\nref: docs/framework/react/guides/important-defaults.md\nreplace:\n {"
},
{
"path": "docs/framework/angular/guides/infinite-queries.md",
"chars": 3688,
"preview": "---\nid: infinite-queries\ntitle: Infinite Queries\nref: docs/framework/react/guides/infinite-queries.md\nreplace:\n { 'useQ"
},
{
"path": "docs/framework/angular/guides/initial-query-data.md",
"chars": 3065,
"preview": "---\nid: initial-query-data\ntitle: Initial Query Data\nref: docs/framework/react/guides/initial-query-data.md\nreplace:\n {"
},
{
"path": "docs/framework/angular/guides/invalidations-from-mutations.md",
"chars": 994,
"preview": "---\nid: invalidations-from-mutations\ntitle: Invalidations from Mutations\nref: docs/framework/react/guides/invalidations-"
},
{
"path": "docs/framework/angular/guides/mutation-options.md",
"chars": 847,
"preview": "---\nid: query-options\ntitle: Mutation Options\n---\n\nOne of the best ways to share mutation options between multiple place"
},
{
"path": "docs/framework/angular/guides/mutations.md",
"chars": 6256,
"preview": "---\nid: mutations\ntitle: Mutations\nref: docs/framework/react/guides/mutations.md\nreplace:\n {\n 'useMutation': 'inject"
},
{
"path": "docs/framework/angular/guides/network-mode.md",
"chars": 94,
"preview": "---\nid: network-mode\ntitle: Network Mode\nref: docs/framework/react/guides/network-mode.md\n---\n"
},
{
"path": "docs/framework/angular/guides/optimistic-updates.md",
"chars": 4294,
"preview": "---\nid: optimistic-updates\ntitle: Optimistic Updates\nref: docs/framework/react/guides/optimistic-updates.md\nreplace:\n {"
},
{
"path": "docs/framework/angular/guides/paginated-queries.md",
"chars": 2896,
"preview": "---\nid: paginated-queries\ntitle: Paginated / Lagged Queries\nref: docs/framework/react/guides/paginated-queries.md\nreplac"
},
{
"path": "docs/framework/angular/guides/parallel-queries.md",
"chars": 1496,
"preview": "---\nid: parallel-queries\ntitle: Parallel Queries\nref: docs/framework/react/guides/parallel-queries.md\nreplace:\n {\n '"
},
{
"path": "docs/framework/angular/guides/placeholder-query-data.md",
"chars": 1292,
"preview": "---\nid: placeholder-query-data\ntitle: Placeholder Query Data\nref: docs/framework/react/guides/placeholder-query-data.md\n"
},
{
"path": "docs/framework/angular/guides/queries.md",
"chars": 2241,
"preview": "---\nid: queries\ntitle: Queries\nref: docs/framework/react/guides/queries.md\nreplace:\n {\n 'React': 'Angular',\n 'rea"
},
{
"path": "docs/framework/angular/guides/query-cancellation.md",
"chars": 3403,
"preview": "---\nid: query-cancellation\ntitle: Query Cancellation\n---\n\nTanStack Query provides each query function with an [`AbortSig"
},
{
"path": "docs/framework/angular/guides/query-functions.md",
"chars": 1547,
"preview": "---\nid: query-functions\ntitle: Query Functions\nref: docs/framework/react/guides/query-functions.md\n---\n\n[//]: # 'Example"
},
{
"path": "docs/framework/angular/guides/query-invalidation.md",
"chars": 2865,
"preview": "---\nid: query-invalidation\ntitle: Query Invalidation\nref: docs/framework/react/guides/query-invalidation.md\nreplace: { '"
},
{
"path": "docs/framework/angular/guides/query-keys.md",
"chars": 1447,
"preview": "---\nid: query-keys\ntitle: Query Keys\nref: docs/framework/react/guides/query-keys.md\n#todo: exhaustive-deps is at least f"
},
{
"path": "docs/framework/angular/guides/query-options.md",
"chars": 1159,
"preview": "---\nid: query-options\ntitle: Query Options\nref: docs/framework/react/guides/query-options.md\n---\n\n[//]: # 'Example1'\n\n``"
},
{
"path": "docs/framework/angular/guides/query-retries.md",
"chars": 1496,
"preview": "---\nid: query-retries\ntitle: Query Retries\nref: docs/framework/react/guides/query-retries.md\nreplace:\n {\n 'Provider'"
},
{
"path": "docs/framework/angular/guides/scroll-restoration.md",
"chars": 112,
"preview": "---\nid: scroll-restoration\ntitle: Scroll Restoration\nref: docs/framework/react/guides/scroll-restoration.md\n---\n"
},
{
"path": "docs/framework/angular/guides/testing.md",
"chars": 5080,
"preview": "---\nid: testing\ntitle: Testing\n---\n\nMost Angular tests using TanStack Query will involve services or components that cal"
},
{
"path": "docs/framework/angular/guides/window-focus-refetching.md",
"chars": 713,
"preview": "---\nid: window-focus-refetching\ntitle: Window Focus Refetching\nref: docs/framework/react/guides/window-focus-refetching."
},
{
"path": "docs/framework/angular/installation.md",
"chars": 787,
"preview": "---\nid: installation\ntitle: Installation\n---\n\n> IMPORTANT: This library is currently in an experimental stage. This mean"
},
{
"path": "docs/framework/angular/overview.md",
"chars": 5656,
"preview": "---\nid: overview\ntitle: Overview\n---\n\n> IMPORTANT: This library is currently in an experimental stage. This means that b"
},
{
"path": "docs/framework/angular/quick-start.md",
"chars": 2737,
"preview": "---\nid: quick-start\ntitle: Quick Start\n---\n\n> IMPORTANT: This library is currently in an experimental stage. This means "
},
{
"path": "docs/framework/angular/reference/functions/infiniteQueryOptions.md",
"chars": 4127,
"preview": "---\nid: infiniteQueryOptions\ntitle: infiniteQueryOptions\n---\n\n# Function: infiniteQueryOptions()\n\nAllows to share and re"
},
{
"path": "docs/framework/angular/reference/functions/injectInfiniteQuery.md",
"chars": 4483,
"preview": "---\nid: injectInfiniteQuery\ntitle: injectInfiniteQuery\n---\n\n# Function: injectInfiniteQuery()\n\nInjects an infinite query"
},
{
"path": "docs/framework/angular/reference/functions/injectIsFetching.md",
"chars": 773,
"preview": "---\nid: injectIsFetching\ntitle: injectIsFetching\n---\n\n# Function: injectIsFetching()\n\n```ts\nfunction injectIsFetching(fi"
},
{
"path": "docs/framework/angular/reference/functions/injectIsMutating.md",
"chars": 776,
"preview": "---\nid: injectIsMutating\ntitle: injectIsMutating\n---\n\n# Function: injectIsMutating()\n\n```ts\nfunction injectIsMutating(fi"
},
{
"path": "docs/framework/angular/reference/functions/injectIsRestoring.md",
"chars": 724,
"preview": "---\nid: injectIsRestoring\ntitle: injectIsRestoring\n---\n\n# Function: injectIsRestoring()\n\n```ts\nfunction injectIsRestorin"
},
{
"path": "docs/framework/angular/reference/functions/injectMutation.md",
"chars": 1199,
"preview": "---\nid: injectMutation\ntitle: injectMutation\n---\n\n# Function: injectMutation()\n\n```ts\nfunction injectMutation<TData, TEr"
},
{
"path": "docs/framework/angular/reference/functions/injectMutationState.md",
"chars": 861,
"preview": "---\nid: injectMutationState\ntitle: injectMutationState\n---\n\n# Function: injectMutationState()\n\n```ts\nfunction injectMuta"
},
{
"path": "docs/framework/angular/reference/functions/injectQuery.md",
"chars": 7051,
"preview": "---\nid: injectQuery\ntitle: injectQuery\n---\n\n# Function: injectQuery()\n\nInjects a query: a declarative dependency on an a"
},
{
"path": "docs/framework/angular/reference/functions/injectQueryClient.md",
"chars": 790,
"preview": "---\nid: injectQueryClient\ntitle: injectQueryClient\n---\n\n# ~~Function: injectQueryClient()~~\n\n```ts\nfunction injectQueryC"
},
{
"path": "docs/framework/angular/reference/functions/mutationOptions.md",
"chars": 4121,
"preview": "---\nid: mutationOptions\ntitle: mutationOptions\n---\n\n# Function: mutationOptions()\n\nAllows to share and re-use mutation o"
},
{
"path": "docs/framework/angular/reference/functions/provideAngularQuery.md",
"chars": 703,
"preview": "---\nid: provideAngularQuery\ntitle: provideAngularQuery\n---\n\n# ~~Function: provideAngularQuery()~~\n\n```ts\nfunction provid"
},
{
"path": "docs/framework/angular/reference/functions/provideIsRestoring.md",
"chars": 573,
"preview": "---\nid: provideIsRestoring\ntitle: provideIsRestoring\n---\n\n# Function: provideIsRestoring()\n\n```ts\nfunction provideIsRest"
},
{
"path": "docs/framework/angular/reference/functions/provideQueryClient.md",
"chars": 1013,
"preview": "---\nid: provideQueryClient\ntitle: provideQueryClient\n---\n\n# Function: provideQueryClient()\n\n```ts\nfunction provideQueryC"
},
{
"path": "docs/framework/angular/reference/functions/provideTanStackQuery.md",
"chars": 2588,
"preview": "---\nid: provideTanStackQuery\ntitle: provideTanStackQuery\n---\n\n# Function: provideTanStackQuery()\n\n```ts\nfunction provide"
},
{
"path": "docs/framework/angular/reference/functions/queryFeature.md",
"chars": 641,
"preview": "---\nid: queryFeature\ntitle: queryFeature\n---\n\n# Function: queryFeature()\n\n```ts\nfunction queryFeature<TFeatureKind>(kind"
},
{
"path": "docs/framework/angular/reference/functions/queryOptions.md",
"chars": 4622,
"preview": "---\nid: queryOptions\ntitle: queryOptions\n---\n\n# Function: queryOptions()\n\nAllows to share and re-use query options in a "
},
{
"path": "docs/framework/angular/reference/index.md",
"chars": 3245,
"preview": "---\nid: \"@tanstack/angular-query-experimental\"\ntitle: \"@tanstack/angular-query-experimental\"\n---\n\n# @tanstack/angular-qu"
},
{
"path": "docs/framework/angular/reference/interfaces/BaseMutationNarrowing.md",
"chars": 2536,
"preview": "---\nid: BaseMutationNarrowing\ntitle: BaseMutationNarrowing\n---\n\n# Interface: BaseMutationNarrowing\\<TData, TError, TVari"
},
{
"path": "docs/framework/angular/reference/interfaces/BaseQueryNarrowing.md",
"chars": 1879,
"preview": "---\nid: BaseQueryNarrowing\ntitle: BaseQueryNarrowing\n---\n\n# Interface: BaseQueryNarrowing\\<TData, TError\\>\n\nDefined in: "
},
{
"path": "docs/framework/angular/reference/interfaces/CreateBaseQueryOptions.md",
"chars": 634,
"preview": "---\nid: CreateBaseQueryOptions\ntitle: CreateBaseQueryOptions\n---\n\n# Interface: CreateBaseQueryOptions\\<TQueryFnData, TEr"
},
{
"path": "docs/framework/angular/reference/interfaces/CreateInfiniteQueryOptions.md",
"chars": 678,
"preview": "---\nid: CreateInfiniteQueryOptions\ntitle: CreateInfiniteQueryOptions\n---\n\n# Interface: CreateInfiniteQueryOptions\\<TQuer"
},
{
"path": "docs/framework/angular/reference/interfaces/CreateMutationOptions.md",
"chars": 580,
"preview": "---\nid: CreateMutationOptions\ntitle: CreateMutationOptions\n---\n\n# Interface: CreateMutationOptions\\<TData, TError, TVari"
},
{
"path": "docs/framework/angular/reference/interfaces/CreateQueryOptions.md",
"chars": 625,
"preview": "---\nid: CreateQueryOptions\ntitle: CreateQueryOptions\n---\n\n# Interface: CreateQueryOptions\\<TQueryFnData, TError, TData, "
},
{
"path": "docs/framework/angular/reference/interfaces/InjectInfiniteQueryOptions.md",
"chars": 646,
"preview": "---\nid: InjectInfiniteQueryOptions\ntitle: InjectInfiniteQueryOptions\n---\n\n# Interface: InjectInfiniteQueryOptions\n\nDefin"
},
{
"path": "docs/framework/angular/reference/interfaces/InjectIsFetchingOptions.md",
"chars": 628,
"preview": "---\nid: InjectIsFetchingOptions\ntitle: InjectIsFetchingOptions\n---\n\n# Interface: InjectIsFetchingOptions\n\nDefined in: [i"
},
{
"path": "docs/framework/angular/reference/interfaces/InjectIsMutatingOptions.md",
"chars": 628,
"preview": "---\nid: InjectIsMutatingOptions\ntitle: InjectIsMutatingOptions\n---\n\n# Interface: InjectIsMutatingOptions\n\nDefined in: [i"
},
{
"path": "docs/framework/angular/reference/interfaces/InjectMutationOptions.md",
"chars": 601,
"preview": "---\nid: InjectMutationOptions\ntitle: InjectMutationOptions\n---\n\n# Interface: InjectMutationOptions\n\nDefined in: [inject-"
},
{
"path": "docs/framework/angular/reference/interfaces/InjectMutationStateOptions.md",
"chars": 653,
"preview": "---\nid: InjectMutationStateOptions\ntitle: InjectMutationStateOptions\n---\n\n# Interface: InjectMutationStateOptions\n\nDefin"
},
{
"path": "docs/framework/angular/reference/interfaces/InjectQueryOptions.md",
"chars": 577,
"preview": "---\nid: InjectQueryOptions\ntitle: InjectQueryOptions\n---\n\n# Interface: InjectQueryOptions\n\nDefined in: [inject-query.ts:"
},
{
"path": "docs/framework/angular/reference/interfaces/QueryFeature.md",
"chars": 733,
"preview": "---\nid: QueryFeature\ntitle: QueryFeature\n---\n\n# Interface: QueryFeature\\<TFeatureKind\\>\n\nDefined in: [providers.ts:135]("
},
{
"path": "docs/framework/angular/reference/type-aliases/CreateBaseMutationResult.md",
"chars": 855,
"preview": "---\nid: CreateBaseMutationResult\ntitle: CreateBaseMutationResult\n---\n\n# Type Alias: CreateBaseMutationResult\\<TData, TEr"
},
{
"path": "docs/framework/angular/reference/type-aliases/CreateBaseQueryResult.md",
"chars": 576,
"preview": "---\nid: CreateBaseQueryResult\ntitle: CreateBaseQueryResult\n---\n\n# Type Alias: CreateBaseQueryResult\\<TData, TError, TSta"
},
{
"path": "docs/framework/angular/reference/type-aliases/CreateInfiniteQueryResult.md",
"chars": 500,
"preview": "---\nid: CreateInfiniteQueryResult\ntitle: CreateInfiniteQueryResult\n---\n\n# Type Alias: CreateInfiniteQueryResult\\<TData, "
},
{
"path": "docs/framework/angular/reference/type-aliases/CreateMutateAsyncFunction.md",
"chars": 615,
"preview": "---\nid: CreateMutateAsyncFunction\ntitle: CreateMutateAsyncFunction\n---\n\n# Type Alias: CreateMutateAsyncFunction\\<TData, "
},
{
"path": "docs/framework/angular/reference/type-aliases/CreateMutateFunction.md",
"chars": 692,
"preview": "---\nid: CreateMutateFunction\ntitle: CreateMutateFunction\n---\n\n# Type Alias: CreateMutateFunction()\\<TData, TError, TVari"
},
{
"path": "docs/framework/angular/reference/type-aliases/CreateMutationResult.md",
"chars": 879,
"preview": "---\nid: CreateMutationResult\ntitle: CreateMutationResult\n---\n\n# Type Alias: CreateMutationResult\\<TData, TError, TVariab"
},
{
"path": "docs/framework/angular/reference/type-aliases/CreateQueryResult.md",
"chars": 412,
"preview": "---\nid: CreateQueryResult\ntitle: CreateQueryResult\n---\n\n# Type Alias: CreateQueryResult\\<TData, TError\\>\n\n```ts\ntype Cre"
},
{
"path": "docs/framework/angular/reference/type-aliases/DefinedCreateInfiniteQueryResult.md",
"chars": 669,
"preview": "---\nid: DefinedCreateInfiniteQueryResult\ntitle: DefinedCreateInfiniteQueryResult\n---\n\n# Type Alias: DefinedCreateInfinit"
},
{
"path": "docs/framework/angular/reference/type-aliases/DefinedCreateQueryResult.md",
"chars": 597,
"preview": "---\nid: DefinedCreateQueryResult\ntitle: DefinedCreateQueryResult\n---\n\n# Type Alias: DefinedCreateQueryResult\\<TData, TEr"
},
{
"path": "docs/framework/angular/reference/type-aliases/DefinedInitialDataInfiniteOptions.md",
"chars": 1002,
"preview": "---\nid: DefinedInitialDataInfiniteOptions\ntitle: DefinedInitialDataInfiniteOptions\n---\n\n# Type Alias: DefinedInitialData"
},
{
"path": "docs/framework/angular/reference/type-aliases/DefinedInitialDataOptions.md",
"chars": 892,
"preview": "---\nid: DefinedInitialDataOptions\ntitle: DefinedInitialDataOptions\n---\n\n# Type Alias: DefinedInitialDataOptions\\<TQueryF"
},
{
"path": "docs/framework/angular/reference/type-aliases/DevtoolsFeature.md",
"chars": 448,
"preview": "---\nid: DevtoolsFeature\ntitle: DevtoolsFeature\n---\n\n# Type Alias: DevtoolsFeature\n\n```ts\ntype DevtoolsFeature = QueryFea"
},
{
"path": "docs/framework/angular/reference/type-aliases/PersistQueryClientFeature.md",
"chars": 482,
"preview": "---\nid: PersistQueryClientFeature\ntitle: PersistQueryClientFeature\n---\n\n# Type Alias: PersistQueryClientFeature\n\n```ts\nt"
},
{
"path": "docs/framework/angular/reference/type-aliases/QueriesOptions.md",
"chars": 1171,
"preview": "---\nid: QueriesOptions\ntitle: QueriesOptions\n---\n\n# Type Alias: QueriesOptions\\<T, TResults, TDepth\\>\n\n```ts\ntype Querie"
},
{
"path": "docs/framework/angular/reference/type-aliases/QueriesResults.md",
"chars": 863,
"preview": "---\nid: QueriesResults\ntitle: QueriesResults\n---\n\n# Type Alias: QueriesResults\\<T, TResults, TDepth\\>\n\n```ts\ntype Querie"
},
{
"path": "docs/framework/angular/reference/type-aliases/QueryFeatures.md",
"chars": 697,
"preview": "---\nid: QueryFeatures\ntitle: QueryFeatures\n---\n\n# Type Alias: QueryFeatures\n\n```ts\ntype QueryFeatures = \n | DevtoolsFea"
},
{
"path": "docs/framework/angular/reference/type-aliases/UndefinedInitialDataInfiniteOptions.md",
"chars": 1019,
"preview": "---\nid: UndefinedInitialDataInfiniteOptions\ntitle: UndefinedInitialDataInfiniteOptions\n---\n\n# Type Alias: UndefinedIniti"
},
{
"path": "docs/framework/angular/reference/type-aliases/UndefinedInitialDataOptions.md",
"chars": 825,
"preview": "---\nid: UndefinedInitialDataOptions\ntitle: UndefinedInitialDataOptions\n---\n\n# Type Alias: UndefinedInitialDataOptions\\<T"
},
{
"path": "docs/framework/angular/reference/type-aliases/UnusedSkipTokenInfiniteOptions.md",
"chars": 991,
"preview": "---\nid: UnusedSkipTokenInfiniteOptions\ntitle: UnusedSkipTokenInfiniteOptions\n---\n\n# Type Alias: UnusedSkipTokenInfiniteO"
},
{
"path": "docs/framework/angular/reference/type-aliases/UnusedSkipTokenOptions.md",
"chars": 829,
"preview": "---\nid: UnusedSkipTokenOptions\ntitle: UnusedSkipTokenOptions\n---\n\n# Type Alias: UnusedSkipTokenOptions\\<TQueryFnData, TE"
},
{
"path": "docs/framework/angular/typescript.md",
"chars": 5956,
"preview": "---\nid: typescript\ntitle: TypeScript\nref: docs/framework/react/typescript.md\nreplace:\n {\n 'useQuery': 'injectQuery',"
},
{
"path": "docs/framework/angular/zoneless.md",
"chars": 569,
"preview": "---\nid: zoneless\ntitle: Zoneless Angular\n---\n\nBecause the Angular adapter for TanStack Query is built on signals, it ful"
},
{
"path": "docs/framework/preact/devtools.md",
"chars": 4035,
"preview": "---\nid: devtools\ntitle: Devtools\n---\n\nWave your hands in the air and shout hooray because Preact Query comes with dedica"
},
{
"path": "docs/framework/preact/graphql.md",
"chars": 134,
"preview": "---\nid: graphql\ntitle: GraphQL\nref: docs/framework/react/graphql.md\nreplace: { 'react-query': 'preact-query', 'React': '"
},
{
"path": "docs/framework/preact/guides/background-fetching-indicators.md",
"chars": 210,
"preview": "---\nid: background-fetching-indicators\ntitle: Background Fetching Indicators\nref: docs/framework/react/guides/background"
},
{
"path": "docs/framework/preact/guides/caching.md",
"chars": 150,
"preview": "---\nid: caching\ntitle: Caching Examples\nref: docs/framework/react/guides/caching.md\nreplace: { 'react-query': 'preact-qu"
},
{
"path": "docs/framework/preact/guides/default-query-function.md",
"chars": 186,
"preview": "---\nid: default-query-function\ntitle: Default Query Function\nref: docs/framework/react/guides/default-query-function.md\n"
},
{
"path": "docs/framework/preact/guides/dependent-queries.md",
"chars": 171,
"preview": "---\nid: dependent-queries\ntitle: Dependent Queries\nref: docs/framework/react/guides/dependent-queries.md\nreplace: { 'rea"
},
{
"path": "docs/framework/preact/guides/disabling-queries.md",
"chars": 1237,
"preview": "---\nid: disabling-queries\ntitle: Disabling/Pausing Queries\nref: docs/framework/react/guides/disabling-queries.md\nreplace"
},
{
"path": "docs/framework/preact/guides/does-this-replace-client-state.md",
"chars": 251,
"preview": "---\nid: does-this-replace-client-state\ntitle: Does TanStack Query replace Redux, MobX or other global state managers?\nre"
},
{
"path": "docs/framework/preact/guides/filters.md",
"chars": 141,
"preview": "---\nid: filters\ntitle: Filters\nref: docs/framework/react/guides/filters.md\nreplace: { 'react-query': 'preact-query', 'Re"
},
{
"path": "docs/framework/preact/guides/important-defaults.md",
"chars": 174,
"preview": "---\nid: important-defaults\ntitle: Important Defaults\nref: docs/framework/react/guides/important-defaults.md\nreplace: { '"
},
{
"path": "docs/framework/preact/guides/infinite-queries.md",
"chars": 1467,
"preview": "---\nid: infinite-queries\ntitle: Infinite Queries\nref: docs/framework/react/guides/infinite-queries.md\nreplace: { 'react-"
},
{
"path": "docs/framework/preact/guides/initial-query-data.md",
"chars": 174,
"preview": "---\nid: initial-query-data\ntitle: Initial Query Data\nref: docs/framework/react/guides/initial-query-data.md\nreplace: { '"
},
{
"path": "docs/framework/preact/guides/invalidations-from-mutations.md",
"chars": 204,
"preview": "---\nid: invalidations-from-mutations\ntitle: Invalidations from Mutations\nref: docs/framework/react/guides/invalidations-"
},
{
"path": "docs/framework/preact/guides/mutations.md",
"chars": 218,
"preview": "---\nid: mutations\ntitle: Mutations\nref: docs/framework/react/guides/mutations.md\nreplace: { 'react-query': 'preact-query"
},
{
"path": "docs/framework/preact/guides/network-mode.md",
"chars": 156,
"preview": "---\nid: network-mode\ntitle: Network Mode\nref: docs/framework/react/guides/network-mode.md\nreplace: { 'react-query': 'pre"
},
{
"path": "docs/framework/preact/guides/optimistic-updates.md",
"chars": 174,
"preview": "---\nid: optimistic-updates\ntitle: Optimistic Updates\nref: docs/framework/react/guides/optimistic-updates.md\nreplace: { '"
},
{
"path": "docs/framework/preact/guides/paginated-queries.md",
"chars": 1613,
"preview": "---\nid: paginated-queries\ntitle: Paginated / Lagged Queries\nref: docs/framework/react/guides/paginated-queries.md\nreplac"
},
{
"path": "docs/framework/preact/guides/parallel-queries.md",
"chars": 607,
"preview": "---\nid: parallel-queries\ntitle: Parallel Queries\nref: docs/framework/react/guides/parallel-queries.md\nreplace: { 'react-"
},
{
"path": "docs/framework/preact/guides/placeholder-query-data.md",
"chars": 186,
"preview": "---\nid: placeholder-query-data\ntitle: Placeholder Query Data\nref: docs/framework/react/guides/placeholder-query-data.md\n"
},
{
"path": "docs/framework/preact/guides/prefetching.md",
"chars": 1078,
"preview": "---\nid: prefetching\ntitle: Prefetching & Router Integration\nref: docs/framework/react/guides/prefetching.md\nreplace: { '"
},
{
"path": "docs/framework/preact/guides/queries.md",
"chars": 141,
"preview": "---\nid: queries\ntitle: Queries\nref: docs/framework/react/guides/queries.md\nreplace: { 'react-query': 'preact-query', 'Re"
},
{
"path": "docs/framework/preact/guides/query-cancellation.md",
"chars": 174,
"preview": "---\nid: query-cancellation\ntitle: Query Cancellation\nref: docs/framework/react/guides/query-cancellation.md\nreplace: { '"
},
{
"path": "docs/framework/preact/guides/query-functions.md",
"chars": 165,
"preview": "---\nid: query-functions\ntitle: Query Functions\nref: docs/framework/react/guides/query-functions.md\nreplace: { 'react-que"
},
{
"path": "docs/framework/preact/guides/query-invalidation.md",
"chars": 174,
"preview": "---\nid: query-invalidation\ntitle: Query Invalidation\nref: docs/framework/react/guides/query-invalidation.md\nreplace: { '"
},
{
"path": "docs/framework/preact/guides/query-keys.md",
"chars": 150,
"preview": "---\nid: query-keys\ntitle: Query Keys\nref: docs/framework/react/guides/query-keys.md\nreplace: { 'react-query': 'preact-qu"
},
{
"path": "docs/framework/preact/guides/query-options.md",
"chars": 159,
"preview": "---\nid: query-options\ntitle: Query Options\nref: docs/framework/react/guides/query-options.md\nreplace: { 'react-query': '"
},
{
"path": "docs/framework/preact/guides/query-retries.md",
"chars": 159,
"preview": "---\nid: query-retries\ntitle: Query Retries\nref: docs/framework/react/guides/query-retries.md\nreplace: { 'react-query': '"
},
{
"path": "docs/framework/preact/guides/render-optimizations.md",
"chars": 180,
"preview": "---\nid: render-optimizations\ntitle: Render Optimizations\nref: docs/framework/react/guides/render-optimizations.md\nreplac"
},
{
"path": "docs/framework/preact/guides/request-waterfalls.md",
"chars": 1071,
"preview": "---\nid: request-waterfalls\ntitle: Performance & Request Waterfalls\nref: docs/framework/react/guides/request-waterfalls.m"
},
{
"path": "docs/framework/preact/guides/scroll-restoration.md",
"chars": 112,
"preview": "---\nid: scroll-restoration\ntitle: Scroll Restoration\nref: docs/framework/react/guides/scroll-restoration.md\n---\n"
},
{
"path": "docs/framework/preact/guides/updates-from-mutation-responses.md",
"chars": 151,
"preview": "---\nid: updates-from-mutation-responses\ntitle: Updates from Mutation Responses\nref: docs/framework/react/guides/updates-"
},
{
"path": "docs/framework/preact/guides/window-focus-refetching.md",
"chars": 215,
"preview": "---\nid: window-focus-refetching\ntitle: Window Focus Refetching\nref: docs/framework/react/guides/window-focus-refetching."
},
{
"path": "docs/framework/preact/installation.md",
"chars": 508,
"preview": "---\nid: installation\ntitle: Installation\nref: docs/framework/react/installation.md\nreplace: { 'react-query': 'preact-que"
},
{
"path": "docs/framework/preact/overview.md",
"chars": 137,
"preview": "---\nid: overview\ntitle: Overview\nref: docs/framework/react/overview.md\nreplace: { 'react-query': 'preact-query', 'React'"
},
{
"path": "docs/framework/preact/plugins/broadcastQueryClient.md",
"chars": 134,
"preview": "---\nid: broadcastQueryClient\ntitle: broadcastQueryClient (Experimental)\nref: docs/framework/react/plugins/broadcastQuery"
},
{
"path": "docs/framework/preact/plugins/createAsyncStoragePersister.md",
"chars": 183,
"preview": "---\nid: createAsyncStoragePersister\ntitle: createAsyncStoragePersister\nref: docs/framework/react/plugins/createAsyncStor"
},
{
"path": "docs/framework/preact/plugins/createPersister.md",
"chars": 160,
"preview": "---\nid: createPersister\ntitle: experimental_createPersister\nref: docs/framework/react/plugins/createPersister.md\nreplace"
},
{
"path": "docs/framework/preact/plugins/createSyncStoragePersister.md",
"chars": 180,
"preview": "---\nid: createSyncStoragePersister\ntitle: createSyncStoragePersister\nref: docs/framework/react/plugins/createSyncStorage"
},
{
"path": "docs/framework/preact/plugins/persistQueryClient.md",
"chars": 175,
"preview": "---\nid: persistQueryClient\ntitle: persistQueryClient\nref: docs/framework/react/plugins/persistQueryClient.md\nreplace: { "
},
{
"path": "docs/framework/preact/quick-start.md",
"chars": 146,
"preview": "---\nid: quick-start\ntitle: Quick Start\nref: docs/framework/react/quick-start.md\nreplace: { 'react-query': 'preact-query'"
},
{
"path": "docs/framework/preact/reference/functions/HydrationBoundary.md",
"chars": 463,
"preview": "---\nid: HydrationBoundary\ntitle: HydrationBoundary\n---\n\n# Function: HydrationBoundary()\n\n```ts\nfunction HydrationBoundar"
},
{
"path": "docs/framework/preact/reference/functions/QueryClientProvider.md",
"chars": 457,
"preview": "---\nid: QueryClientProvider\ntitle: QueryClientProvider\n---\n\n# Function: QueryClientProvider()\n\n```ts\nfunction QueryClien"
},
{
"path": "docs/framework/preact/reference/functions/QueryErrorResetBoundary.md",
"chars": 491,
"preview": "---\nid: QueryErrorResetBoundary\ntitle: QueryErrorResetBoundary\n---\n\n# Function: QueryErrorResetBoundary()\n\n```ts\nfunctio"
},
{
"path": "docs/framework/preact/reference/functions/infiniteQueryOptions.md",
"chars": 3195,
"preview": "---\nid: infiniteQueryOptions\ntitle: infiniteQueryOptions\n---\n\n# Function: infiniteQueryOptions()\n\n## Call Signature\n\n```"
},
{
"path": "docs/framework/preact/reference/functions/mutationOptions.md",
"chars": 1806,
"preview": "---\nid: mutationOptions\ntitle: mutationOptions\n---\n\n# Function: mutationOptions()\n\n## Call Signature\n\n```ts\nfunction mut"
},
{
"path": "docs/framework/preact/reference/functions/queryOptions.md",
"chars": 2681,
"preview": "---\nid: queryOptions\ntitle: queryOptions\n---\n\n# Function: queryOptions()\n\n## Call Signature\n\n```ts\nfunction queryOptions"
},
{
"path": "docs/framework/preact/reference/functions/useInfiniteQuery.md",
"chars": 2881,
"preview": "---\nid: useInfiniteQuery\ntitle: useInfiniteQuery\n---\n\n# Function: useInfiniteQuery()\n\n## Call Signature\n\n```ts\nfunction "
},
{
"path": "docs/framework/preact/reference/functions/useIsFetching.md",
"chars": 411,
"preview": "---\nid: useIsFetching\ntitle: useIsFetching\n---\n\n# Function: useIsFetching()\n\n```ts\nfunction useIsFetching(filters?, quer"
},
{
"path": "docs/framework/preact/reference/functions/useIsMutating.md",
"chars": 442,
"preview": "---\nid: useIsMutating\ntitle: useIsMutating\n---\n\n# Function: useIsMutating()\n\n```ts\nfunction useIsMutating(filters?, quer"
},
{
"path": "docs/framework/preact/reference/functions/useIsRestoring.md",
"chars": 305,
"preview": "---\nid: useIsRestoring\ntitle: useIsRestoring\n---\n\n# Function: useIsRestoring()\n\n```ts\nfunction useIsRestoring(): boolean"
},
{
"path": "docs/framework/preact/reference/functions/useMutation.md",
"chars": 853,
"preview": "---\nid: useMutation\ntitle: useMutation\n---\n\n# Function: useMutation()\n\n```ts\nfunction useMutation<TData, TError, TVariab"
},
{
"path": "docs/framework/preact/reference/functions/useMutationState.md",
"chars": 554,
"preview": "---\nid: useMutationState\ntitle: useMutationState\n---\n\n# Function: useMutationState()\n\n```ts\nfunction useMutationState<TR"
},
{
"path": "docs/framework/preact/reference/functions/usePrefetchInfiniteQuery.md",
"chars": 837,
"preview": "---\nid: usePrefetchInfiniteQuery\ntitle: usePrefetchInfiniteQuery\n---\n\n# Function: usePrefetchInfiniteQuery()\n\n```ts\nfunc"
},
{
"path": "docs/framework/preact/reference/functions/usePrefetchQuery.md",
"chars": 763,
"preview": "---\nid: usePrefetchQuery\ntitle: usePrefetchQuery\n---\n\n# Function: usePrefetchQuery()\n\n```ts\nfunction usePrefetchQuery<TQ"
},
{
"path": "docs/framework/preact/reference/functions/useQueries.md",
"chars": 2428,
"preview": "---\nid: useQueries\ntitle: useQueries\n---\n\n# Function: useQueries()\n\n```ts\nfunction useQueries<T, TCombinedResult>(__name"
},
{
"path": "docs/framework/preact/reference/functions/useQuery.md",
"chars": 2473,
"preview": "---\nid: useQuery\ntitle: useQuery\n---\n\n# Function: useQuery()\n\n## Call Signature\n\n```ts\nfunction useQuery<TQueryFnData, T"
},
{
"path": "docs/framework/preact/reference/functions/useQueryClient.md",
"chars": 375,
"preview": "---\nid: useQueryClient\ntitle: useQueryClient\n---\n\n# Function: useQueryClient()\n\n```ts\nfunction useQueryClient(queryClien"
},
{
"path": "docs/framework/preact/reference/functions/useQueryErrorResetBoundary.md",
"chars": 407,
"preview": "---\nid: useQueryErrorResetBoundary\ntitle: useQueryErrorResetBoundary\n---\n\n# Function: useQueryErrorResetBoundary()\n\n```t"
},
{
"path": "docs/framework/preact/reference/functions/useSuspenseInfiniteQuery.md",
"chars": 1053,
"preview": "---\nid: useSuspenseInfiniteQuery\ntitle: useSuspenseInfiniteQuery\n---\n\n# Function: useSuspenseInfiniteQuery()\n\n```ts\nfunc"
},
{
"path": "docs/framework/preact/reference/functions/useSuspenseQueries.md",
"chars": 5081,
"preview": "---\nid: useSuspenseQueries\ntitle: useSuspenseQueries\n---\n\n# Function: useSuspenseQueries()\n\n## Call Signature\n\n```ts\nfun"
},
{
"path": "docs/framework/preact/reference/functions/useSuspenseQuery.md",
"chars": 878,
"preview": "---\nid: useSuspenseQuery\ntitle: useSuspenseQuery\n---\n\n# Function: useSuspenseQuery()\n\n```ts\nfunction useSuspenseQuery<TQ"
},
{
"path": "docs/framework/preact/reference/index.md",
"chars": 4222,
"preview": "---\nid: \"@tanstack/preact-query\"\ntitle: \"@tanstack/preact-query\"\n---\n\n# @tanstack/preact-query\n\n## Interfaces\n\n- [Hydrat"
},
{
"path": "docs/framework/preact/reference/interfaces/HydrationBoundaryProps.md",
"chars": 1313,
"preview": "---\nid: HydrationBoundaryProps\ntitle: HydrationBoundaryProps\n---\n\n# Interface: HydrationBoundaryProps\n\nDefined in: [prea"
},
{
"path": "docs/framework/preact/reference/interfaces/QueryErrorResetBoundaryProps.md",
"chars": 566,
"preview": "---\nid: QueryErrorResetBoundaryProps\ntitle: QueryErrorResetBoundaryProps\n---\n\n# Interface: QueryErrorResetBoundaryProps\n"
},
{
"path": "docs/framework/preact/reference/interfaces/UseBaseQueryOptions.md",
"chars": 936,
"preview": "---\nid: UseBaseQueryOptions\ntitle: UseBaseQueryOptions\n---\n\n# Interface: UseBaseQueryOptions\\<TQueryFnData, TError, TDat"
},
{
"path": "docs/framework/preact/reference/interfaces/UseInfiniteQueryOptions.md",
"chars": 984,
"preview": "---\nid: UseInfiniteQueryOptions\ntitle: UseInfiniteQueryOptions\n---\n\n# Interface: UseInfiniteQueryOptions\\<TQueryFnData, "
},
{
"path": "docs/framework/preact/reference/interfaces/UseMutationOptions.md",
"chars": 576,
"preview": "---\nid: UseMutationOptions\ntitle: UseMutationOptions\n---\n\n# Interface: UseMutationOptions\\<TData, TError, TVariables, TO"
},
{
"path": "docs/framework/preact/reference/interfaces/UsePrefetchQueryOptions.md",
"chars": 829,
"preview": "---\nid: UsePrefetchQueryOptions\ntitle: UsePrefetchQueryOptions\n---\n\n# Interface: UsePrefetchQueryOptions\\<TQueryFnData, "
},
{
"path": "docs/framework/preact/reference/interfaces/UseQueryOptions.md",
"chars": 974,
"preview": "---\nid: UseQueryOptions\ntitle: UseQueryOptions\n---\n\n# Interface: UseQueryOptions\\<TQueryFnData, TError, TData, TQueryKey"
},
{
"path": "docs/framework/preact/reference/interfaces/UseSuspenseInfiniteQueryOptions.md",
"chars": 1375,
"preview": "---\nid: UseSuspenseInfiniteQueryOptions\ntitle: UseSuspenseInfiniteQueryOptions\n---\n\n# Interface: UseSuspenseInfiniteQuer"
},
{
"path": "docs/framework/preact/reference/interfaces/UseSuspenseQueryOptions.md",
"chars": 1256,
"preview": "---\nid: UseSuspenseQueryOptions\ntitle: UseSuspenseQueryOptions\n---\n\n# Interface: UseSuspenseQueryOptions\\<TQueryFnData, "
},
{
"path": "docs/framework/preact/reference/type-aliases/AnyUseBaseQueryOptions.md",
"chars": 320,
"preview": "---\nid: AnyUseBaseQueryOptions\ntitle: AnyUseBaseQueryOptions\n---\n\n# Type Alias: AnyUseBaseQueryOptions\n\n```ts\ntype AnyUs"
},
{
"path": "docs/framework/preact/reference/type-aliases/AnyUseInfiniteQueryOptions.md",
"chars": 340,
"preview": "---\nid: AnyUseInfiniteQueryOptions\ntitle: AnyUseInfiniteQueryOptions\n---\n\n# Type Alias: AnyUseInfiniteQueryOptions\n\n```t"
},
{
"path": "docs/framework/preact/reference/type-aliases/AnyUseMutationOptions.md",
"chars": 312,
"preview": "---\nid: AnyUseMutationOptions\ntitle: AnyUseMutationOptions\n---\n\n# Type Alias: AnyUseMutationOptions\n\n```ts\ntype AnyUseMu"
},
{
"path": "docs/framework/preact/reference/type-aliases/AnyUseQueryOptions.md",
"chars": 295,
"preview": "---\nid: AnyUseQueryOptions\ntitle: AnyUseQueryOptions\n---\n\n# Type Alias: AnyUseQueryOptions\n\n```ts\ntype AnyUseQueryOption"
},
{
"path": "docs/framework/preact/reference/type-aliases/AnyUseSuspenseInfiniteQueryOptions.md",
"chars": 382,
"preview": "---\nid: AnyUseSuspenseInfiniteQueryOptions\ntitle: AnyUseSuspenseInfiniteQueryOptions\n---\n\n# Type Alias: AnyUseSuspenseIn"
},
{
"path": "docs/framework/preact/reference/type-aliases/AnyUseSuspenseQueryOptions.md",
"chars": 335,
"preview": "---\nid: AnyUseSuspenseQueryOptions\ntitle: AnyUseSuspenseQueryOptions\n---\n\n# Type Alias: AnyUseSuspenseQueryOptions\n\n```t"
},
{
"path": "docs/framework/preact/reference/type-aliases/DefinedInitialDataInfiniteOptions.md",
"chars": 1000,
"preview": "---\nid: DefinedInitialDataInfiniteOptions\ntitle: DefinedInitialDataInfiniteOptions\n---\n\n# Type Alias: DefinedInitialData"
},
{
"path": "docs/framework/preact/reference/type-aliases/DefinedInitialDataOptions.md",
"chars": 892,
"preview": "---\nid: DefinedInitialDataOptions\ntitle: DefinedInitialDataOptions\n---\n\n# Type Alias: DefinedInitialDataOptions\\<TQueryF"
},
{
"path": "docs/framework/preact/reference/type-aliases/DefinedUseInfiniteQueryResult.md",
"chars": 478,
"preview": "---\nid: DefinedUseInfiniteQueryResult\ntitle: DefinedUseInfiniteQueryResult\n---\n\n# Type Alias: DefinedUseInfiniteQueryRes"
},
{
"path": "docs/framework/preact/reference/type-aliases/DefinedUseQueryResult.md",
"chars": 438,
"preview": "---\nid: DefinedUseQueryResult\ntitle: DefinedUseQueryResult\n---\n\n# Type Alias: DefinedUseQueryResult\\<TData, TError\\>\n\n``"
},
{
"path": "docs/framework/preact/reference/type-aliases/QueriesOptions.md",
"chars": 1124,
"preview": "---\nid: QueriesOptions\ntitle: QueriesOptions\n---\n\n# Type Alias: QueriesOptions\\<T, TResults, TDepth\\>\n\n```ts\ntype Querie"
}
]
// ... and 1857 more files (download for full content)
About this extraction
This page contains the full source code of the TanStack/query GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2057 files (21.4 MB), approximately 1.5M tokens, and a symbol index with 2933 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.