Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(eslint): migrate to flat config and simplify #1023

Merged
merged 29 commits into from
Dec 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
d50ee7d
chore(package.json): update related eslint library, update script for…
sukvvon Dec 19, 2024
6b2a990
chore(pnpm-lock.yaml): reflect changes in package.json
sukvvon Dec 19, 2024
5d98e47
chore(eslint): migrate eslint configuration .eslintrc.json to eslint.…
sukvvon Dec 19, 2024
3cf8f2d
style(tests): remove unused eslint-disable
sukvvon Dec 19, 2024
0c73d89
Merge branch 'main' into chore/migrate-eslintrc-to-eslint-config
sukvvon Dec 19, 2024
9a6d119
Merge branch 'main' into chore/migrate-eslintrc-to-eslint-config
sukvvon Dec 19, 2024
34b379a
Merge branch 'main' into chore/migrate-eslintrc-to-eslint-config
sukvvon Dec 20, 2024
3c00663
Merge branch 'main' into chore/migrate-eslintrc-to-eslint-config
sukvvon Dec 29, 2024
3b6d438
chore(eslint): change 'js' to 'mjs'
sukvvon Dec 29, 2024
7e3b19b
chore(package.json): remove '-c eslint.config.js' in 'lint' scripts
sukvvon Dec 29, 2024
4940c24
chore(package.json): simplify 'lint' scripts
sukvvon Dec 29, 2024
f5f6809
chore(eslint): add 'dist/**', 'examples/**', 'website/**' in 'ignores'
sukvvon Dec 29, 2024
85dd56a
chore(package.json): remove 'globals' library
sukvvon Dec 29, 2024
24ec16f
chore(pnpm-lock.yaml): reflect changes in package.json
sukvvon Dec 29, 2024
c9153ce
chore(eslint): remove 'globals' config
sukvvon Dec 29, 2024
60e4311
chore(rollup): add 'eslint-disable no-undef'
sukvvon Dec 29, 2024
140a475
chore(eslint): add 'recommended' plugins, sort, and remove unused rules
sukvvon Dec 29, 2024
428fcb6
chore(eslint): remove duplicate 'languageOptions'
sukvvon Dec 29, 2024
77eb1c4
chore(package.json): add 'eslint-import-resolver-typescript', remove …
sukvvon Dec 29, 2024
4f6cfa0
chore(pnpm-lock.yaml): reflect changes in package.json
sukvvon Dec 29, 2024
150539c
chore(eslint): simplify settings 'import/resolver'
sukvvon Dec 29, 2024
0d155dc
chore(eslint): remove 'import/extensions', 'import/parsers' to simplify
sukvvon Dec 29, 2024
1f63603
chore(package.json): update eslint and related dependencies
sukvvon Dec 29, 2024
079b152
chore(pnpm-lock.yaml): reflect changes in package.json
sukvvon Dec 29, 2024
690afe7
chore(package.json): remove eslint-{config,plugin}-prettier
sukvvon Dec 29, 2024
36a8cf5
chore(pnpm-lock.yaml): reflect changes in package.json
sukvvon Dec 29, 2024
7ab4601
chore(eslint): simplify 'ignores'
sukvvon Dec 30, 2024
670d0de
chore(package.json): add '@eslint/js'
sukvvon Dec 30, 2024
dfb383f
chore(pnpm-lock.yaml): reflect changes in package.json
sukvvon Dec 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 0 additions & 130 deletions .eslintrc.json

This file was deleted.

108 changes: 108 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import eslint from '@eslint/js'
import vitest from '@vitest/eslint-plugin'
import importPlugin from 'eslint-plugin-import'
import jestDom from 'eslint-plugin-jest-dom'
import react from 'eslint-plugin-react'
import reactCompiler from 'eslint-plugin-react-compiler'
import reactHooks from 'eslint-plugin-react-hooks'
import testingLibrary from 'eslint-plugin-testing-library'
import tseslint from 'typescript-eslint'

export default tseslint.config(
{
ignores: ['dist/', 'examples/', 'website/'],
},
eslint.configs.recommended,
importPlugin.flatConfigs.recommended,
tseslint.configs.recommended,
react.configs.flat.recommended,
react.configs.flat['jsx-runtime'],
{
plugins: {
'react-compiler': reactCompiler,
'react-hooks': reactHooks,
},
settings: {
react: {
version: 'detect',
},
'import/resolver': {
typescript: true,
},
},
rules: {
eqeqeq: 'error',
curly: ['warn', 'multi-line', 'consistent'],
'sort-imports': [
'error',
{
ignoreDeclarationSort: true,
},
],
'import/no-unresolved': ['error', { commonjs: true, amd: true }],
'import/named': 'off',
'import/namespace': 'off',
'import/no-named-as-default-member': 'off',
'import/no-duplicates': 'error',
'import/extensions': ['error', 'always'],
'import/order': [
'error',
{
alphabetize: { order: 'asc', caseInsensitive: true },
groups: [
'builtin',
'external',
'internal',
'parent',
'sibling',
'index',
'object',
],
'newlines-between': 'never',
pathGroups: [
{
pattern: 'react',
group: 'builtin',
position: 'before',
},
],
pathGroupsExcludedImportTypes: ['builtin'],
},
],
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
],
'react-compiler/react-compiler': 'warn',
...reactHooks.configs.recommended.rules,
},
},
{
files: ['tests/**/*.{ts,tsx}'],
...testingLibrary.configs['flat/react'],
...jestDom.configs['flat/recommended'],
...vitest.configs.recommended,
rules: {
'import/extensions': ['error', 'never'],
'@typescript-eslint/no-unused-vars': 'off',
'vitest/expect-expect': 'off',
'vitest/consistent-test-it': [
'error',
{ fn: 'it', withinDescribe: 'it' },
],
},
},
{
files: ['src/vanilla/utils/proxyMap.ts', 'src/vanilla/utils/proxySet.ts'],
rules: {
'@typescript-eslint/no-unused-expressions': 'off',
},
},
{
files: ['*.js'],
rules: {
'@typescript-eslint/no-require-imports': 'off',
},
},
)
26 changes: 12 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,11 @@
"build:react_utils": "rollup -c --config-react_utils",
"postbuild": "pnpm patch-d-ts && pnpm copy && pnpm patch-old-ts && pnpm patch-esm-ts",
"prettier": "prettier '*.{js,json,md}' '{src,tests,docs}/**/*.{ts,tsx,md,mdx}' --write",
"eslint": "eslint --no-eslintrc --c .eslintrc.json --fix '*.{js,ts}' '{src,tests}/**/*.{ts,tsx}'",
"eslint": "eslint . --fix",
"test": "pnpm run '/^test:.*/'",
"test:format": "prettier '*.{js,json,md}' '{src,tests,docs}/**/*.{ts,tsx,md,mdx}' --list-different",
"test:types": "tsc --noEmit",
"test:lint": "eslint --no-eslintrc --c .eslintrc.json '*.{js,ts}' '{src,tests}/**/*.{ts,tsx}'",
"test:lint": "eslint .",
"test:spec": "vitest run",
"patch-d-ts": "node -e \"var {entries}=require('./rollup.config.js');require('shelljs').find('dist/**/*.d.ts').forEach(f=>{entries.forEach(({find,replacement})=>require('shelljs').sed('-i',new RegExp(' from \\''+find.source.slice(0,-1)+'\\';$'),' from \\''+replacement+'\\';',f));require('shelljs').sed('-i',/ from '(\\.[^']+)\\.ts';$/,' from \\'\\$1\\';',f)})\"",
"copy": "shx cp -r dist/src/* dist/esm && shx cp -r dist/src/* dist && shx rm -rf dist/{src,tests} && shx cp package.json readme.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.prettier=undefined;\"",
Expand Down Expand Up @@ -106,6 +106,7 @@
"proxy-compare": "^3.0.0"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
"@redux-devtools/extension": "^3.3.0",
"@rollup/plugin-alias": "^5.1.1",
"@rollup/plugin-node-resolve": "^15.3.0",
Expand All @@ -116,22 +117,18 @@
"@types/jsdom": "^21.1.7",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@typescript-eslint/eslint-plugin": "^8.13.0",
"@typescript-eslint/parser": "^8.13.0",
"@vitest/coverage-v8": "^2.1.4",
"@vitest/eslint-plugin": "^1.1.7",
"@vitest/eslint-plugin": "^1.1.21",
"@vitest/ui": "^2.1.4",
"esbuild": "^0.24.0",
"eslint": "8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint": "9.17.0",
"eslint-import-resolver-typescript": "^3.7.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest-dom": "^5.4.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-compiler": "19.0.0-beta-8a03594-20241020",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-testing-library": "^6.4.0",
"eslint-plugin-jest-dom": "^5.5.0",
"eslint-plugin-react": "^7.37.3",
"eslint-plugin-react-compiler": "19.0.0-beta-b2e8e9c-20241220",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-testing-library": "^7.1.1",
"jest-leak-detector": "^29.7.0",
"jsdom": "^25.0.1",
"json": "^11.0.0",
Expand All @@ -148,6 +145,7 @@
"ts-expect": "^1.3.0",
"tslib": "^2.8.1",
"typescript": "^5.6.3",
"typescript-eslint": "^8.18.2",
"vite": "^5.4.10",
"vitest": "^2.1.4"
},
Expand Down
Loading
Loading