.eslintrc.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /**
  2. * @type {import('eslint').Linter.Config}
  3. */
  4. module.exports = {
  5. extends: ['next/core-web-vitals', 'weseek/react'],
  6. plugins: [],
  7. ignorePatterns: [
  8. 'dist/**',
  9. '**/dist/**',
  10. 'transpiled/**',
  11. 'public/**',
  12. 'src/linter-checker/**',
  13. 'tmp/**',
  14. 'next-env.d.ts',
  15. 'next.config.js',
  16. 'playwright.config.ts',
  17. 'test/integration/global-setup.js',
  18. 'test/integration/global-teardown.js',
  19. 'test/integration/setup-crowi.ts',
  20. 'test/integration/crowi/**',
  21. 'test/integration/middlewares/**',
  22. 'test/integration/migrations/**',
  23. 'test/integration/models/**',
  24. 'test/integration/service/**',
  25. 'test/integration/setup.js',
  26. 'playwright/**',
  27. 'test-with-vite/**',
  28. 'public/**',
  29. 'bin/**',
  30. 'config/**',
  31. 'src/styles/**',
  32. 'src/linter-checker/**',
  33. 'src/migrations/**',
  34. 'src/models/**',
  35. 'src/features/callout/**',
  36. 'src/features/collaborative-editor/**',
  37. 'src/features/comment/**',
  38. 'src/features/templates/**',
  39. 'src/features/mermaid/**',
  40. 'src/features/search/**',
  41. 'src/features/plantuml/**',
  42. 'src/features/external-user-group/**',
  43. 'src/features/page-bulk-export/**',
  44. 'src/features/growi-plugin/**',
  45. 'src/features/opentelemetry/**',
  46. 'src/features/openai/**',
  47. 'src/features/rate-limiter/**',
  48. 'src/stores-universal/**',
  49. 'src/interfaces/**',
  50. 'src/utils/**',
  51. 'src/components/**',
  52. 'src/services/**',
  53. 'src/states/**',
  54. 'src/stores/**',
  55. 'src/pages/**',
  56. 'src/server/crowi/**',
  57. 'src/server/events/**',
  58. 'src/server/interfaces/**',
  59. 'src/server/models/**',
  60. 'src/server/util/**',
  61. 'src/server/app.ts',
  62. 'src/server/repl.ts',
  63. 'src/server/middlewares/**',
  64. 'src/server/routes/*.js',
  65. 'src/server/routes/*.ts',
  66. 'src/server/routes/attachment/**',
  67. 'src/server/routes/apiv3/interfaces/**',
  68. 'src/server/routes/apiv3/pages/**',
  69. 'src/server/routes/apiv3/user/**',
  70. 'src/server/routes/apiv3/personal-setting/**',
  71. 'src/server/routes/apiv3/security-settings/**',
  72. 'src/server/routes/apiv3/app-settings/**',
  73. 'src/server/routes/apiv3/page/**',
  74. 'src/server/routes/apiv3/*.ts',
  75. 'src/server/service/*.ts',
  76. 'src/server/service/*.js',
  77. 'src/server/service/access-token/**',
  78. 'src/server/service/config-manager/**',
  79. 'src/server/service/page/**',
  80. 'src/server/service/page-listing/**',
  81. 'src/server/service/revision/**',
  82. 'src/server/service/s2s-messaging/**',
  83. 'src/server/service/search-delegator/**',
  84. 'src/server/service/search-reconnect-context/**',
  85. 'src/server/service/slack-command-handler/**',
  86. 'src/server/service/slack-event-handler/**',
  87. 'src/server/service/socket-io/**',
  88. 'src/server/service/system-events/**',
  89. 'src/server/service/user-notification/**',
  90. 'src/server/service/yjs/**',
  91. ],
  92. settings: {
  93. // resolve path aliases by eslint-import-resolver-typescript
  94. 'import/resolver': {
  95. typescript: {},
  96. },
  97. },
  98. rules: {
  99. 'space-before-function-paren': 'off',
  100. '@typescript-eslint/no-var-requires': 'off',
  101. // set 'warn' temporarily -- 2021.08.02 Yuki Takei
  102. '@typescript-eslint/no-use-before-define': ['warn'],
  103. '@typescript-eslint/no-this-alias': ['warn'],
  104. },
  105. overrides: [
  106. {
  107. // enable the rule specifically for JavaScript files
  108. files: ['*.js', '*.mjs', '*.jsx'],
  109. rules: {
  110. // set 'warn' temporarily -- 2023.08.14 Yuki Takei
  111. 'react/prop-types': 'warn',
  112. // set 'warn' temporarily -- 2023.08.14 Yuki Takei
  113. 'no-unused-vars': ['warn'],
  114. },
  115. },
  116. {
  117. // enable the rule specifically for TypeScript files
  118. files: ['*.ts', '*.mts', '*.tsx'],
  119. rules: {
  120. 'no-unused-vars': 'off',
  121. // set 'warn' temporarily -- 2023.08.14 Yuki Takei
  122. 'react/prop-types': 'warn',
  123. // set 'warn' temporarily -- 2022.07.25 Yuki Takei
  124. '@typescript-eslint/explicit-module-boundary-types': ['warn'],
  125. },
  126. },
  127. ],
  128. };