mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1module.exports = {
2 root: true,
3 extends: [
4 '@react-native-community',
5 'plugin:react/recommended',
6 'plugin:react-native-a11y/ios',
7 'prettier',
8 ],
9 parser: '@typescript-eslint/parser',
10 plugins: [
11 '@typescript-eslint',
12 'react',
13 'lingui',
14 'simple-import-sort',
15 'bsky-internal',
16 'eslint-plugin-react-compiler',
17 ],
18 rules: {
19 // Temporary until https://github.com/facebook/react-native/pull/43756 gets into a release.
20 'prettier/prettier': 0,
21 'react/no-unescaped-entities': 0,
22 'react-native/no-inline-styles': 0,
23 'bsky-internal/avoid-unwrapped-text': [
24 'error',
25 {
26 impliedTextComponents: ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P'],
27 impliedTextProps: [],
28 suggestedTextWrappers: {
29 Button: 'ButtonText',
30 'ToggleButton.Button': 'ToggleButton.ButtonText',
31 },
32 },
33 ],
34 'bsky-internal/use-typed-gates': 'error',
35 'simple-import-sort/imports': [
36 'warn',
37 {
38 groups: [
39 // Side effect imports.
40 ['^\\u0000'],
41 // Node.js builtins prefixed with `node:`.
42 ['^node:'],
43 // Packages.
44 // Things that start with a letter (or digit or underscore), or `@` followed by a letter.
45 // React/React Native priortized, followed by expo
46 // Followed by all packages excluding unprefixed relative ones
47 [
48 '^(react\\/(.*)$)|^(react$)|^(react-native(.*)$)',
49 '^(expo(.*)$)|^(expo$)',
50 '^(?!(?:alf|components|lib|locale|logger|platform|screens|state|view)(?:$|\\/))@?\\w',
51 ],
52 // Relative imports.
53 // Ideally, anything that starts with a dot or #
54 // due to unprefixed relative imports being used, we whitelist the relative paths we use
55 // (?:$|\\/) matches end of string or /
56 [
57 '^(?:#\\/)?(?:lib|state|logger|platform|locale)(?:$|\\/)',
58 '^(?:#\\/)?view(?:$|\\/)',
59 '^(?:#\\/)?screens(?:$|\\/)',
60 '^(?:#\\/)?alf(?:$|\\/)',
61 '^(?:#\\/)?components(?:$|\\/)',
62 '^#\\/',
63 '^\\.',
64 ],
65 // anything else - hopefully we don't have any of these
66 ['^'],
67 ],
68 },
69 ],
70 'simple-import-sort/exports': 'warn',
71 // TODO: Reenable when we figure out why it gets stuck on CI.
72 // 'react-compiler/react-compiler': 'error',
73 },
74 ignorePatterns: [
75 '**/__mocks__/*.ts',
76 'src/platform/polyfills.ts',
77 'src/third-party',
78 'ios',
79 'android',
80 'coverage',
81 '*.lock',
82 '.husky',
83 'patches',
84 'bskyweb',
85 '*.html',
86 'bskyweb',
87 'src/locale/locales/_build/',
88 'src/locale/locales/**/*.js',
89 ],
90 settings: {
91 componentWrapperFunctions: ['observer'],
92 },
93 parserOptions: {
94 sourceType: 'module',
95 ecmaVersion: 'latest',
96 },
97}