Skip to content

Commit 2253659

Browse files
authored
group shared eslint rules (#41)
* group shared eslint rules * add line
1 parent 8c2ac74 commit 2253659

File tree

6 files changed

+57
-80
lines changed

6 files changed

+57
-80
lines changed

apps/cli/eslint.config.js

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import javascript from '@eslint/js'
22
import globals from 'globals'
33
import typescript from 'typescript-eslint'
4+
import { sharedJsRules } from '../../shared.eslint.config.js'
45

56
export default [
67
{
@@ -21,41 +22,7 @@ export default [
2122
rules: {
2223
...javascript.configs.recommended.rules,
2324
...typescript.configs.recommended.rules,
24-
'arrow-spacing': 'error',
25-
camelcase: 'off',
26-
'comma-spacing': 'error',
27-
'comma-dangle': ['error', 'always-multiline'],
28-
'eol-last': 'error',
29-
eqeqeq: 'error',
30-
'func-style': ['error', 'declaration'],
31-
indent: ['error', 2],
32-
'no-constant-condition': 'off',
33-
'no-extra-parens': 'error',
34-
'no-multi-spaces': 'error',
35-
'no-trailing-spaces': 'error',
36-
'no-unused-vars': 'warn',
37-
'no-useless-concat': 'error',
38-
'no-useless-rename': 'error',
39-
'no-useless-return': 'error',
40-
'no-var': 'error',
41-
'object-curly-spacing': ['error', 'always'],
42-
'prefer-const': 'warn',
43-
'prefer-destructuring': ['warn', {
44-
object: true,
45-
array: false,
46-
}],
47-
'prefer-promise-reject-errors': 'error',
48-
quotes: ['error', 'single'],
49-
'require-await': 'warn',
50-
semi: ['error', 'never'],
51-
52-
'sort-imports': ['error', {
53-
ignoreDeclarationSort: true,
54-
ignoreMemberSort: false,
55-
memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
56-
}],
57-
58-
'space-infix-ops': 'error',
25+
...sharedJsRules,
5926
},
6027
},
6128
]

apps/hightable-demo/eslint.config.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import reactHooks from 'eslint-plugin-react-hooks'
44
import reactRefresh from 'eslint-plugin-react-refresh'
55
import globals from 'globals'
66
import tseslint from 'typescript-eslint'
7+
import { sharedJsRules, sharedTsRules } from '../../shared.eslint.config.js'
78

89
export default tseslint.config(
910
{ ignores: ['dist'] },
@@ -26,15 +27,17 @@ export default tseslint.config(
2627
'react-refresh': reactRefresh,
2728
},
2829
rules: {
30+
...react.configs.recommended.rules,
31+
...react.configs['jsx-runtime'].rules,
2932
...reactHooks.configs.recommended.rules,
3033
'react-refresh/only-export-components': [
3134
'warn',
3235
{ allowConstantExport: true },
3336
],
34-
...react.configs.recommended.rules,
35-
...react.configs['jsx-runtime'].rules,
36-
37-
'@typescript-eslint/restrict-template-expressions': 'off',
37+
...js.configs.recommended.rules,
38+
...tseslint.configs.recommended.rules,
39+
...sharedJsRules,
40+
...sharedTsRules,
3841
},
3942
},
4043
)

apps/hightable-demo/src/data.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ function lorem(rand: number, length: number): string {
55
const str = Array.from({ length }, (_, i) => words[Math.floor(i + rand * 8) % 8]).join(' ')
66
return str[0].toUpperCase() + str.slice(1)
77
}
8-
8+
99
function delay<T>(value: T, ms: number): Promise<T> {
10-
return new Promise(resolve => setTimeout(() => { resolve(value);}, ms))
10+
return new Promise(resolve => setTimeout(() => { resolve(value) }, ms))
1111
}
1212

1313
const header = ['ID', 'Name', 'Age', 'UUID', 'Text', 'JSON']

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"private": true,
44
"description": "Hyperparam apps and packages",
55
"license": "MIT",
6+
"type": "module",
67
"workspaces": [
78
"apps/cli",
89
"apps/hightable-demo",

packages/components/eslint.config.js

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import reactHooks from 'eslint-plugin-react-hooks'
44
import reactRefresh from 'eslint-plugin-react-refresh'
55
import globals from 'globals'
66
import tseslint from 'typescript-eslint'
7+
import { sharedJsRules, sharedTsRules } from '../../shared.eslint.config.js'
78

89
export default tseslint.config(
910
{ ignores: ['coverage/', 'dist/', 'es/'] },
@@ -32,47 +33,10 @@ export default tseslint.config(
3233
'warn',
3334
{ allowConstantExport: true },
3435
],
35-
/// ^ from vite default configuration
3636
...js.configs.recommended.rules,
3737
...tseslint.configs.recommended.rules,
38-
'arrow-spacing': 'error',
39-
camelcase: 'off',
40-
'comma-spacing': 'error',
41-
'comma-dangle': ['error', 'always-multiline'],
42-
'eol-last': 'error',
43-
eqeqeq: 'error',
44-
'func-style': ['error', 'declaration'],
45-
indent: ['error', 2],
46-
'no-constant-condition': 'off',
47-
'no-extra-parens': 'error',
48-
'no-multi-spaces': 'error',
49-
'no-trailing-spaces': 'error',
50-
'no-unused-vars': 'off',
51-
'@typescript-eslint/no-unused-vars': 'warn',
52-
'no-useless-concat': 'error',
53-
'no-useless-rename': 'error',
54-
'no-useless-return': 'error',
55-
'no-var': 'error',
56-
'object-curly-spacing': ['error', 'always'],
57-
'prefer-const': 'warn',
58-
'prefer-destructuring': ['warn', {
59-
object: true,
60-
array: false,
61-
}],
62-
'prefer-promise-reject-errors': 'error',
63-
quotes: ['error', 'single'],
64-
'require-await': 'warn',
65-
semi: ['error', 'never'],
66-
67-
'sort-imports': ['error', {
68-
ignoreDeclarationSort: true,
69-
ignoreMemberSort: false,
70-
memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
71-
}],
72-
73-
'space-infix-ops': 'error',
74-
75-
'@typescript-eslint/restrict-template-expressions': 'off',
38+
...sharedJsRules,
39+
...sharedTsRules,
7640
},
7741
},
7842
{

shared.eslint.config.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
export const sharedJsRules = {
2+
'arrow-spacing': 'error',
3+
camelcase: 'off',
4+
'comma-spacing': 'error',
5+
'comma-dangle': ['error', 'always-multiline'],
6+
'eol-last': 'error',
7+
eqeqeq: 'error',
8+
'func-style': ['error', 'declaration'],
9+
indent: ['error', 2],
10+
'no-constant-condition': 'off',
11+
'no-extra-parens': 'error',
12+
'no-multi-spaces': 'error',
13+
'no-trailing-spaces': 'error',
14+
'no-unused-vars': 'off',
15+
'no-useless-concat': 'error',
16+
'no-useless-rename': 'error',
17+
'no-useless-return': 'error',
18+
'no-var': 'error',
19+
'object-curly-spacing': ['error', 'always'],
20+
'prefer-const': 'warn',
21+
'prefer-destructuring': ['warn', {
22+
object: true,
23+
array: false,
24+
}],
25+
'prefer-promise-reject-errors': 'error',
26+
quotes: ['error', 'single'],
27+
'require-await': 'warn',
28+
semi: ['error', 'never'],
29+
30+
'sort-imports': ['error', {
31+
ignoreDeclarationSort: true,
32+
ignoreMemberSort: false,
33+
memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
34+
}],
35+
36+
'space-infix-ops': 'error',
37+
}
38+
39+
export const sharedTsRules = {
40+
'@typescript-eslint/restrict-template-expressions': 'off',
41+
'@typescript-eslint/no-unused-vars': 'warn',
42+
}

0 commit comments

Comments
 (0)