diff --git a/eslint.config.mjs b/eslint.config.mjs index 6071e42a..f6eea5dc 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,67 +1,71 @@ //@ts-check import eslint from '@eslint/js'; -import tseslint from 'typescript-eslint'; -import stylistic from "@stylistic/eslint-plugin-js" -import * as importPlugin from "eslint-plugin-import" +import prettier from 'eslint-plugin-prettier/recommended'; +import stylistic from '@stylistic/eslint-plugin-js'; +import tsEslint from 'typescript-eslint'; -export default tseslint.config( +import * as importPlugin from 'eslint-plugin-import'; + +export default tsEslint.config( eslint.configs.recommended, - tseslint.configs.eslintRecommended, - ...tseslint.configs.recommendedTypeChecked, - { ignores: ["dist", "node_modules", "*.config.*js"] }, + tsEslint.configs.eslintRecommended, + ...tsEslint.configs.recommendedTypeChecked, + prettier, + { ignores: ['dist', 'node_modules', '*.config.*js'] }, { plugins: { stylistic, importPlugin }, languageOptions: { - parser: tseslint.parser, + parser: tsEslint.parser, parserOptions: { project: true, - sourceType: "module", - ecmaVersion: "latest" + sourceType: 'module', + ecmaVersion: 'latest' } }, rules: { - "stylistic/arrow-parens": ["error", "always"], - "stylistic/object-curly-spacing": ["error", "always"], - "@typescript-eslint/no-floating-promises": "off", - "@typescript-eslint/no-misused-promises": ["off", { checksVoidReturn: false }], + 'stylistic/arrow-parens': ['error', 'always'], + 'stylistic/object-curly-spacing': ['error', 'always'], + 'prettier/prettier': ['error', { singleQuote: true, semi: true, tabWidth: 2, trailingComma: 'all', quoteProps: 'preserve' }], + '@typescript-eslint/no-floating-promises': 'off', + '@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }], '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], - "@typescript-eslint/no-non-null-assertion": "off", - "importPlugin/first": "error", - "importPlugin/newline-after-import": "off", - "importPlugin/no-default-export": "off", - "importPlugin/no-duplicates": "error", - "importPlugin/no-unresolved": ["error", { ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'] }], - "importPlugin/order": ["error", { + '@typescript-eslint/no-non-null-assertion': 'off', + 'importPlugin/first': 'error', + 'importPlugin/newline-after-import': 'off', + 'importPlugin/no-default-export': 'off', + 'importPlugin/no-duplicates': 'error', + 'importPlugin/no-unresolved': ['error', { ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'] }], + 'importPlugin/order': ['error', { 'groups': ['builtin', 'external', ['internal', 'index', 'sibling'], 'parent', 'type'], 'newlines-between': 'always-and-inside-groups', 'alphabetize': { order: 'ignore', caseInsensitive: false } }], - "importPlugin/prefer-default-export": "off", - "camelcase": ["error", { properties: "never" }], - "class-methods-use-this": "off", - "stylistic/lines-around-comment": ["error", { + 'importPlugin/prefer-default-export': 'off', + 'camelcase': ['error', { properties: 'never' }], + 'class-methods-use-this': 'off', + 'stylistic/lines-around-comment': ['error', { beforeBlockComment: false, afterBlockComment: false, beforeLineComment: false, afterLineComment: false, }], - "stylistic/max-len": "off", - "stylistic/no-mixed-operators": "error", - "stylistic/no-multi-spaces": ["error", { ignoreEOLComments: true }], - "stylistic/no-tabs": "error", - "no-void": "error", - "no-empty": "off", - "prefer-promise-reject-errors": "off", - "stylistic/quotes": ["error", "single", { + 'stylistic/max-len': 'off', + 'stylistic/no-mixed-operators': 'error', + 'stylistic/no-multi-spaces': ['error', { ignoreEOLComments: true }], + 'stylistic/no-tabs': 'error', + 'no-void': 'error', + 'no-empty': 'off', + 'prefer-promise-reject-errors': 'off', + 'stylistic/quotes': ['error', 'single', { avoidEscape: true, allowTemplateLiterals: false, }], - "stylistic/quote-props": ["error", "consistent"], - "stylistic/semi": ["error", "always"], + 'stylistic/quote-props': ['error', 'consistent'], + 'stylistic/semi': ['error', 'always'], }, settings: { 'import/parsers': { diff --git a/package.json b/package.json index c6e07723..2784d9f8 100644 --- a/package.json +++ b/package.json @@ -229,9 +229,11 @@ "electron-vite": "2.3.0", "esbuild": "0.24.0", "eslint": "9.12.0", + "eslint-config-prettier": "9.1.0", "eslint-import-resolver-exports": "1.0.0-beta.5", "eslint-import-resolver-typescript": "3.6.3", "eslint-plugin-import": "2.31.0", + "eslint-plugin-prettier": "5.2.1", "glob": "11.0.0", "node-gyp": "10.2.0", "playwright": "1.48.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19206ad0..98bbbf6d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -235,6 +235,9 @@ importers: eslint: specifier: 9.12.0 version: 9.12.0 + eslint-config-prettier: + specifier: 9.1.0 + version: 9.1.0(eslint@9.12.0) eslint-import-resolver-exports: specifier: 1.0.0-beta.5 version: 1.0.0-beta.5(eslint-plugin-import@2.31.0)(eslint@9.12.0) @@ -244,6 +247,9 @@ importers: eslint-plugin-import: specifier: 2.31.0 version: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0) + eslint-plugin-prettier: + specifier: 5.2.1 + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.3.3) glob: specifier: 11.0.0 version: 11.0.0 @@ -908,6 +914,10 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@playwright/test@1.48.0': resolution: {integrity: sha512-W5lhqPUVPqhtc/ySvZI5Q8X2ztBOUgZ8LbAFy0JQgrXZs2xaILrUcNO3rQjwbLPfGK13+rZsDa1FpG+tqYkT5w==} engines: {node: '>=18'} @@ -4582,6 +4592,8 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@pkgr/core@0.1.1': {} + '@playwright/test@1.48.0': dependencies: playwright: 1.48.0