From 5885e124d5177eae87d48123b75521064b343860 Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 5 Mar 2025 03:39:25 +0800 Subject: [PATCH 1/4] Add `unicorn/no-useless-fallback-in-spread` --- eslint.config.mjs | 4 ++++ package.json | 1 + 2 files changed, 5 insertions(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 1a66d21..c77cbf5 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -3,6 +3,7 @@ import typescriptEslint from "@typescript-eslint/eslint-plugin" import eslintComments from "eslint-plugin-eslint-comments" import node from "eslint-plugin-n" import nodeDeps from "eslint-plugin-node-dependencies" +import unicorn from "eslint-plugin-unicorn" import tsParser from "@typescript-eslint/parser" import jsonParser from "jsonc-eslint-parser" import path from "node:path" @@ -114,6 +115,7 @@ export default [ "@typescript-eslint": typescriptEslint, "eslint-comments": eslintComments, node, + unicorn, }, languageOptions: { @@ -779,6 +781,8 @@ export default [ ], }, ], + + "unicorn/no-useless-fallback-in-spread": ["error"], }, }, { diff --git a/package.json b/package.json index 03daf81..915a26c 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "eslint-plugin-n": "^17.15.1", "eslint-plugin-node-dependencies": "^0.12.0", "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-unicorn": "^57.0.0", "fs-extra": "^10.0.0", "jsonc-eslint-parser": "^2.0.3", "mocha": "^9.1.3", From 0a1148f49b3f83b494e5f97189026d8fe95b7a25 Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 5 Mar 2025 03:46:32 +0800 Subject: [PATCH 2/4] Apply fix --- src/index.ts | 4 ++-- src/sfc/custom-block/index.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 3b0c462..13cb530 100644 --- a/src/index.ts +++ b/src/index.ts @@ -54,7 +54,7 @@ export function parseForESLint( loc: true, range: true, tokens: true, - ...(parserOptions ?? {}), + ...parserOptions, } let result: AST.ESLintExtendedProgram @@ -69,7 +69,7 @@ export function parseForESLint( } result.services = { - ...(result.services || {}), + ...result.services, ...services.define(code, result.ast, document, locationCalculator, { parserOptions: options, }), diff --git a/src/sfc/custom-block/index.ts b/src/sfc/custom-block/index.ts index 6ccfd4c..7f672a0 100644 --- a/src/sfc/custom-block/index.ts +++ b/src/sfc/custom-block/index.ts @@ -263,7 +263,7 @@ export function createCustomBlockSharedContext({ { ...parserOptions, ...options }, ) }, - ...(parsedResult.services ?? {}), + ...parsedResult.services, ...(parsedResult.error ? { parseError: parsedResult.error } : {}), From ce185d84dedaa4f3e46f174ba355b502a07514b3 Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 5 Mar 2025 03:47:21 +0800 Subject: [PATCH 3/4] Enable `unicorn/no-useless-spread` --- eslint.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index c77cbf5..6b3a189 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -783,6 +783,7 @@ export default [ ], "unicorn/no-useless-fallback-in-spread": ["error"], + "unicorn/no-useless-spread": ["error"], }, }, { From 354181044de24915a6f4a7ea807f6690c49509c8 Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 5 Mar 2025 03:48:45 +0800 Subject: [PATCH 4/4] Apply fix --- src/script/generic.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/script/generic.ts b/src/script/generic.ts index 11a0d33..b79bcd8 100644 --- a/src/script/generic.ts +++ b/src/script/generic.ts @@ -95,7 +95,7 @@ export function extractGeneric(element: VElement): GenericProcessInfo | null { typeDefScope: Scope, isRemoveTarget: (nodeOrToken: HasLocation) => boolean, ) { - for (const variable of [...typeDefScope.variables]) { + for (const variable of typeDefScope.variables) { let def = variable.defs.find((d) => isRemoveTarget(d.name as HasLocation), ) @@ -106,13 +106,13 @@ export function extractGeneric(element: VElement): GenericProcessInfo | null { ) } } - for (const reference of [...typeDefScope.references]) { + for (const reference of typeDefScope.references) { if (isRemoveTarget(reference.identifier as HasLocation)) { removeReference(reference, typeDefScope) } } - for (const scope of [...scopeManager.scopes]) { + for (const scope of scopeManager.scopes) { if (isRemoveTarget(scope.block as HasLocation)) { removeScope(scopeManager, scope) }