Skip to content

Commit

Permalink
fix(eslint-plugin): support rule prefer-object-syntax with multi lines (
Browse files Browse the repository at this point in the history
#4637)

* fix rule prefer-object-syntax with multilines

* simplify
  • Loading branch information
Newbie012 committed Dec 14, 2022
1 parent 3c9df20 commit d261823
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 21 deletions.
Expand Up @@ -287,5 +287,32 @@ ruleTester.run(name, rule, {
createQuery({ queryKey: ['data'], queryFn: () => fetchData(), enabled: false });
`,
},
{
code: normalizeIndent`
import { createQuery } from "@tanstack/solid-query";
createQuery(
['key'],
() => Promise.resolve('data')
);
`,
errors: [{ messageId: 'preferObjectSyntax' }],
output: normalizeIndent`
import { createQuery } from "@tanstack/solid-query";
createQuery({ queryKey: ['key'], queryFn: () => Promise.resolve('data') });
`,
},
{
code: normalizeIndent`
import { createQuery } from "@tanstack/solid-query";
createQuery(
['key'], () => Promise.resolve('data')
);
`,
errors: [{ messageId: 'preferObjectSyntax' }],
output: normalizeIndent`
import { createQuery } from "@tanstack/solid-query";
createQuery({ queryKey: ['key'], queryFn: () => Promise.resolve('data') });
`,
},
],
})
Expand Up @@ -185,7 +185,6 @@ function runCheckOnNode(params: {
node: callNode,
messageId: 'preferObjectSyntax',
fix(fixer) {
const ruleFixes: TSESLint.RuleFix[] = []
const optionsObjectProperties: string[] = []

// queryKey
Expand Down Expand Up @@ -216,20 +215,13 @@ function runCheckOnNode(params: {
optionsObjectProperties.push(...existingObjectProperties)
}

const argumentsRange = ASTUtils.getRangeOfArguments(callNode)

if (argumentsRange) {
ruleFixes.push(fixer.removeRange(argumentsRange))
if (callNode.callee.type !== AST_NODE_TYPES.Identifier) {
return null
}

ruleFixes.push(
fixer.insertTextAfterRange(
[callNode.range[0], callNode.range[1] - 1],
`{ ${optionsObjectProperties.join(', ')} }`,
),
)
const argsText = `{ ${optionsObjectProperties.join(', ')} }`

return ruleFixes
return fixer.replaceText(callNode, `${callNode.callee.name}(${argsText})`)
},
})
}
9 changes: 0 additions & 9 deletions packages/eslint-plugin-query/src/utils/ast-utils.ts
Expand Up @@ -128,15 +128,6 @@ export const ASTUtils = {

return identifier
},
getRangeOfArguments(
node: TSESTree.CallExpression,
): TSESTree.Range | undefined {
const firstArgument = node.arguments[0]
const lastArgument = node.arguments[node.arguments.length - 1]
return firstArgument && lastArgument
? [firstArgument.range[0], lastArgument.range[1]]
: undefined
},
getExternalRefs(params: {
scopeManager: TSESLint.Scope.ScopeManager
node: TSESTree.Node
Expand Down

0 comments on commit d261823

Please sign in to comment.