@tanstack/eslint-plugin-query
Advanced tools
Comparing version 5.52.3 to 5.53.0
@@ -63,3 +63,2 @@ import { ESLintUtils, AST_NODE_TYPES } from "@typescript-eslint/utils"; | ||
} | ||
const queryKeyValue = queryKeyNode; | ||
const externalRefs = ASTUtils.getExternalRefs({ | ||
@@ -78,3 +77,3 @@ scopeManager, | ||
); | ||
const existingKeys = ASTUtils.getNestedIdentifiers(queryKeyValue).map( | ||
const existingKeys = ASTUtils.getNestedIdentifiers(queryKeyNode).map( | ||
(identifier) => ASTUtils.mapKeyNodeToText(identifier, context.sourceCode) | ||
@@ -96,3 +95,4 @@ ); | ||
).join(", "); | ||
const existingWithMissing = context.sourceCode.getText(queryKeyValue).replace(/\]$/, `, ${missingAsText}]`); | ||
const queryKeyValue = context.sourceCode.getText(queryKeyNode); | ||
const existingWithMissing = queryKeyValue === "[]" ? `[${missingAsText}]` : queryKeyValue.replace(/\]$/, `, ${missingAsText}]`); | ||
const suggestions = []; | ||
@@ -104,3 +104,3 @@ if (queryKeyNode.type === AST_NODE_TYPES.ArrayExpression) { | ||
fix(fixer) { | ||
return fixer.replaceText(queryKeyValue, existingWithMissing); | ||
return fixer.replaceText(queryKeyNode, existingWithMissing); | ||
} | ||
@@ -107,0 +107,0 @@ }); |
@@ -36,4 +36,4 @@ import { AST_NODE_TYPES, TSESLint, TSESTree } from '@typescript-eslint/utils'; | ||
}): TSESTree.Expression | null; | ||
getClosestVariableDeclarator(node: TSESTree.Node): TSESTree.LetOrConstOrVarDeclarator | undefined; | ||
getClosestVariableDeclarator(node: TSESTree.Node): TSESTree.VariableDeclaratorDefiniteAssignment | TSESTree.VariableDeclaratorMaybeInit | undefined; | ||
getNestedReturnStatements(node: TSESTree.Node): Array<TSESTree.ReturnStatement>; | ||
}; |
{ | ||
"name": "@tanstack/eslint-plugin-query", | ||
"version": "5.52.3", | ||
"version": "5.53.0", | ||
"description": "ESLint plugin for TanStack Query", | ||
@@ -40,12 +40,12 @@ "author": "Eliya Cohen", | ||
"dependencies": { | ||
"@typescript-eslint/utils": "8.0.0-alpha.30" | ||
"@typescript-eslint/utils": "^8.3.0" | ||
}, | ||
"devDependencies": { | ||
"@typescript-eslint/rule-tester": "8.0.0-alpha.30", | ||
"eslint": "^9.5.0" | ||
"@typescript-eslint/rule-tester": "^8.3.0", | ||
"eslint": "^9.9.1" | ||
}, | ||
"peerDependencies": { | ||
"eslint": "^8 || ^9" | ||
"eslint": "^8.57.0 || ^9.0.0" | ||
}, | ||
"scripts": {} | ||
} |
@@ -5,6 +5,3 @@ import { RuleTester } from '@typescript-eslint/rule-tester' | ||
const ruleTester = new RuleTester({ | ||
parser: '@typescript-eslint/parser', | ||
settings: {}, | ||
}) | ||
const ruleTester = new RuleTester() | ||
@@ -150,3 +147,3 @@ ruleTester.run('exhaustive-deps', rule, { | ||
} | ||
const useFoo = (num: number) => | ||
@@ -166,3 +163,3 @@ useQuery({ | ||
} | ||
const useFoo = (num: number) => | ||
@@ -182,3 +179,3 @@ useQuery({ | ||
} | ||
const useFoo = (num: number) => | ||
@@ -198,3 +195,3 @@ useQuery({ | ||
} | ||
const useFoo = (num: number) => | ||
@@ -214,3 +211,3 @@ useQuery({ | ||
} | ||
const useFoo = (num: number) => | ||
@@ -230,3 +227,3 @@ useQuery({ | ||
} | ||
const useFoo = (obj: { num: number }) => | ||
@@ -263,3 +260,3 @@ useQuery({ | ||
const state = { foo: 'foo', bar: 'bar' } | ||
useQuery({ | ||
@@ -418,3 +415,3 @@ queryKey: ['state', state], | ||
const fetch = true | ||
function Component({ id }) { | ||
@@ -727,3 +724,3 @@ useQuery({ | ||
const state = { foo: 'foo', bar: 'bar' } | ||
useQuery({ | ||
@@ -736,2 +733,15 @@ queryKey: ['state', state.foo], | ||
{ | ||
suggestions: [ | ||
{ | ||
messageId: 'fixTo', | ||
output: normalizeIndent` | ||
const state = { foo: 'foo', bar: 'bar' } | ||
useQuery({ | ||
queryKey: ['state', state.foo, state.bar], | ||
queryFn: () => Promise.resolve({ foo: state.foo, bar: state.bar }) | ||
}) | ||
`, | ||
}, | ||
], | ||
messageId: 'missingDeps', | ||
@@ -746,3 +756,3 @@ data: { deps: 'state.bar' }, | ||
const id = 1; | ||
useQuery({ | ||
@@ -757,2 +767,17 @@ queryKey: [], | ||
{ | ||
suggestions: [ | ||
{ | ||
messageId: 'fixTo', | ||
output: normalizeIndent` | ||
const id = 1; | ||
useQuery({ | ||
queryKey: [id], | ||
queryFn() { | ||
Promise.resolve(id) | ||
} | ||
}) | ||
`, | ||
}, | ||
], | ||
messageId: 'missingDeps', | ||
@@ -768,3 +793,3 @@ data: { deps: 'id' }, | ||
const fetch = true | ||
function Component({ id }) { | ||
@@ -779,2 +804,18 @@ useQuery({ | ||
{ | ||
suggestions: [ | ||
{ | ||
messageId: 'fixTo', | ||
output: normalizeIndent` | ||
import { useQuery, skipToken } from "@tanstack/react-query"; | ||
const fetch = true | ||
function Component({ id }) { | ||
useQuery({ | ||
queryKey: [id], | ||
queryFn: fetch ? () => Promise.resolve(id) : skipToken | ||
}) | ||
} | ||
`, | ||
}, | ||
], | ||
messageId: 'missingDeps', | ||
@@ -781,0 +822,0 @@ data: { deps: 'id' }, |
@@ -5,6 +5,3 @@ import { RuleTester } from '@typescript-eslint/rule-tester' | ||
const ruleTester = new RuleTester({ | ||
parser: '@typescript-eslint/parser', | ||
settings: {}, | ||
}) | ||
const ruleTester = new RuleTester() | ||
@@ -11,0 +8,0 @@ ruleTester.run('no-rest-destructuring', rule, { |
@@ -8,6 +8,3 @@ import { RuleTester } from '@typescript-eslint/rule-tester' | ||
const ruleTester = new RuleTester({ | ||
parser: '@typescript-eslint/parser', | ||
settings: {}, | ||
}) | ||
const ruleTester = new RuleTester() | ||
@@ -41,3 +38,3 @@ interface TestCase { | ||
import { ${queryHook} } from "@tanstack/react-query"; | ||
function Component() { | ||
@@ -62,3 +59,3 @@ const { refetch } = ${queryHook}({ queryFn: (value: string) => value }); | ||
import { useMutation } from "@tanstack/react-query"; | ||
function Component() { | ||
@@ -83,3 +80,3 @@ const mutation = useMutation({ mutationFn: (value: string) => value }); | ||
import { ${queryHook} } from "@tanstack/react-query"; | ||
function Component() { | ||
@@ -86,0 +83,0 @@ const query = ${queryHook}({ queryFn: (value: string) => value }); |
@@ -5,6 +5,3 @@ import { RuleTester } from '@typescript-eslint/rule-tester' | ||
const ruleTester = new RuleTester({ | ||
parser: '@typescript-eslint/parser', | ||
settings: {}, | ||
}) | ||
const ruleTester = new RuleTester() | ||
@@ -39,3 +36,3 @@ ruleTester.run('stable-query-client', rule, { | ||
import { QueryClient } from "@tanstack/react-query"; | ||
function Component() { | ||
@@ -51,3 +48,3 @@ const [queryClient] = React.useMemo(() => new QueryClient(), []); | ||
import { QueryClient } from "@tanstack/react-query"; | ||
function Component() { | ||
@@ -54,0 +51,0 @@ const [queryClient] = useAnything(() => new QueryClient()); |
@@ -88,3 +88,2 @@ import { AST_NODE_TYPES, ESLintUtils } from '@typescript-eslint/utils' | ||
const queryKeyValue = queryKeyNode | ||
const externalRefs = ASTUtils.getExternalRefs({ | ||
@@ -105,3 +104,3 @@ scopeManager, | ||
const existingKeys = ASTUtils.getNestedIdentifiers(queryKeyValue).map( | ||
const existingKeys = ASTUtils.getNestedIdentifiers(queryKeyNode).map( | ||
(identifier) => | ||
@@ -138,6 +137,9 @@ ASTUtils.mapKeyNodeToText(identifier, context.sourceCode), | ||
const existingWithMissing = context.sourceCode | ||
.getText(queryKeyValue) | ||
.replace(/\]$/, `, ${missingAsText}]`) | ||
const queryKeyValue = context.sourceCode.getText(queryKeyNode) | ||
const existingWithMissing = | ||
queryKeyValue === '[]' | ||
? `[${missingAsText}]` | ||
: queryKeyValue.replace(/\]$/, `, ${missingAsText}]`) | ||
const suggestions: TSESLint.ReportSuggestionArray<string> = [] | ||
@@ -150,3 +152,3 @@ | ||
fix(fixer) { | ||
return fixer.replaceText(queryKeyValue, existingWithMissing) | ||
return fixer.replaceText(queryKeyNode, existingWithMissing) | ||
}, | ||
@@ -153,0 +155,0 @@ }) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
243270
3801
+ Added@typescript-eslint/scope-manager@8.7.0(transitive)
+ Added@typescript-eslint/types@8.7.0(transitive)
+ Added@typescript-eslint/typescript-estree@8.7.0(transitive)
+ Added@typescript-eslint/utils@8.7.0(transitive)
+ Added@typescript-eslint/visitor-keys@8.7.0(transitive)
- Removed@typescript-eslint/scope-manager@8.0.0-alpha.30(transitive)
- Removed@typescript-eslint/types@8.0.0-alpha.30(transitive)
- Removed@typescript-eslint/typescript-estree@8.0.0-alpha.30(transitive)
- Removed@typescript-eslint/utils@8.0.0-alpha.30(transitive)
- Removed@typescript-eslint/visitor-keys@8.0.0-alpha.30(transitive)
- Removedarray-union@2.1.0(transitive)
- Removeddir-glob@3.0.1(transitive)
- Removedglobby@11.1.0(transitive)
- Removedpath-type@4.0.0(transitive)
- Removedslash@3.0.0(transitive)