eslint.config.mjs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import globals from "globals";
  2. import path from "node:path";
  3. import { fileURLToPath } from "node:url";
  4. import js from "@eslint/js";
  5. import { FlatCompat } from "@eslint/eslintrc";
  6. const __filename = fileURLToPath(import.meta.url);
  7. const __dirname = path.dirname(__filename);
  8. const compat = new FlatCompat({
  9. baseDirectory: __dirname,
  10. recommendedConfig: js.configs.recommended,
  11. allConfig: js.configs.all
  12. });
  13. export default [...compat.extends("eslint:recommended"), {
  14. languageOptions: {
  15. globals: {
  16. ...globals.browser,
  17. ...globals.node,
  18. },
  19. ecmaVersion: 12,
  20. sourceType: "commonjs",
  21. },
  22. rules: {
  23. indent: ["error", 2],
  24. "keyword-spacing": ["error", {
  25. before: true,
  26. after: true,
  27. }],
  28. "no-trailing-spaces": 2,
  29. "space-before-function-paren": ["error", "always"],
  30. "space-infix-ops": "error",
  31. "comma-spacing": ["error", {
  32. before: false,
  33. after: true,
  34. }],
  35. "brace-style": ["error", "1tbs", {
  36. allowSingleLine: true,
  37. }],
  38. curly: ["error", "multi-line"],
  39. "block-spacing": ["error", "always"],
  40. "dot-location": ["error", "property"],
  41. "key-spacing": ["error", {
  42. beforeColon: false,
  43. afterColon: true,
  44. }],
  45. "spaced-comment": ["error", "always", {
  46. line: {
  47. markers: ["*package", "!", "/", ",", "="],
  48. },
  49. block: {
  50. balanced: true,
  51. markers: ["*package", "!", ",", ":", "::", "flow-include"],
  52. exceptions: ["*"],
  53. },
  54. }],
  55. },
  56. }];