From db5dea94be89c8f30ab69a2896f269fed2cae3a4 Mon Sep 17 00:00:00 2001 From: Mattia Formichetti Date: Tue, 27 Aug 2024 14:52:23 +0200 Subject: [PATCH] Update ESLint Configuration Following https://eslint.org/docs/latest/use/migrate-to-9.0.0 --- .eslintrc.json | 69 ------------------------- eslint.config.mjs | 127 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 3 files changed, 128 insertions(+), 70 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index fb0e152..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "ignorePatterns": ["dist", "node_modules"], - "plugins": [ - "@typescript-eslint", - "license-header", - "simple-import-sort", - "unused-imports", - "path-alias", - "prettier" - ], - "settings": { - "import/resolver": { - "alias": { - "map": [] - } - } - }, - "rules": { - "license-header/header": ["error", "scripts/header.txt"], - "eqeqeq": ["error", "always", { "null": "ignore" }], - "spaced-comment": ["error", "always", { "markers": ["!"] }], - "yoda": "error", - "prefer-destructuring": [ - "error", - { - "VariableDeclarator": { "array": false, "object": true }, - "AssignmentExpression": { "array": false, "object": false } - } - ], - "operator-assignment": ["error", "always"], - "no-useless-computed-key": "error", - "no-unneeded-ternary": ["error", { "defaultAssignment": false }], - "no-invalid-regexp": "error", - "no-constant-condition": ["error", { "checkLoops": false }], - "no-duplicate-imports": "error", - "no-extra-semi": "error", - "dot-notation": "error", - "no-useless-escape": "error", - "no-fallthrough": "error", - "for-direction": "error", - "no-async-promise-executor": "error", - "no-cond-assign": "error", - "no-dupe-else-if": "error", - "no-duplicate-case": "error", - "no-irregular-whitespace": "error", - "no-loss-of-precision": "error", - "no-misleading-character-class": "error", - "no-prototype-builtins": "error", - "no-regex-spaces": "error", - "no-shadow-restricted-names": "error", - "no-unexpected-multiline": "error", - "no-unsafe-optional-chaining": "error", - "no-useless-backreference": "error", - "use-isnan": "error", - "prefer-const": "error", - "prefer-spread": "error", - - "simple-import-sort/imports": "error", - "simple-import-sort/exports": "error", - - "unused-imports/no-unused-imports": "error", - - "path-alias/no-relative": "error", - - "prettier/prettier": "error" - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..e1b80bc --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,127 @@ +/* + * SPDX-License-Identifier: GPL-3.0 + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + */ + +import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import licenseHeader from "eslint-plugin-license-header"; +import pathAlias from "eslint-plugin-path-alias"; +import prettier from "eslint-plugin-prettier"; +import simpleImportSort from "eslint-plugin-simple-import-sort"; +import unusedImports from "eslint-plugin-unused-imports"; + +export default [ + { + ignores: ["**/dist", "**/node_modules"] + }, + { + files: ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx", "**/*.mts", "**/*.mjs"], + + plugins: { + "@typescript-eslint": typescriptEslint, + "license-header": licenseHeader, + "simple-import-sort": simpleImportSort, + "unused-imports": unusedImports, + "path-alias": pathAlias, + prettier + }, + + languageOptions: { + parser: tsParser + }, + + settings: { + "import/resolver": { + alias: { + map: [] + } + } + }, + + rules: { + "license-header/header": ["error", "scripts/header.txt"], + + eqeqeq: [ + "error", + "always", + { + null: "ignore" + } + ], + + "spaced-comment": [ + "error", + "always", + { + markers: ["!"] + } + ], + + yoda: "error", + + "prefer-destructuring": [ + "error", + { + VariableDeclarator: { + array: false, + object: true + }, + + AssignmentExpression: { + array: false, + object: false + } + } + ], + + "operator-assignment": ["error", "always"], + "no-useless-computed-key": "error", + + "no-unneeded-ternary": [ + "error", + { + defaultAssignment: false + } + ], + + "no-invalid-regexp": "error", + + "no-constant-condition": [ + "error", + { + checkLoops: false + } + ], + + "no-duplicate-imports": "error", + "no-extra-semi": "error", + "dot-notation": "error", + "no-useless-escape": "error", + "no-fallthrough": "error", + "for-direction": "error", + "no-async-promise-executor": "error", + "no-cond-assign": "error", + "no-dupe-else-if": "error", + "no-duplicate-case": "error", + "no-irregular-whitespace": "error", + "no-loss-of-precision": "error", + "no-misleading-character-class": "error", + "no-prototype-builtins": "error", + "no-regex-spaces": "error", + "no-shadow-restricted-names": "error", + "no-unexpected-multiline": "error", + "no-unsafe-optional-chaining": "error", + "no-useless-backreference": "error", + "use-isnan": "error", + "prefer-const": "error", + "prefer-spread": "error", + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error", + "unused-imports/no-unused-imports": "error", + "path-alias/no-relative": "error", + "prettier/prettier": "error" + } + } +]; diff --git a/package.json b/package.json index 10b2234..5bcbc9a 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build:dev": "pnpm build --dev", "package": "pnpm build && electron-builder", "package:dir": "pnpm build && electron-builder --dir", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx,.mts,.mjs", + "lint": "eslint .", "lint:fix": "pnpm lint --fix", "start": "pnpm build && electron .", "start:dev": "pnpm build:dev && electron .",