Setup ESLint

This commit is contained in:
Albert Portnoy 2022-10-19 20:42:50 -05:00
parent 1436b120a0
commit 48a83e2078
No known key found for this signature in database
GPG key ID: D2EB0A9FB4A50380
3 changed files with 263 additions and 2 deletions

7
.editorconfig Normal file
View file

@ -0,0 +1,7 @@
root = true
[*]
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true

250
.eslintrc.json Normal file
View file

@ -0,0 +1,250 @@
{
"root": true,
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint", "react"],
"globals": {
"powercord": true,
"webpackChunkdiscord_app": true,
"DiscordNative": false,
"PowercordNative": false,
"GLOBAL_ENV": true,
"BigInt": false
},
"parserOptions": {
"ecmaVersion": 2021,
"sourceType": "script",
"ecmaFeatures": {
"jsx": true
},
"project": ["./tsconfig.json"]
},
"env": {
"node": true,
"es6": true,
"browser": true
},
"rules": {
"for-direction": [ "error" ],
"getter-return": [ "error" ],
"no-compare-neg-zero": [ "error" ],
"no-cond-assign": [ "error" ],
"no-constant-condition": [ "error" ],
"no-control-regex": [ "error" ],
"no-debugger": [ "error" ],
"no-dupe-args": [ "error" ],
"no-dupe-keys": [ "error" ],
"no-duplicate-case": [ "error" ],
"no-empty": [ "error", {
"allowEmptyCatch": true
}],
"no-empty-character-class": [ "error" ],
"no-extra-boolean-cast": [ "error" ],
"@typescript-eslint/no-extra-semi": [ "error" ],
"no-func-assign": [ "error" ],
"no-invalid-regexp": [ "error" ],
"no-irregular-whitespace": [ "error", {
"skipStrings": true,
"skipRegExps": true
}],
"no-obj-calls": [ "error" ],
"no-regex-spaces": [ "error" ],
"no-sparse-arrays": [ "error" ],
"no-template-curly-in-string": [ "error" ],
"no-unexpected-multiline": [ "error" ],
"no-unreachable": [ "error" ],
"no-unsafe-negation": [ "error" ],
"use-isnan": [ "error" ],
"valid-typeof": [ "error", {
"requireStringLiterals": true
}],
"accessor-pairs": [ "error" ],
"array-callback-return": [ "error", {
"allowImplicit": true
}],
"curly": [ "error", "all" ],
"dot-location": [ "error", "property" ],
"@typescript-eslint/dot-notation": [ "error" ],
"eqeqeq": [ "error", "always" ],
"no-caller": [ "error" ],
"no-case-declarations": [ "error" ],
"no-else-return": [ "error", {
"allowElseIf": true
}],
"@typescript-eslint/no-empty-function": [ "error" ],
"@typescript-eslint/no-non-null-assertion": "off",
"no-empty-pattern": [ "error" ],
"no-eq-null": [ "error" ],
"no-eval": [ "error" ],
"no-extend-native": [ "error" ],
"no-extra-bind": [ "error" ],
"no-extra-label": [ "error" ],
"no-fallthrough": [ "error" ],
"no-floating-decimal": [ "error" ],
"no-global-assign": [ "error" ],
"no-lone-blocks": [ "error" ],
"no-multi-spaces": [ "error", {
"exceptions": {
"Property": true,
"BinaryExpression": false,
"VariableDeclarator": true
}
}],
"no-multi-str": [ "error" ],
"no-new-func": [ "error" ],
"no-new-wrappers": [ "error" ],
"no-octal": [ "error" ],
"no-octal-escape": [ "error" ],
"@typescript-eslint/no-redeclare": [ "error", {
"builtinGlobals": true
}],
"no-return-await": [ "error" ],
"no-self-assign": [ "error", {
"props": true
}],
"no-self-compare": [ "error" ],
"no-sequences": [ "error" ],
"no-unmodified-loop-condition": [ "error" ],
"@typescript-eslint/no-unused-expressions": [ "error" ],
"no-unused-labels": [ "error" ],
"no-useless-call": [ "error" ],
"no-useless-concat": [ "error" ],
"no-useless-escape": [ "error" ],
"no-useless-return": [ "error" ],
"no-warning-comments": [ "warn" ],
"no-with": [ "error" ],
"prefer-promise-reject-errors": ["error", {
"allowEmptyReject": true
}],
"radix": [ "error", "as-needed" ],
"wrap-iife": [ "error" ],
"yoda": [ "error" ],
"no-delete-var": [ "error" ],
"no-shadow-restricted-names": [ "error" ],
"no-undef": [ "error" ],
"no-undef-init": [ "error" ],
"no-undefined": [ "error" ],
"@typescript-eslint/no-unused-vars": [ "error" ],
"@typescript-eslint/no-use-before-define": [ "error" ],
"callback-return": [ "error" ],
"handle-callback-err": [ "error" ],
"no-buffer-constructor": [ "error" ],
"@typescript-eslint/no-var-requires": [ "off" ],
"no-mixed-requires": [ "error" ],
"array-bracket-newline": [ "error", "consistent" ],
"array-bracket-spacing": [ "error", "always" ],
"block-spacing": [ "error", "always" ],
"@typescript-eslint/brace-style": [ "error", "1tbs" ],
"@typescript-eslint/comma-dangle": [ "error" ],
"@typescript-eslint/comma-spacing": [ "error", {
"before": false,
"after": true
}],
"comma-style": [ "error" ],
"computed-property-spacing": [ "error" ],
"consistent-this": [ "error", "_this" ],
"eol-last": [ "error", "always" ],
"@typescript-eslint/func-call-spacing": [ "error", "never" ],
"func-name-matching": [ "error", "always" ],
"@typescript-eslint/indent": [ "error", 2, {
"SwitchCase": 1
}],
"@typescript-eslint/keyword-spacing": [ "error" ],
"@typescript-eslint/lines-between-class-members": [ "error", "always", {
"exceptAfterSingleLine": true
}],
"max-statements-per-line": [ "error", {
"max": 2
}],
// "multiline-comment-style": [ "error" ],
"multiline-ternary": [ "error", "always-multiline" ],
"new-cap": [ "error", {
"newIsCap": true
}],
"new-parens": [ "error" ],
"@typescript-eslint/no-array-constructor": [ "error" ],
"no-mixed-operators": [ "error" ],
"no-mixed-spaces-and-tabs": [ "error" ],
"no-multiple-empty-lines": [ "error" ],
"no-new-object": [ "error" ],
"no-tabs": [ "error" ],
"no-trailing-spaces": [ "error" ],
"no-unneeded-ternary": [ "error" ],
"no-whitespace-before-property": [ "error" ],
"@typescript-eslint/object-curly-spacing": [ "error", "always" ],
"object-property-newline": [ "error" ],
"one-var-declaration-per-line": [ "error", "initializations" ],
"operator-assignment": [ "error", "always" ],
"operator-linebreak": [ "error", "after", {
"overrides": {
"?": "before",
":": "before"
}
}],
"padded-blocks": [ "error", "never" ],
"quote-props": [ "error", "as-needed" ],
"@typescript-eslint/quotes": [ "error", "single" ],
"@typescript-eslint/semi": [ "error", "always" ],
"semi-spacing": [ "error", {
"before": false,
"after": true
}],
"semi-style": [ "error", "last" ],
"@typescript-eslint/space-before-blocks": [ "error", "always" ],
"@typescript-eslint/space-before-function-paren": [ "error", "always" ],
"space-in-parens": [ "error", "never" ],
"@typescript-eslint/space-infix-ops": [ "error" ],
"space-unary-ops": [ "error", {
"words": true,
"nonwords": false
}],
"spaced-comment": [ "error", "always" ],
"switch-colon-spacing": [ "error", {
"before": false,
"after": true
}],
"template-tag-spacing": [ "error", "always" ],
"wrap-regex": [ "error" ],
"arrow-body-style": [ "error", "as-needed" ],
"arrow-spacing": [ "error", {
"before": true,
"after": true
}],
"constructor-super": [ "error" ],
"no-class-assign": [ "error" ],
"no-const-assign": [ "error" ],
"@typescript-eslint/no-dupe-class-members": [ "error" ],
"no-new-symbol": [ "error" ],
"no-this-before-super": [ "error" ],
"no-useless-computed-key": [ "error" ],
"@typescript-eslint/no-useless-constructor": [ "error" ],
"no-var": [ "error" ],
"object-shorthand": [ "error", "always" ],
"prefer-arrow-callback": [ "error" ],
"prefer-const": [ "error", {
"destructuring": "all"
}],
"prefer-destructuring": ["error", {
"VariableDeclarator": {
"array": false,
"object": true
},
"AssignmentExpression": {
"array": true,
"object": true
}
}, {
"enforceForRenamedProperties": false
}],
"prefer-numeric-literals": [ "error" ],
"prefer-rest-params": [ "error" ],
"prefer-spread": [ "error" ],
"prefer-template": [ "error" ],
"rest-spread-spacing": [ "error", "never" ],
"symbol-description": [ "error" ],
"template-curly-spacing": [ "error", "never" ],
"react/jsx-uses-react": "error",
"react/jsx-uses-vars": 1,
"linebreak-style": ["error", "unix"]
}
}

View file

@ -13,9 +13,13 @@
"devDependencies": {
"@electron/asar": "^3.2.1",
"@types/node": "^18.11.2",
"@typescript-eslint/eslint-plugin": "^5.40.1",
"@typescript-eslint/parser": "^5.40.1",
"esbuild": "^0.15.11",
"eslint": "^8.25.0",
"eslint-plugin-react": "^7.31.10",
"replugged": "replugged-org/replugged#rewrite",
"tsx": "^3.10.3",
"typescript": "^4.8.4",
"replugged": "replugged-org/replugged#rewrite"
"typescript": "^4.8.4"
}
}