Advertisement
Guest User

Untitled

a guest
Jun 8th, 2023
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import eslint from "@eslint/js";
  2. import tsEslintPlugin from "@typescript-eslint/eslint-plugin";
  3. import tsEslintParser from "@typescript-eslint/parser";
  4. import eslintConfigPrettier from "eslint-config-prettier";
  5. import eslintPluginImport from "eslint-plugin-import";
  6. import globals from "globals";
  7.  
  8. export default [
  9.     eslint.configs.recommended,
  10.  
  11.     {
  12.         files: ["src/index.ts"],
  13.  
  14.         languageOptions: {
  15.             ecmaVersion: 2022,
  16.  
  17.             globals: {
  18.                 ...globals.node,
  19.                 ...globals.es2022
  20.             },
  21.  
  22.             parser: tsEslintParser,
  23.             parserOptions: {
  24.                 ecmaVersion: 2022,
  25.                 project: "tsconfig.json"
  26.             }
  27.         },
  28.  
  29.         linterOptions: {
  30.             // noInlineConfig: true,
  31.             reportUnusedDisableDirectives: true
  32.         },
  33.  
  34.         plugins: {
  35.             "@typescript-eslint": tsEslintPlugin,
  36.             "eslint-plugin-import": eslintPluginImport,
  37.         },
  38.  
  39.         rules: {
  40.             // ESLint
  41.  
  42.             // Possible Problems
  43.  
  44.             "no-constructor-return": ["error"],
  45.             "no-duplicate-imports": ["error"],
  46.             "no-new-native-nonconstructor": ["error"],
  47.             "no-promise-executor-return": ["error"],
  48.             "no-self-compare": ["error"],
  49.             "no-template-curly-in-string": ["error"],
  50.             "no-unmodified-loop-condition": ["error"],
  51.             "no-unused-private-class-members": ["error"],
  52.             "require-atomic-updates": ["error"],
  53.  
  54.             // Suggestions
  55.  
  56.             "arrow-body-style": ["error", "as-needed", {
  57.                 "requireReturnForObjectLiteral": true
  58.             }],
  59.             "eqeqeq": ["error", "always"],
  60.             "func-style": ["error", "declaration", {
  61.                 "allowArrowFunctions": true
  62.             }],
  63.             "no-eval": ["error", { "allowIndirect": false }],
  64.             "no-floating-decimal": ["error"],
  65.             "no-implied-eval": ["error"],
  66.             "no-multi-str": ["error"],
  67.             "no-octal-escape": ["error"],
  68.             "no-param-reassign": ["error"],
  69.             "no-var": ["error"],
  70.             "operator-assignment": ["error", "always"],
  71.             "prefer-arrow-callback": ["error", {
  72.                 "allowNamedFunctions": false,
  73.                 "allowUnboundThis": true
  74.             }],
  75.             "prefer-const": ["error", {
  76.                 "destructuring": "any",
  77.                 "ignoreReadBeforeAssign": false
  78.             }],
  79.             "prefer-exponentiation-operator": ["error"],
  80.             "prefer-named-capture-group": ["error"],
  81.             "prefer-numeric-literals": ["error"],
  82.             "prefer-regex-literals": ["error", {
  83.                 "disallowRedundantWrapping": true
  84.             }],
  85.             "prefer-rest-params": ["error"],
  86.             "prefer-spread": ["error"],
  87.             "prefer-template": ["error"],
  88.             "quote-props": ["error", "as-needed", {
  89.                 "keywords": true,
  90.                 "unnecessary": true,
  91.                 "numbers": false
  92.             }],
  93.             "radix": ["error", "always"],
  94.  
  95.             // @typescript-eslint/eslint-plugin
  96.  
  97.             ...tsEslintPlugin.configs["recommended"].rules,
  98.             ...tsEslintPlugin.configs["recommended-requiring-type-checking"].rules,
  99.  
  100.             "@typescript-eslint/explicit-member-accessibility": ["error", {
  101.                 "accessability": "explicit"
  102.             }],
  103.             "@typescript-eslint/member-delimiter-style": ["error", {
  104.                 "multiline": {
  105.                     "delimiter": "semi",
  106.                     "requireLast": true
  107.                 },
  108.                 "singleline": {
  109.                     "delimiter": "semi",
  110.                     "requireLast": true
  111.                 }
  112.             }],
  113.             "@typescript-eslint/no-inferrable-types": ["off"],
  114.             "@typescript-eslint/no-require-imports": ["error"],
  115.             "@typescript-eslint/no-unsafe-declaration-merging": ["error"],
  116.             "@typescript-eslint/no-unsafe-enum-comparison": ["error"],
  117.             "@typescript-eslint/parameter-properties": ["error", {
  118.                 "prefer": "parameter-property"
  119.             }],
  120.             "@typescript-eslint/prefer-literal-enum-member": ["error"],
  121.             "@typescript-eslint/prefer-optional-chain": ["error"],
  122.             "@typescript-eslint/prefer-string-starts-ends-with": ["error"],
  123.             "@typescript-eslint/prefer-ts-expect-error": ["error"],
  124.             "@typescript-eslint/require-array-sort-compare": ["error", {
  125.                 "ignoreStringArrays": true
  126.             }],
  127.  
  128.             // eslint-plugin-import
  129.  
  130.             ...eslintPluginImport.configs.recommended,
  131.             ...eslintPluginImport.configs.typescript,
  132.  
  133.             // Helpful warnings
  134.  
  135.             "import/no-deprecated": ["error"],
  136.             "import/no-empty-named-blocks": ["error"],
  137.  
  138.             // Module systems
  139.  
  140.             // Static analysis
  141.  
  142.             "import/no-absolute-path": ["error"],
  143.             "import/no-self-import": ["error"],
  144.  
  145.             // Style guide
  146.  
  147.             "import/first": ["error"],
  148.             "import/newline-after-import": ["error", {
  149.                 "considerComments": true
  150.             }],
  151.             "import/order": ["error", {
  152.                 "groups": [
  153.                     ["builtin", "external"],
  154.                     "internal",
  155.                     ["parent", "sibling", "index"],
  156.                     "type",
  157.                     "object"
  158.                 ],
  159.                 "newlines-between": "always",
  160.                 "alphabetize": {
  161.                     "order": "asc",
  162.                     "orderImportKind": "asc",
  163.                     "caseInsensitive": false
  164.                 }
  165.             }]
  166.         }
  167.     },
  168.  
  169.     eslintConfigPrettier
  170. ];
  171.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement