From 4d185503488e47ca003de053d8adadb6a953c0dc Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 9 Oct 2024 18:04:24 +0200 Subject: [PATCH] fix(eslint-plugin-query): ignore all non-identifier properties in rule `infinite-query-property-order` fixes #8156 --- .../infinite-query-property-order.rule.test.ts | 3 +++ .../infinite-query-property-order.rule.ts | 14 ++------------ 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/eslint-plugin-query/src/__tests__/infinite-query-property-order.rule.test.ts b/packages/eslint-plugin-query/src/__tests__/infinite-query-property-order.rule.test.ts index 3ab262c1b0..8fd465e834 100644 --- a/packages/eslint-plugin-query/src/__tests__/infinite-query-property-order.rule.test.ts +++ b/packages/eslint-plugin-query/src/__tests__/infinite-query-property-order.rule.test.ts @@ -24,6 +24,7 @@ const orderIndependentProps = [ 'queryKey', '...objectExpressionSpread', '...callExpressionSpread', + '...memberCallExpressionSpread', ] as const type OrderIndependentProps = (typeof orderIndependentProps)[number] @@ -147,6 +148,8 @@ function getCode({ return `...objectExpressionSpread` case '...callExpressionSpread': return callExpressionSpread + case '...memberCallExpressionSpread': + return '...myOptions.infiniteQueryOptions()' case 'queryKey': return `queryKey: ['projects']` case 'queryFn': diff --git a/packages/eslint-plugin-query/src/rules/infinite-query-property-order/infinite-query-property-order.rule.ts b/packages/eslint-plugin-query/src/rules/infinite-query-property-order/infinite-query-property-order.rule.ts index b55cef5828..d145030cc6 100644 --- a/packages/eslint-plugin-query/src/rules/infinite-query-property-order/infinite-query-property-order.rule.ts +++ b/packages/eslint-plugin-query/src/rules/infinite-query-property-order/infinite-query-property-order.rule.ts @@ -56,23 +56,13 @@ export const rule = createRule({ return } - const properties = allProperties.flatMap((p) => { + const properties = allProperties.flatMap((p, index) => { if ( p.type === AST_NODE_TYPES.Property && p.key.type === AST_NODE_TYPES.Identifier ) { return { name: p.key.name, property: p } - } else if (p.type === AST_NODE_TYPES.SpreadElement) { - if (p.argument.type === AST_NODE_TYPES.Identifier) { - return { name: p.argument.name, property: p } - } else if (p.argument.type === AST_NODE_TYPES.CallExpression) { - if (p.argument.callee.type === AST_NODE_TYPES.Identifier) { - return { name: p.argument.callee.name, property: p } - } - } - throw new Error('Unsupported spread element') - } - return [] + } else return { name: `_property_${index}`, property: p } }) const sortedProperties = sortDataByOrder(properties, sortRules, 'name')