as-app/.eslintrc.js

143 lines
3.5 KiB
JavaScript

const path = require("path");
module.exports = {
root: true,
env: {
"react-native/react-native": true,
},
extends: [
"plugin:prettier/recommended",
"plugin:import/recommended",
"plugin:jsx-a11y/recommended",
"plugin:react-hooks/recommended",
],
parser: "@babel/eslint-parser",
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2021,
sourceType: "module",
babelOptions: {
configFile: path.resolve(__dirname, "babel.config.js"),
},
},
plugins: [
"babel",
"sort-keys-fix",
"react",
"react-native",
"unused-imports",
"autoimport-declarative",
],
settings: {
react: {
version: "detect",
},
"import/ignore": ["react-native"],
"import/resolver": {
typescript: {},
},
},
ignorePatterns: ["build", "node_modules", "e2e"],
rules: {
"no-undef": [2],
"react/forbid-prop-types": [0],
"react/jsx-uses-react": 1,
"react/jsx-uses-vars": 1,
"react-hooks/exhaustive-deps": "error",
"jsx-a11y/no-autofocus": 0,
"import/no-named-as-default": 0,
"import/no-named-as-default-member": 0,
// 'unused-imports/no-unused-imports-ts': 1, # enable and run yarn lint --fix to autoremove all unused imports
"autoimport-declarative/autoimport": [
1,
{
packages: {
react: [
"useState",
"useEffect",
"useContext",
"useReducer",
"useCallback",
"useMemo",
"useRef",
"useImperativeHandle",
"useLayoutEffect",
"useDebugValue",
"createRef",
"forwardRef",
{
name: "React",
isDefault: true,
},
],
"react-native": [
"useWindowDimensions",
"View",
"TouchableOpacity",
"TouchableHighlight",
"Image",
"StyleSheet",
],
"@react-navigation/native": [
"useNavigation",
"useFocusEffect",
"useIsFocused",
],
"@maplibre/maplibre-react-native": [
{
name: "Maplibre",
isDefault: true,
},
],
"@expo/vector-icons": [
"MaterialCommunityIcons",
"MaterialIcons",
"Entypo",
"FeatherMaterialIcons",
],
"react-native-paper": ["ToggleButton", "Button", "FAB"],
"@apollo/client": ["useQuery", "useMutation", "useLazyQuery"],
"react-hook-form": [
"FormProvider",
"Controller",
"useForm",
"useFormContext",
"useFieldArray",
"useField",
],
moment: [
{
name: "moment",
isDefault: true,
},
],
"hooks/useStreamQueryWithSubscription": [
{
name: "useStreamQueryWithSubscription",
isDefault: true,
},
],
"~/theme": ["useTheme", "createStyles"],
"~/lib/toast-notifications": ["useToast"],
"~/lib/geo/humanizeDistance": [
{
name: "humanizeDistance",
isDefault: true,
},
],
"~/components/Text": [
{
name: "Text",
isDefault: true,
},
],
},
},
],
},
globals: {
AbortController: true,
},
};