e8b47bf733
The built-in ESLint import settings will lint the imports, but not fix them, as that's concidered stylistic. The ESLint Stylistic package doesn't currently support sorting. We have to use the ESLint Import plugin to force import sorting. This Import plugin doesn't yet support the new ESLint flat-configuration file format so we've had to convert back to the old no-flat format.
114 lines
4.0 KiB
JSON
114 lines
4.0 KiB
JSON
{
|
|
"extends": [
|
|
"plugin:@typescript-eslint/recommended",
|
|
"plugin:@stylistic/recommended-extends",
|
|
"plugin:import/recommended",
|
|
"plugin:import/typescript"
|
|
],
|
|
"plugins": [
|
|
"@typescript-eslint",
|
|
"@stylistic",
|
|
"import"
|
|
],
|
|
"settings": {
|
|
"import/resolver": {
|
|
"typescript": {
|
|
"project": "tsconfig.json"
|
|
},
|
|
"node": {
|
|
"extensions": [".ts", ".mjs"]
|
|
}
|
|
}
|
|
},
|
|
"rules": {
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"@typescript-eslint/no-dynamic-delete": "off",
|
|
"@typescript-eslint/no-unused-vars": "off",
|
|
"@typescript-eslint/no-empty-interface": "off",
|
|
"@typescript-eslint/no-var-requires": "error",
|
|
"@typescript-eslint/explicit-module-boundary-types": ["error", {
|
|
"allowArgumentsExplicitlyTypedAsAny": true
|
|
}],
|
|
"@typescript-eslint/naming-convention": ["error", {
|
|
"selector": "default",
|
|
"format": ["camelCase"],
|
|
"leadingUnderscore": "allow"
|
|
}, {
|
|
"selector": "typeLike",
|
|
"format": ["PascalCase"]
|
|
}, {
|
|
"selector": "objectLiteralProperty",
|
|
"format": ["PascalCase", "camelCase", "snake_case"],
|
|
"leadingUnderscore": "allow"
|
|
}, {
|
|
"selector": "typeProperty",
|
|
"format": ["PascalCase", "camelCase"],
|
|
"leadingUnderscore": "allow"
|
|
}, {
|
|
"selector": "enumMember",
|
|
"format": ["UPPER_CASE"]
|
|
}, {
|
|
"selector": "property",
|
|
"modifiers": ["readonly", "static"],
|
|
"format": ["UPPER_CASE"]
|
|
}],
|
|
"@stylistic/indent": ["error", 4, { "MemberExpression": 1, "SwitchCase": 1 }],
|
|
"@stylistic/brace-style": ["error", "allman", { "allowSingleLine": false }],
|
|
"@stylistic/semi": ["error", "always"],
|
|
"@stylistic/quotes": ["error", "double", { "avoidEscape": true }],
|
|
"@stylistic/linebreak-style": ["error", "unix"],
|
|
"@stylistic/max-len": ["error", {
|
|
"code": 120,
|
|
"tabWidth": 4,
|
|
"ignoreComments": true,
|
|
"ignoreTrailingComments": true,
|
|
"ignoreUrls": true,
|
|
"ignoreStrings": true,
|
|
"ignoreTemplateLiterals": true,
|
|
"ignoreRegExpLiterals": true
|
|
}],
|
|
"@stylistic/multiline-ternary": ["error", "always-multiline"],
|
|
"@stylistic/no-extra-parens": ["error", "all"],
|
|
"@stylistic/new-parens": "error",
|
|
"@stylistic/newline-per-chained-call": ["error", { "ignoreChainWithDepth": 3 }],
|
|
"@stylistic/no-extra-semi": "error",
|
|
"@stylistic/no-floating-decimal": "error",
|
|
"@stylistic/no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1 }],
|
|
"@stylistic/switch-colon-spacing": "error",
|
|
"@stylistic/type-annotation-spacing": "error",
|
|
"@stylistic/type-generic-spacing": ["error"],
|
|
"@stylistic/type-named-tuple-spacing": ["error"],
|
|
"@stylistic/wrap-regex": "error",
|
|
"@stylistic/yield-star-spacing": ["error", "both"],
|
|
"import/order": ["error", {
|
|
"groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
|
|
"pathGroups": [
|
|
{
|
|
"pattern": "tsyringe",
|
|
"group": "builtin",
|
|
"position": "before"
|
|
}
|
|
],
|
|
"newlines-between": "never",
|
|
"alphabetize": {
|
|
"order": "asc",
|
|
"caseInsensitive": true
|
|
}
|
|
}]
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["src/di/**/*.ts"],
|
|
"rules": {
|
|
"@typescript-eslint/no-extraneous-class": "off"
|
|
}
|
|
},
|
|
{
|
|
"files": ["src/loaders/**/*.ts"],
|
|
"rules": {
|
|
"@typescript-eslint/no-var-requires": "off"
|
|
}
|
|
}
|
|
]
|
|
}
|