179 lines
6.4 KiB
JSON
179 lines
6.4 KiB
JSON
{
|
|
"root": true,
|
|
"ignorePatterns": ["projects/**/*"],
|
|
"plugins": ["import", "prettier", "@stylistic/eslint-plugin-ts"],
|
|
"overrides": [
|
|
{
|
|
"files": ["*.ts"],
|
|
"extends": [
|
|
"eslint:recommended",
|
|
"plugin:@typescript-eslint/recommended",
|
|
"plugin:@angular-eslint/recommended",
|
|
"plugin:@angular-eslint/template/process-inline-templates",
|
|
"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" }
|
|
]
|
|
}
|
|
],
|
|
// Docs for line padding => https://eslint.style/rules/js/padding-line-between-statements
|
|
"@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-var": ["error"],
|
|
"prettier/prettier": ["error", { "printWidth": 80 }],
|
|
"@angular-eslint/directive-selector": [
|
|
"error",
|
|
{
|
|
"type": "attribute",
|
|
"prefix": "app",
|
|
"style": "camelCase"
|
|
}
|
|
],
|
|
"@angular-eslint/component-selector": [
|
|
"error",
|
|
{
|
|
"type": "element",
|
|
"prefix": "app",
|
|
"style": "kebab-case"
|
|
}
|
|
],
|
|
"@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"
|
|
]
|
|
}
|
|
],
|
|
"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": ["*.html"],
|
|
"extends": [
|
|
"plugin:@angular-eslint/template/recommended",
|
|
"plugin:@angular-eslint/template/accessibility"
|
|
],
|
|
"rules": {
|
|
"@angular-eslint/template/elements-content": [
|
|
"error",
|
|
{
|
|
"allowList": ["label"]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|