-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy patheslint.config.mjs
More file actions
88 lines (84 loc) · 2.5 KB
/
Copy patheslint.config.mjs
File metadata and controls
88 lines (84 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import fs from 'node:fs'
import hydraPlugin from '@exodus/eslint-plugin-hydra'
import packagePlugin from '@exodus/eslint-plugin-package'
import tsconfigPlugin from '@exodus/eslint-plugin-tsconfig'
import { javascriptBabelPreset, typescriptReactBabelPreset } from '@exodus/eslint-config-exodus'
import markdownParser from '@exodus/eslint-parser-markdown'
import docsPlugin from '@exodus/eslint-plugin-docs'
const ignore = {
ignores: [
'**/lib',
'**/dist',
'**/tmp',
'**/node_modules',
'tools/generators/**/files',
'libraries/analytics-validation/src/__tests__/package.json',
],
}
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'))
const isModule = pkg.type === 'module'
const esmConfigs = isModule ? hydraPlugin.configs.esm : []
const config = [
ignore,
javascriptBabelPreset,
hydraPlugin.configs.recommended,
hydraPlugin.configs.features,
packagePlugin.configs.recommended,
tsconfigPlugin.configs.recommended,
typescriptReactBabelPreset,
esmConfigs,
{
plugins: {
'@exodus/docs': docsPlugin,
},
rules: {
'@exodus/docs/no-broken-links': 'error',
'@exodus/docs/mirror-links': [
'error',
{ mirrors: [{ source: 'ExodusMovement/exodus-hydra', target: 'ExodusOSS/hydra' }] },
],
},
files: ['**/*.md'],
ignores: ['**/CHANGELOG.md'],
languageOptions: { parser: markdownParser },
},
{
files: ['**/*.{js,ts,jsx,tsx,mjs,mts,cjs,cts}'],
settings: {
'import/ignore': ['react-native'],
'import/parsers': {
'@babel/eslint-parser': ['.js', '.cjs', '.mjs', '.jsx'],
'@typescript-eslint/parser': ['.ts', '.cts', '.mts', '.tsx'],
},
'import/resolver': {
typescript: true,
node: {
extensions: ['.js', '.mjs', '.cjs', '.json', '.ts', '.tsx', '.android.js', '.ios.js'],
},
},
},
rules: {
'@exodus/hydra/forbidden-redux-dependencies': ['error', { modules: ['uiConfig'] }],
'unicorn/prefer-top-level-await': 'off',
'unicorn/text-encoding-identifier-case': 'off',
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['lodash', 'lodash/*', 'lodash.*', 'lodash-es'],
message: 'Prefer @exodus/basic-utils to lodash, if possible',
},
],
},
],
},
},
{
files: ['**/__tests__/**/*.{ts,js}', '**/*.{spec,test}.{ts,js}'],
rules: {
'no-restricted-imports': 'off',
},
},
]
export default config.flat()