.eslintrc.json 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. {
  2. "root": true,
  3. "env": {
  4. "browser": true
  5. },
  6. "extends": [
  7. "eslint:recommended",
  8. "plugin:@typescript-eslint/eslint-recommended",
  9. "plugin:@typescript-eslint/recommended",
  10. "prettier"
  11. ],
  12. "globals": {
  13. "Atomics": "readonly",
  14. "SharedArrayBuffer": "readonly"
  15. },
  16. "parser": "@typescript-eslint/parser",
  17. "parserOptions": {
  18. "ecmaVersion": 2021,
  19. "project": "./tsconfig.json"
  20. },
  21. "rules": {
  22. "semi": ["error", "always", { "omitLastInOneLineBlock": true }],
  23. "no-multiple-empty-lines": [
  24. "error",
  25. { "max": 2, "maxEOF": 0, "maxBOF": 0 }
  26. ],
  27. "quotes": ["error", "double", { "avoidEscape": true }],
  28. "camelcase": ["error", { "properties": "always" }],
  29. "curly": ["error", "multi-or-nest"],
  30. "eqeqeq": ["error", "always", { "null": "ignore" }],
  31. "one-var": ["error", "consecutive"],
  32. "linebreak-style": ["error", "unix"],
  33. "prefer-const": "error",
  34. "no-multi-spaces": "error",
  35. "object-shorthand": "error",
  36. "quote-props": ["error", "as-needed"],
  37. "prefer-destructuring": [
  38. "error",
  39. {
  40. "object": true,
  41. "array": false
  42. }
  43. ],
  44. "prefer-template": "error",
  45. "space-before-blocks": ["error", "always"],
  46. "space-infix-ops": "error",
  47. "func-call-spacing": ["error", "never"],
  48. "key-spacing": ["error", { "beforeColon": false }],
  49. "dot-notation": "error",
  50. "no-case-declarations": "error",
  51. "brace-style": "error",
  52. "template-curly-spacing": "error",
  53. "no-console": "warn",
  54. "no-var": "error",
  55. "@typescript-eslint/no-explicit-any": "error",
  56. "@typescript-eslint/no-unused-vars": "error",
  57. "no-eval": "warn",
  58. "no-undefined": "error",
  59. "no-eq-null": "error",
  60. "@typescript-eslint/array-type": ["error", { "default": "array" }],
  61. "no-lonely-if": "error",
  62. "arrow-body-style": "off",
  63. "prefer-arrow-callback": "off",
  64. "no-one-time-vars/no-one-time-vars": [
  65. "warn",
  66. {
  67. "ignoredVariables": ["browsingTimestamp"],
  68. "ignoreObjectDestructuring": true
  69. }
  70. ],
  71. "radix": "off",
  72. "unicorn/consistent-destructuring": "error",
  73. "unicorn/empty-brace-spaces": "error",
  74. "unicorn/no-array-for-each": "error",
  75. "unicorn/no-empty-file": "error",
  76. "unicorn/no-for-loop": "error",
  77. "unicorn/no-instanceof-array": "error",
  78. "unicorn/no-lonely-if": "error",
  79. "unicorn/prefer-array-find": "error",
  80. "unicorn/prefer-array-flat": "error",
  81. "unicorn/prefer-array-flat-map": "error",
  82. "unicorn/prefer-array-index-of": "error",
  83. "unicorn/prefer-date-now": "error",
  84. "unicorn/prefer-default-parameters": "error",
  85. "unicorn/prefer-includes": "error",
  86. "unicorn/prefer-string-starts-ends-with": "error",
  87. "unicorn/prefer-string-trim-start-end": "error",
  88. "unicorn/prefer-switch": "error",
  89. "unicorn/require-number-to-fixed-digits-argument": "error",
  90. "unicorn/throw-new-error": "error",
  91. "unicorn/no-unreadable-array-destructuring": "error",
  92. "unicorn/prefer-query-selector": "error",
  93. "unicorn/prefer-dom-node-text-content": "error",
  94. "unicorn/prefer-logical-operator-over-ternary": "error"
  95. },
  96. "overrides": [
  97. {
  98. "env": {
  99. "node": true,
  100. "mongo": true
  101. },
  102. "files": ["./*.ts"],
  103. "rules": {
  104. "@typescript-eslint/no-non-null-assertion": "off",
  105. "no-console": "off"
  106. }
  107. }
  108. ],
  109. "reportUnusedDisableDirectives": true,
  110. "noInlineConfig": false,
  111. "plugins": ["@typescript-eslint", "no-one-time-vars", "unicorn"]
  112. }