.eslintrc.json 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. {
  2. "extends": ["transloadit"],
  3. "env": {
  4. "es6": true,
  5. "jest": true,
  6. "node": true,
  7. // extra:
  8. "browser": true
  9. },
  10. "globals": {
  11. "window": true,
  12. "hexo": true
  13. },
  14. "plugins": [
  15. "@babel/eslint-plugin",
  16. "jest",
  17. "node",
  18. "prefer-import",
  19. "promise",
  20. "react",
  21. // extra:
  22. "compat",
  23. "jsdoc"
  24. ],
  25. "parser": "@babel/eslint-parser",
  26. "parserOptions": {
  27. "ecmaVersion": 2020,
  28. "ecmaFeatures": {
  29. "jsx": true
  30. }
  31. },
  32. "rules": {
  33. // transloadit rules we are actually ok with in the uppy repo
  34. ////////////////////////////////////////////////////////////
  35. "guard-for-in": ["off"],
  36. "import/extensions": ["off"],
  37. "strict": ["off"],
  38. "key-spacing": ["off"],
  39. // transloadit rules we would like to enforce in the future
  40. // but will require separate PRs to gradually get there
  41. // and so the meantime: just warn
  42. ////////////////////////////////////////////////////////////
  43. "array-callback-return": ["warn"],
  44. "block-scoped-var": ["warn"],
  45. "class-methods-use-this": ["warn"],
  46. "consistent-return": ["warn"],
  47. "default-case": ["warn"],
  48. "global-require": ["warn"],
  49. "implicit-arrow-linebreak": ["warn"],
  50. "import/no-dynamic-require": ["warn"],
  51. "import/no-unresolved": ["warn"],
  52. "import/order": ["warn"],
  53. "jsx-a11y/alt-text": ["warn"],
  54. "jsx-a11y/anchor-has-content": ["warn"],
  55. "jsx-a11y/click-events-have-key-events": ["warn"],
  56. "jsx-a11y/control-has-associated-label": ["warn"],
  57. "jsx-a11y/label-has-associated-control": ["warn"],
  58. "jsx-a11y/media-has-caption": ["warn"],
  59. "jsx-a11y/mouse-events-have-key-events": ["warn"],
  60. "jsx-a11y/no-interactive-element-to-noninteractive-role": ["warn"],
  61. "jsx-a11y/no-noninteractive-element-interactions": ["warn"],
  62. "jsx-a11y/no-static-element-interactions": ["warn"],
  63. "no-await-in-loop": ["warn"],
  64. "no-bitwise": ["warn"],
  65. "no-continue": ["warn"],
  66. "no-empty": ["warn"],
  67. "no-lonely-if": ["warn"],
  68. "no-mixed-operators": ["warn"],
  69. "no-nested-ternary": ["warn"],
  70. "no-param-reassign": ["warn"],
  71. "no-redeclare": ["warn"],
  72. "no-restricted-globals": ["warn"],
  73. "no-restricted-properties": ["warn"],
  74. "no-restricted-syntax": ["warn"],
  75. "no-return-assign": ["warn"],
  76. "no-shadow": ["warn"],
  77. "no-underscore-dangle": ["warn"],
  78. "no-unused-expressions": ["warn"],
  79. "no-unused-vars": ["warn"],
  80. "no-use-before-define": ["warn"],
  81. "no-useless-concat": ["warn"],
  82. "no-var": ["warn"],
  83. "node/handle-callback-err": ["warn"],
  84. "prefer-destructuring": ["warn"],
  85. "prefer-spread": ["warn"],
  86. "radix": ["warn"],
  87. "react/button-has-type": ["warn"],
  88. "react/destructuring-assignment": ["warn"],
  89. "react/forbid-prop-types": ["warn"],
  90. "react/jsx-props-no-spreading": ["warn"],
  91. "react/no-access-state-in-setstate": ["warn"],
  92. "react/no-array-index-key": ["warn"],
  93. "react/no-deprecated": ["warn"],
  94. "react/no-this-in-sfc": ["warn"],
  95. "react/no-will-update-set-state": ["warn"],
  96. "react/prefer-stateless-function": ["warn"],
  97. "react/sort-comp": ["warn"],
  98. "react/style-prop-object": ["warn"],
  99. "vars-on-top": ["warn"],
  100. "import/no-extraneous-dependencies": ["warn"],
  101. // compat
  102. ////////////////////////////////////////////////////////////
  103. "compat/compat": ["error"],
  104. // jsdoc
  105. ////////////////////////////////////////////////////////////
  106. "jsdoc/check-alignment": ["warn"],
  107. "jsdoc/check-examples": ["warn"],
  108. "jsdoc/check-param-names": ["warn"],
  109. "jsdoc/check-syntax": ["warn"],
  110. "jsdoc/check-tag-names": ["warn"],
  111. "jsdoc/check-types": ["warn"],
  112. "jsdoc/newline-after-description": ["warn"],
  113. "jsdoc/valid-types": ["warn"],
  114. "jsdoc/check-indentation": ["off"]
  115. },
  116. "settings": {
  117. "react": {
  118. "pragma": "h"
  119. },
  120. "jsdoc": {
  121. "mode": "typescript"
  122. },
  123. "polyfills": [
  124. "Promise",
  125. "fetch",
  126. "Object.assign",
  127. "document.querySelector"
  128. ]
  129. },
  130. "overrides": [
  131. {
  132. "files": [
  133. "*.test.js",
  134. "test/endtoend/*.js",
  135. "website/*.js",
  136. "bin/*.js"
  137. ],
  138. "rules": {
  139. "compat/compat": ["off"]
  140. }
  141. },
  142. {
  143. "files": [
  144. "packages/@uppy/locales/src/*.js",
  145. "packages/@uppy/locales/template.js"
  146. ],
  147. "rules": {
  148. "camelcase": ["off"],
  149. "quote-props": ["off"]
  150. }
  151. },
  152. {
  153. "files": [
  154. "website/themes/uppy/source/js/*.js"
  155. ],
  156. "rules": {
  157. "prefer-const": ["off"]
  158. }
  159. },
  160. { "files": ["bin/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"devDependencies": true}] } },
  161. { "files": ["packages/uppy/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/uppy/"}] } },
  162. { "files": ["packages/@uppy/aws-s3/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/aws-s3/"}] } },
  163. { "files": ["packages/@uppy/aws-s3-multipart/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/aws-s3-multipart/"}] } },
  164. { "files": ["packages/@uppy/box/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/box/"}] } },
  165. { "files": ["packages/@uppy/companion/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/companion/"}] } },
  166. { "files": ["packages/@uppy/companion-client/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/companion-client/"}] } },
  167. { "files": ["packages/@uppy/core/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/core/"}] } },
  168. { "files": ["packages/@uppy/dashboard/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/dashboard/"}] } },
  169. { "files": ["packages/@uppy/drag-drop/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/drag-drop/"}] } },
  170. { "files": ["packages/@uppy/dropbox/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/dropbox/"}] } },
  171. { "files": ["packages/@uppy/facebook/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/facebook/"}] } },
  172. { "files": ["packages/@uppy/file-input/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/file-input/"}] } },
  173. { "files": ["packages/@uppy/form/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/form/"}] } },
  174. { "files": ["packages/@uppy/golden-retriever/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/golden-retriever/"}] } },
  175. { "files": ["packages/@uppy/google-drive/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/google-drive/"}] } },
  176. { "files": ["packages/@uppy/image-editor/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/image-editor/"}] } },
  177. { "files": ["packages/@uppy/informer/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/informer/"}] } },
  178. { "files": ["packages/@uppy/instagram/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/instagram/"}] } },
  179. { "files": ["packages/@uppy/locales/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/locales/"}] } },
  180. { "files": ["packages/@uppy/onedrive/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/onedrive/"}] } },
  181. { "files": ["packages/@uppy/progress-bar/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/progress-bar/"}] } },
  182. { "files": ["packages/@uppy/provider-views/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/provider-views/"}] } },
  183. { "files": ["packages/@uppy/react/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/react/"}] } },
  184. { "files": ["packages/@uppy/react-native/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/react-native/"}] } },
  185. { "files": ["packages/@uppy/redux-dev-tools/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/redux-dev-tools/"}] } },
  186. { "files": ["packages/@uppy/robodog/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/robodog/"}] } },
  187. { "files": ["packages/@uppy/screen-capture/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/screen-capture/"}] } },
  188. { "files": ["packages/@uppy/status-bar/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/status-bar/"}] } },
  189. { "files": ["packages/@uppy/store-default/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/store-default/"}] } },
  190. { "files": ["packages/@uppy/store-redux/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/store-redux/"}] } },
  191. { "files": ["packages/@uppy/svelte/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/svelte/"}] } },
  192. { "files": ["packages/@uppy/thumbnail-generator/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/thumbnail-generator/"}] } },
  193. { "files": ["packages/@uppy/transloadit/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/transloadit/"}] } },
  194. { "files": ["packages/@uppy/tus/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/tus/"}] } },
  195. { "files": ["packages/@uppy/unsplash/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/unsplash/"}] } },
  196. { "files": ["packages/@uppy/url/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/url/"}] } },
  197. { "files": ["packages/@uppy/utils/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/utils/"}] } },
  198. { "files": ["packages/@uppy/vue/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/vue/"}] } },
  199. { "files": ["packages/@uppy/webcam/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/webcam/"}] } },
  200. { "files": ["packages/@uppy/xhr-upload/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/xhr-upload/"}] } },
  201. { "files": ["packages/@uppy/zoom/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/zoom/"}] } },
  202. { "files": ["examples/aws-companion/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/aws-companion/"}] } },
  203. { "files": ["examples/aws-presigned-url/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/aws-presigned-url/"}] } },
  204. { "files": ["examples/bundled/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/bundled/"}] } },
  205. { "files": ["examples/cdn-example/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/cdn-example/"}] } },
  206. { "files": ["examples/custom-provider/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/custom-provider/"}] } },
  207. { "files": ["examples/dev/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/dev/"}] } },
  208. { "files": ["examples/digitalocean-spaces/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/digitalocean-spaces/"}] } },
  209. { "files": ["examples/multiple-instances/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/multiple-instances/"}] } },
  210. { "files": ["examples/node-xhr/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/node-xhr/"}] } },
  211. { "files": ["examples/php-xhr/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/php-xhr/"}] } },
  212. { "files": ["examples/python-xhr/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/python-xhr/"}] } },
  213. { "files": ["examples/react-example/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/react-example/"}] } },
  214. { "files": ["examples/react-native-expo/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/react-native-expo/"}] } },
  215. { "files": ["examples/redux/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/redux/"}] } },
  216. { "files": ["examples/svelte-example/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/svelte-example/"}] } },
  217. { "files": ["examples/transloadit/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/transloadit/"}] } },
  218. { "files": ["examples/transloadit-textarea/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/transloadit-textarea/"}] } },
  219. { "files": ["examples/uppy-with-companion/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/uppy-with-companion/"}] } },
  220. { "files": ["examples/vue/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/vue/"}] } },
  221. { "files": ["examples/xhr-bundle/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/xhr-bundle/"}] } }
  222. ]
  223. }