211 lines
7.9 KiB
Plaintext
211 lines
7.9 KiB
Plaintext
{
|
|
"root": true,
|
|
"plugins": ["import", "prettier", "@stylistic/eslint-plugin-ts", "@stylistic/eslint-plugin", "sort-class-members", "unused-imports"],
|
|
"overrides": [
|
|
{
|
|
"files": ["*.ts"],
|
|
"extends": [
|
|
"eslint:recommended",
|
|
"plugin:@typescript-eslint/recommended",
|
|
"prettier",
|
|
"plugin:prettier/recommended"
|
|
],
|
|
"rules": {
|
|
"@stylistic/ts/lines-between-class-members": [
|
|
"error",
|
|
{
|
|
"enforce": [
|
|
{ "blankLine": "always", "prev": "*", "next": "method" },
|
|
{ "blankLine": "always", "prev": "method", "next": "*" },
|
|
{ "blankLine": "never", "prev": "field", "next": "field" }
|
|
]
|
|
}
|
|
],
|
|
"@stylistic/ts/block-spacing": ["error"],
|
|
"@stylistic/ts/brace-style": "off",
|
|
"@stylistic/ts/key-spacing": ["error", { "afterColon": true }],
|
|
"@stylistic/ts/keyword-spacing": ["error", { "before": true }],
|
|
"@stylistic/ts/no-extra-parens": ["error", "all", {
|
|
"nestedBinaryExpressions": false,
|
|
"ternaryOperandBinaryExpressions": false
|
|
}],
|
|
"@stylistic/ts/no-extra-semi": ["error"],
|
|
"@stylistic/ts/object-curly-spacing": ["error", "always"],
|
|
"@stylistic/ts/quotes": ["error", "single"],
|
|
"@stylistic/ts/semi": ["error", "always"],
|
|
"@stylistic/ts/space-before-blocks": ["error"],
|
|
"@stylistic/ts/space-before-function-paren": ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}],
|
|
"@stylistic/ts/space-infix-ops": ["error"],
|
|
// "@stylistic/ts/max-statements-per-line": ["error", { "max": 1 }],
|
|
// "@stylistic/ts/multiline-ternary": ["error", "always"],
|
|
// "@stylistic/ts/newline-per-chained-call": ["error", { "ignoreChainWithDepth": 2 }],
|
|
// "@stylistic/ts/no-confusing-arrow": ["error"],
|
|
// "@stylistic/ts/no-floating-decimal": ["error"],
|
|
// "@stylistic/ts/no-mixed-operators": ["error"],
|
|
// "@stylistic/ts/no-mixed-spaces-and-tabs": ["error"],/
|
|
// "@stylistic/ts/no-multi-spaces": ["error"],
|
|
// "@stylistic/ts/no-multiple-empty-lines": ["error", { "max": 2 }],
|
|
// "@stylistic/ts/no-tabs": ["error", { "allowIndentationTabs": true }],
|
|
// "@stylistic/ts/no-whitespace-before-property": ["error"],
|
|
// "@stylistic/ts/nonblock-statement-body-position": ["error", "below"],
|
|
// "@stylistic/ts/object-curly-newline": ["error", "always"],
|
|
// "@stylistic/ts/object-property-newline": ["error"],
|
|
// "@stylistic/ts/one-var-declaration-per-line": ["error", "always"],
|
|
// "@stylistic/ts/operator-linebreak": ["error", "before"],
|
|
// "@stylistic/ts/padded-blocks": ["error", "never"],
|
|
// "@stylistic/ts/rest-spread-spacing": ["error", "never"],
|
|
// "@stylistic/ts/semi-spacing": ["error"],
|
|
// "@stylistic/ts/semi-style": ["error", "last"],
|
|
// "@stylistic/ts/space-in-parens": ["error", "never"],
|
|
// "@stylistic/ts/space-unary-ops": ["error"],
|
|
// "@stylistic/ts/template-curly-spacing": ["error"],
|
|
// "@stylistic/ts/template-tag-spacing": ["error"],
|
|
// "@stylistic/ts/wrap-regex": ["error"],
|
|
"no-console": ["warn", { "allow": ["warn", "error"] }],
|
|
"no-debugger": "error",
|
|
"no-var": ["error"],
|
|
"eqeqeq": ["error", "always"],
|
|
"no-eval": "error",
|
|
"prefer-const": ["error", { "destructuring": "all", "ignoreReadBeforeAssign": true }],
|
|
"prettier/prettier": ["error", { "printWidth": 80 }],
|
|
"no-unused-vars": "off",
|
|
"unused-imports/no-unused-imports": "error",
|
|
"unused-imports/no-unused-vars": [
|
|
"warn",
|
|
{
|
|
"vars": "all",
|
|
"varsIgnorePattern": "^_",
|
|
"args": "after-used",
|
|
"argsIgnorePattern": "^_"
|
|
}
|
|
],
|
|
"@typescript-eslint/explicit-member-accessibility": [
|
|
"error",
|
|
{
|
|
"accessibility": "explicit"
|
|
}
|
|
],
|
|
"@typescript-eslint/explicit-function-return-type": [
|
|
"error",
|
|
{
|
|
"allowExpressions": false,
|
|
"allowTypedFunctionExpressions": true,
|
|
"allowHigherOrderFunctions": false,
|
|
"allowDirectConstAssertionInArrowFunctions": false,
|
|
"allowConciseArrowFunctionExpressionsStartingWithVoid": false
|
|
}
|
|
],
|
|
"@typescript-eslint/member-ordering": [
|
|
"error",
|
|
{
|
|
"default": [
|
|
"public-static-field",
|
|
"protected-static-field",
|
|
"private-static-field",
|
|
"public-instance-field",
|
|
"protected-instance-field",
|
|
"private-instance-field",
|
|
"public-constructor",
|
|
"protected-constructor",
|
|
"private-constructor",
|
|
"public-static-method",
|
|
"protected-static-method",
|
|
"private-static-method",
|
|
"public-instance-method",
|
|
"protected-instance-method",
|
|
"private-instance-method"
|
|
]
|
|
}
|
|
],
|
|
// https://github.com/bryanrsmith/eslint-plugin-sort-class-members -> Read Docs and replace @typescript-eslint/member-ordering
|
|
// "sort-class-members/sort-class-members": [
|
|
// 2,
|
|
// {
|
|
// "order": [
|
|
// "[public-properties]",
|
|
// "[protected-properties]",
|
|
// "[private-properties]",
|
|
// "everything-else"
|
|
// ],
|
|
// "groups": {
|
|
// "public-properties": [{ "type": "property", "accessibility": "public" }],
|
|
// "protected-properties": [{ "type": "property", "accessibility": "protected" }],
|
|
// "private-properties": [{ "type": "property", "accessibility": "private" }]
|
|
// }
|
|
// }
|
|
// ],
|
|
"padding-line-between-statements": [
|
|
"error",
|
|
{ "blankLine": "always", "prev": "const", "next": "*" },
|
|
{ "blankLine": "always", "prev": "let", "next": "*" },
|
|
{ "blankLine": "always", "prev": "var", "next": "*" },
|
|
{ "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"] }
|
|
],
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{
|
|
"vars": "all",
|
|
"args": "after-used",
|
|
"ignoreRestSiblings": false
|
|
}
|
|
],
|
|
"@typescript-eslint/typedef": [
|
|
"error",
|
|
{
|
|
"arrayDestructuring": true,
|
|
"arrowParameter": false,
|
|
"memberVariableDeclaration": true,
|
|
"objectDestructuring": true,
|
|
"parameter": true,
|
|
"propertyDeclaration": true,
|
|
"variableDeclaration": false,
|
|
"variableDeclarationIgnoreFunction": true
|
|
}
|
|
],
|
|
"import/order": [
|
|
"error",
|
|
{
|
|
"groups": [
|
|
"builtin",
|
|
"external",
|
|
"internal",
|
|
"parent",
|
|
"sibling",
|
|
"index"
|
|
],
|
|
"pathGroups": [
|
|
{
|
|
"pattern": "@angular/**",
|
|
"group": "external",
|
|
"position": "before"
|
|
},
|
|
{
|
|
"pattern": "@app/**",
|
|
"group": "internal",
|
|
"position": "before"
|
|
},
|
|
{
|
|
"pattern": "@env/**",
|
|
"group": "internal",
|
|
"position": "before"
|
|
}
|
|
],
|
|
"pathGroupsExcludedImportTypes": ["builtin"],
|
|
"newlines-between": "always",
|
|
"alphabetize": {
|
|
"order": "asc",
|
|
"caseInsensitive": true
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"files": ["*.dto.ts", "*.entity.ts"],
|
|
"rules": {
|
|
"@stylistic/ts/lines-between-class-members": "off"
|
|
}
|
|
}
|
|
]
|
|
}
|