103 lines
3.3 KiB
JavaScript
103 lines
3.3 KiB
JavaScript
|
/*
|
||
|
* 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
|
||
|
*/
|
||
|
|
||
|
//@ts-check
|
||
|
|
||
|
import stylistic from "@stylistic/eslint-plugin";
|
||
|
import pathAlias from "eslint-plugin-path-alias";
|
||
|
import header from "eslint-plugin-simple-header";
|
||
|
import importSort from "eslint-plugin-simple-import-sort";
|
||
|
import unusedImports from "eslint-plugin-unused-imports";
|
||
|
import tseslint from "typescript-eslint";
|
||
|
import prettier from "eslint-plugin-prettier";
|
||
|
|
||
|
export default tseslint.config(
|
||
|
{ ignores: ["dist"] },
|
||
|
|
||
|
{
|
||
|
files: ["src/**/*.{tsx,ts,mts,mjs,js,jsx}"],
|
||
|
plugins: {
|
||
|
header,
|
||
|
stylistic,
|
||
|
importSort,
|
||
|
unusedImports,
|
||
|
pathAlias,
|
||
|
prettier
|
||
|
},
|
||
|
settings: {
|
||
|
"import/resolver": {
|
||
|
alias: {
|
||
|
map: []
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
languageOptions: {
|
||
|
parser: tseslint.parser,
|
||
|
parserOptions: {
|
||
|
project: true,
|
||
|
tsconfigRootDir: import.meta.dirname
|
||
|
}
|
||
|
},
|
||
|
rules: {
|
||
|
"header/header": [
|
||
|
"error",
|
||
|
{
|
||
|
files: ["scripts/header.txt"]
|
||
|
}
|
||
|
],
|
||
|
|
||
|
// ESLint Rules
|
||
|
|
||
|
yoda: "error",
|
||
|
eqeqeq: ["error", "always", { null: "ignore" }],
|
||
|
"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",
|
||
|
"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",
|
||
|
|
||
|
// Styling Rules
|
||
|
"stylistic/spaced-comment": ["error", "always", { markers: ["!"] }],
|
||
|
"stylistic/no-extra-semi": "error",
|
||
|
|
||
|
// Plugin Rules
|
||
|
"importSort/imports": "error",
|
||
|
"importSort/exports": "error",
|
||
|
"unusedImports/no-unused-imports": "error",
|
||
|
"pathAlias/no-relative": "error",
|
||
|
"prettier/prettier": "error"
|
||
|
}
|
||
|
}
|
||
|
);
|