diff --git a/docs/community-resources.md b/docs/community-resources.md index 9b591ba5cd9..3ce503b41a5 100644 --- a/docs/community-resources.md +++ b/docs/community-resources.md @@ -175,6 +175,11 @@ others: url: 'https://github.com/rametta/rapini', description: '🥬 OpenAPI to React Query (or SWR) & Axios', }, + { + title: 'React Query Visualizer', + url: 'https://marketplace.visualstudio.com/items?itemName=fe-dudu.react-query-visualizer', + description: 'VS Code extension for TanStack Query (React Query): visualize query keys, cache invalidation/refetch flows, and file impact graph', + }, { title: 'Tanstack Query Visualizer', url: 'https://tanstack-query-visualizer.sofi.coop/', diff --git a/examples/angular/auto-refetching/README.md b/examples/angular/auto-refetching/README.md index 571955a305d..4a70c6af6e7 100644 --- a/examples/angular/auto-refetching/README.md +++ b/examples/angular/auto-refetching/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/basic-persister/README.md b/examples/angular/basic-persister/README.md index 47d5931979a..6c79fc36193 100644 --- a/examples/angular/basic-persister/README.md +++ b/examples/angular/basic-persister/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/basic/README.md b/examples/angular/basic/README.md index 15f2ed2f4a2..61eb487a22c 100644 --- a/examples/angular/basic/README.md +++ b/examples/angular/basic/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/devtools-panel/README.md b/examples/angular/devtools-panel/README.md index 849d0a9d4e0..729ce68dc49 100644 --- a/examples/angular/devtools-panel/README.md +++ b/examples/angular/devtools-panel/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/infinite-query-with-max-pages/README.md b/examples/angular/infinite-query-with-max-pages/README.md index fce960f6a35..4f308448f5f 100644 --- a/examples/angular/infinite-query-with-max-pages/README.md +++ b/examples/angular/infinite-query-with-max-pages/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/optimistic-updates/README.md b/examples/angular/optimistic-updates/README.md index 583897ad45d..bcffae54d27 100644 --- a/examples/angular/optimistic-updates/README.md +++ b/examples/angular/optimistic-updates/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/pagination/README.md b/examples/angular/pagination/README.md index fd58c455860..6e113c75664 100644 --- a/examples/angular/pagination/README.md +++ b/examples/angular/pagination/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/query-options-from-a-service/README.md b/examples/angular/query-options-from-a-service/README.md index f9e940480ac..40bce6275f8 100644 --- a/examples/angular/query-options-from-a-service/README.md +++ b/examples/angular/query-options-from-a-service/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/router/README.md b/examples/angular/router/README.md index 0429048cb9c..ea37ad5d945 100644 --- a/examples/angular/router/README.md +++ b/examples/angular/router/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/rxjs/README.md b/examples/angular/rxjs/README.md index bc63a82b7f2..5603b0de263 100644 --- a/examples/angular/rxjs/README.md +++ b/examples/angular/rxjs/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/examples/angular/simple/README.md b/examples/angular/simple/README.md index 35939257ca9..b2acfd071ab 100644 --- a/examples/angular/simple/README.md +++ b/examples/angular/simple/README.md @@ -2,5 +2,5 @@ To run this example: -- `npm install` or `yarn` or `pnpm i` or `bun i` -- `npm run start` or `yarn start` or `pnpm start` or `bun start` +- `pnpm install` +- `pnpm start` diff --git a/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts b/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts index e26c21de8f6..c47856fbc67 100644 --- a/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts +++ b/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts @@ -215,6 +215,58 @@ ruleTester.run('no-void-query-fn', rule, { }) `, }, + { + name: 'prefetchQuery queryFn returns a value', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.prefetchQuery({ + queryKey: ['test'], + queryFn: () => fetch('/api/test').then((r) => r.json()), + }) + `, + }, + { + name: 'prefetchInfiniteQuery queryFn returns a value', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.prefetchInfiniteQuery({ + queryKey: ['test'], + queryFn: ({ pageParam }: { pageParam: number }) => + fetch(\`/api/test?page=\${pageParam}\`).then((r) => r.json()), + initialPageParam: 0, + }) + `, + }, + { + name: 'ensureQueryData queryFn returns a value', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.ensureQueryData({ + queryKey: ['test'], + queryFn: () => fetch('/api/test').then((r) => r.json()), + }) + `, + }, + { + name: 'ensureInfiniteQueryData queryFn returns a value', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.ensureInfiniteQueryData({ + queryKey: ['test'], + queryFn: ({ pageParam }: { pageParam: number }) => + fetch(\`/api/test?page=\${pageParam}\`).then((r) => r.json()), + initialPageParam: 0, + }) + `, + }, ], invalid: [ { @@ -439,5 +491,67 @@ ruleTester.run('no-void-query-fn', rule, { `, errors: [{ messageId: 'noVoidReturn' }], }, + { + name: 'prefetchQuery queryFn returns void', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.prefetchQuery({ + queryKey: ['test'], + queryFn: async () => { + await fetch('/api/test') + }, + }) + `, + errors: [{ messageId: 'noVoidReturn' }], + }, + { + name: 'prefetchInfiniteQuery queryFn returns void', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.prefetchInfiniteQuery({ + queryKey: ['test'], + queryFn: async ({ pageParam }: { pageParam: number }) => { + await fetch(\`/api/test?page=\${pageParam}\`) + }, + initialPageParam: 0, + }) + `, + errors: [{ messageId: 'noVoidReturn' }], + }, + { + name: 'ensureQueryData queryFn returns void', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.ensureQueryData({ + queryKey: ['test'], + queryFn: async () => { + await fetch('/api/test') + }, + }) + `, + errors: [{ messageId: 'noVoidReturn' }], + }, + { + name: 'ensureInfiniteQueryData queryFn returns void', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.ensureInfiniteQueryData({ + queryKey: ['test'], + queryFn: async ({ pageParam }: { pageParam: number }) => { + await fetch(\`/api/test?page=\${pageParam}\`) + }, + initialPageParam: 0, + }) + `, + errors: [{ messageId: 'noVoidReturn' }], + }, ], })