This commit is contained in:
Alex 2025-02-05 18:55:12 -05:00
parent c2d582dea0
commit cddee19340
9 changed files with 332 additions and 287 deletions

22
dist/package.json vendored
View File

@ -1,6 +1,6 @@
{ {
"name": "@aet/eslint-rules", "name": "@aet/eslint-rules",
"version": "2.0.29", "version": "2.0.36",
"license": "UNLICENSED", "license": "UNLICENSED",
"type": "module", "type": "module",
"bin": { "bin": {
@ -23,18 +23,18 @@
"@tanstack/eslint-plugin-query": "^5.62.1" "@tanstack/eslint-plugin-query": "^5.62.1"
}, },
"dependencies": { "dependencies": {
"@aet/eslint-define-config": "^0.1.5", "@aet/eslint-define-config": "^0.1.7",
"@antfu/install-pkg": "^1.0.0", "@antfu/install-pkg": "^1.0.0",
"@eslint-community/eslint-utils": "^4.4.1", "@eslint-community/eslint-utils": "^4.4.1",
"@eslint-react/eslint-plugin": "1.24.1", "@eslint-react/eslint-plugin": "1.26.1",
"@eslint/js": "^9.19.0", "@eslint/js": "^9.19.0",
"@nolyfill/is-core-module": "^1.0.39", "@nolyfill/is-core-module": "^1.0.39",
"@stylistic/eslint-plugin": "^3.0.0", "@stylistic/eslint-plugin": "^3.0.1",
"@types/eslint": "^9.6.1", "@types/eslint": "^9.6.1",
"@typescript-eslint/eslint-plugin": "^8.21.0", "@typescript-eslint/eslint-plugin": "^8.23.0",
"@typescript-eslint/parser": "^8.21.0", "@typescript-eslint/parser": "^8.23.0",
"@typescript-eslint/type-utils": "^8.21.0", "@typescript-eslint/type-utils": "^8.23.0",
"@typescript-eslint/utils": "^8.21.0", "@typescript-eslint/utils": "^8.23.0",
"aria-query": "^5.3.2", "aria-query": "^5.3.2",
"axe-core": "^4.10.2", "axe-core": "^4.10.2",
"axobject-query": "4.1.0", "axobject-query": "4.1.0",
@ -42,7 +42,7 @@
"debug": "^4.4.0", "debug": "^4.4.0",
"doctrine": "^3.0.0", "doctrine": "^3.0.0",
"emoji-regex": "^10.4.0", "emoji-regex": "^10.4.0",
"enhanced-resolve": "^5.18.0", "enhanced-resolve": "^5.18.1",
"eslint-config-prettier": "^10.0.1", "eslint-config-prettier": "^10.0.1",
"eslint-import-resolver-node": "^0.3.9", "eslint-import-resolver-node": "^0.3.9",
"eslint-import-resolver-typescript": "^3.7.0", "eslint-import-resolver-typescript": "^3.7.0",
@ -61,8 +61,8 @@
"language-tags": "^2.0.1", "language-tags": "^2.0.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.0.1",
"semver": "^7.6.3", "semver": "^7.7.1",
"typescript-eslint": "^8.21.0" "typescript-eslint": "^8.23.0"
}, },
"pnpm": { "pnpm": {
"overrides": { "overrides": {

1
dist/tsconfig.json vendored
View File

@ -5,6 +5,7 @@
"jsx": "react-jsx", "jsx": "react-jsx",
"module": "Preserve", "module": "Preserve",
"moduleResolution": "Bundler", "moduleResolution": "Bundler",
"noEmit": true,
"noImplicitOverride": true, "noImplicitOverride": true,
"noImplicitReturns": true, "noImplicitReturns": true,
"noUnusedLocals": true, "noUnusedLocals": true,

View File

@ -11,18 +11,18 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@aet/eslint-define-config": "^0.1.5", "@aet/eslint-define-config": "^0.1.7",
"@antfu/install-pkg": "^1.0.0", "@antfu/install-pkg": "^1.0.0",
"@eslint-community/eslint-utils": "^4.4.1", "@eslint-community/eslint-utils": "^4.4.1",
"@eslint-react/eslint-plugin": "1.24.1", "@eslint-react/eslint-plugin": "1.26.1",
"@eslint/js": "^9.19.0", "@eslint/js": "^9.19.0",
"@nolyfill/is-core-module": "^1.0.39", "@nolyfill/is-core-module": "^1.0.39",
"@stylistic/eslint-plugin": "^3.0.0", "@stylistic/eslint-plugin": "^3.0.1",
"@types/eslint": "^9.6.1", "@types/eslint": "^9.6.1",
"@typescript-eslint/eslint-plugin": "^8.21.0", "@typescript-eslint/eslint-plugin": "^8.23.0",
"@typescript-eslint/parser": "^8.21.0", "@typescript-eslint/parser": "^8.23.0",
"@typescript-eslint/type-utils": "^8.21.0", "@typescript-eslint/type-utils": "^8.23.0",
"@typescript-eslint/utils": "^8.21.0", "@typescript-eslint/utils": "^8.23.0",
"aria-query": "^5.3.2", "aria-query": "^5.3.2",
"axe-core": "^4.10.2", "axe-core": "^4.10.2",
"axobject-query": "4.1.0", "axobject-query": "4.1.0",
@ -30,7 +30,7 @@
"debug": "^4.4.0", "debug": "^4.4.0",
"doctrine": "^3.0.0", "doctrine": "^3.0.0",
"emoji-regex": "^10.4.0", "emoji-regex": "^10.4.0",
"enhanced-resolve": "^5.18.0", "enhanced-resolve": "^5.18.1",
"eslint-config-prettier": "^10.0.1", "eslint-config-prettier": "^10.0.1",
"eslint-import-resolver-node": "^0.3.9", "eslint-import-resolver-node": "^0.3.9",
"eslint-import-resolver-typescript": "^3.7.0", "eslint-import-resolver-typescript": "^3.7.0",
@ -49,8 +49,8 @@
"language-tags": "^2.0.1", "language-tags": "^2.0.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.0.1",
"semver": "^7.6.3", "semver": "^7.7.1",
"typescript-eslint": "^8.21.0" "typescript-eslint": "^8.23.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.26.7", "@babel/core": "^7.26.7",
@ -58,7 +58,7 @@
"@babel/preset-env": "^7.26.7", "@babel/preset-env": "^7.26.7",
"@graphql-eslint/eslint-plugin": "^4.3.0", "@graphql-eslint/eslint-plugin": "^4.3.0",
"@swc-node/register": "^1.10.9", "@swc-node/register": "^1.10.9",
"@tanstack/eslint-plugin-query": "^5.64.2", "@tanstack/eslint-plugin-query": "^5.66.0",
"@types/babel-plugin-macros": "^3.1.3", "@types/babel-plugin-macros": "^3.1.3",
"@types/babel__core": "^7.20.5", "@types/babel__core": "^7.20.5",
"@types/eslint-config-prettier": "^6.11.3", "@types/eslint-config-prettier": "^6.11.3",
@ -69,10 +69,10 @@
"@types/estree": "^1.0.6", "@types/estree": "^1.0.6",
"@types/estree-jsx": "^1.0.5", "@types/estree-jsx": "^1.0.5",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/node": "^22.10.10", "@types/node": "^22.13.1",
"@types/react-refresh": "^0.14.6", "@types/react-refresh": "^0.14.6",
"@typescript-eslint/types": "^8.21.0", "@typescript-eslint/types": "^8.23.0",
"@typescript-eslint/typescript-estree": "^8.21.0", "@typescript-eslint/typescript-estree": "^8.23.0",
"@vitest/eslint-plugin": "^1.1.25", "@vitest/eslint-plugin": "^1.1.25",
"babel-plugin-macros": "^3.1.0", "babel-plugin-macros": "^3.1.0",
"dts-bundle-generator": "9.5.1", "dts-bundle-generator": "9.5.1",
@ -91,7 +91,7 @@
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
"terser": "^5.37.0", "terser": "^5.38.0",
"type-fest": "^4.33.0", "type-fest": "^4.33.0",
"typescript": "^5.7.3" "typescript": "^5.7.3"
}, },

View File

@ -206,7 +206,7 @@ index df7b6b8..c4d0da1 100644
attributes: { attributes: {
autocomplete, autocomplete,
diff --git a/src/rules/label-has-associated-control.js b/src/rules/label-has-associated-control.js diff --git a/src/rules/label-has-associated-control.js b/src/rules/label-has-associated-control.js
index dd6b199..184199e 100644 index d65abe9..22ecee7 100644
--- a/src/rules/label-has-associated-control.js --- a/src/rules/label-has-associated-control.js
+++ b/src/rules/label-has-associated-control.js +++ b/src/rules/label-has-associated-control.js
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@

526
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -12,10 +12,10 @@
"subject": "[patch] `no-autofocus`: don't report error if autoFocus is set to false" "subject": "[patch] `no-autofocus`: don't report error if autoFocus is set to false"
}, },
"eslint-plugin-n": { "eslint-plugin-n": {
"hash": "86a524250dcc7c32225f2880ec66767a06c6258d", "hash": "4efe60f37c71ce3d71932714207bac780332cf3d",
"date": "2024-12-24T17:03:32+08:00", "date": "2025-02-01T12:40:03+01:00",
"committer": "GitHub", "committer": "GitHub",
"subject": "refactor: eslint v8 compat (#397)" "subject": "perf: improve `prefer-node-protocol`'s performance (#406)"
}, },
"eslint-plugin-react": { "eslint-plugin-react": {
"hash": "983b88dd3cb5e07919517d3fde4085f60883ded7", "hash": "983b88dd3cb5e07919517d3fde4085f60883ded7",

View File

@ -29,40 +29,41 @@ export const middlewares = {
}; };
export const envs: { export const envs: {
dependency: string; dependency: string[];
eslintPlugin?: Dependency; eslintPlugin?: Dependency;
middleware: keyof typeof middlewares; middleware: keyof typeof middlewares;
}[] = [ }[] = [
{ {
dependency: 'react', dependency: ['react'],
middleware: 'react', middleware: 'react',
}, },
{ {
dependency: '@vitejs/plugin-react', dependency: ['@vitejs/plugin-react', '@vitejs/plugin-react-swc'],
eslintPlugin: 'eslint-plugin-react-refresh',
middleware: 'reactRefresh', middleware: 'reactRefresh',
}, },
{ {
dependency: 'tailwindcss', dependency: ['tailwindcss'],
eslintPlugin: 'eslint-plugin-tailwindcss', eslintPlugin: 'eslint-plugin-tailwindcss',
middleware: 'tailwind', middleware: 'tailwind',
}, },
{ {
dependency: 'storybook', dependency: ['storybook'],
eslintPlugin: 'eslint-plugin-storybook', eslintPlugin: 'eslint-plugin-storybook',
middleware: 'storybook', middleware: 'storybook',
}, },
{ {
dependency: '@tanstack/react-query', dependency: ['@tanstack/react-query'],
eslintPlugin: '@tanstack/eslint-plugin-query', eslintPlugin: '@tanstack/eslint-plugin-query',
middleware: 'reactQuery', middleware: 'reactQuery',
}, },
{ {
dependency: '@testing-library/react', dependency: ['@testing-library/react'],
eslintPlugin: 'eslint-plugin-testing-library', eslintPlugin: 'eslint-plugin-testing-library',
middleware: 'testingLibrary', middleware: 'testingLibrary',
}, },
{ {
dependency: 'vitest', dependency: ['vitest'],
eslintPlugin: '@vitest/eslint-plugin', eslintPlugin: '@vitest/eslint-plugin',
middleware: 'vitest', middleware: 'vitest',
}, },
@ -93,7 +94,10 @@ export function* checkEnv(): Generator<Middleware> {
const deps = getProjectDependencies(); const deps = getProjectDependencies();
for (const { dependency, eslintPlugin, middleware } of envs) { for (const { dependency, eslintPlugin, middleware } of envs) {
if (deps.has(dependency) && (!eslintPlugin || deps.has(eslintPlugin))) { if (
dependency.some(dep => deps.has(dep)) &&
(!eslintPlugin || deps.has(eslintPlugin))
) {
yield middlewares[middleware]; yield middlewares[middleware];
} }
} }

View File

@ -6,7 +6,12 @@ import { envs, getProjectDependencies } from './environment';
const deps = getProjectDependencies(); const deps = getProjectDependencies();
const packages = uniq( const packages = uniq(
envs envs
.filter(_ => deps.has(_.dependency) && _.eslintPlugin && !deps.has(_.eslintPlugin)) .filter(
_ =>
_.dependency.some(dep => deps.has(dep)) &&
_.eslintPlugin &&
!deps.has(_.eslintPlugin),
)
.map(_ => _.eslintPlugin!), .map(_ => _.eslintPlugin!),
); );

View File

@ -11,6 +11,7 @@ const reactRules: Partial<ReactRulesObject> = {
'@eslint-react/no-children-prop': error, '@eslint-react/no-children-prop': error,
'@eslint-react/no-leaked-conditional-rendering': error, '@eslint-react/no-leaked-conditional-rendering': error,
'@eslint-react/prefer-read-only-props': off, '@eslint-react/prefer-read-only-props': off,
'@eslint-react/hooks-extra/no-direct-set-state-in-use-effect': off,
}; };
export async function react() { export async function react() {