From 1f9cae3f9b02394c6893b61ab425edf47b9a03df Mon Sep 17 00:00:00 2001 From: Leonardo Montini Date: Sun, 10 Aug 2025 15:29:47 +0200 Subject: [PATCH] feat(eslint): support the shorter syntax with verboseFileRoutes: false --- .../create-route-property-order.rule.test.ts | 21 +++++++++++++++++++ .../create-route-property-order.rule.ts | 7 +++++++ 2 files changed, 28 insertions(+) diff --git a/packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts b/packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts index b3c264e1d1..b203000456 100644 --- a/packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts +++ b/packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts @@ -193,6 +193,27 @@ const invalidTestCases = invalidTestMatrix.map( }), ) +validTestCases.push({ + name: 'verboseFileRoutes: false, createFileRoute valid order', + code: `export const Route = createFileRoute({ + loaderDeps: () => null, + loader: () => null, +})`, +}) + +invalidTestCases.push({ + name: 'verboseFileRoutes: false, createFileRoute invalid order', + code: `export const Route = createFileRoute({ + loader: () => null, + loaderDeps: () => null, +})`, + errors: [{ messageId: 'invalidOrder' }], + output: `export const Route = createFileRoute({ + loaderDeps: () => null, + loader: () => null, +})`, +}) + ruleTester.run(name, rule, { valid: validTestCases, invalid: invalidTestCases, diff --git a/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts b/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts index b8c6be3b84..b22a181ffb 100644 --- a/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts +++ b/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts @@ -51,7 +51,14 @@ export const rule = createRule({ let args = node.arguments if (createRouteFunctionsIndirect.includes(createRouteFunction as any)) { if (node.parent.type === AST_NODE_TYPES.CallExpression) { + // Default verboseFileRoutes curried usage: createFileRoute('/path')({ ... }) args = node.parent.arguments + } else if ( + // verboseFileRoutes: false syntax: createFileRoute({ ... }) + args[0] && + args[0].type === AST_NODE_TYPES.ObjectExpression + ) { + // use args as-is } else { return }