webapp/.eslintrc.cjs

107 lines
2.8 KiB
JavaScript
Raw Normal View History

2022-09-09 11:53:35 +00:00
module.exports = {
plugins: ["@typescript-eslint", "import", "sonarjs", "unicorn", "promise", "solid", "jest"],
2022-09-09 11:53:35 +00:00
extends: [
"eslint:recommended",
"plugin:import/recommended",
"plugin:import/typescript",
"prettier",
"plugin:sonarjs/recommended",
"plugin:unicorn/recommended",
"plugin:promise/recommended",
"plugin:solid/recommended",
"plugin:jest/recommended"
2022-09-09 11:53:35 +00:00
],
overrides: [
{
files: ["**/*.ts", "**/*.tsx"],
parser: "@typescript-eslint/parser",
2022-09-09 11:53:35 +00:00
parserOptions: {
ecmaVersion: 2021,
ecmaFeatures: { jsx: true },
sourceType: "module",
project: "./tsconfig.json"
2022-09-09 11:53:35 +00:00
},
extends: [
"plugin:@typescript-eslint/recommended"
2022-09-09 11:53:35 +00:00
// Maybe one day...
// 'plugin:@typescript-eslint/recommended-requiring-type-checking'
],
rules: {
"@typescript-eslint/no-unused-vars": [
"warn",
2022-09-22 09:37:49 +00:00
{
argsIgnorePattern: "^_"
2022-09-22 09:37:49 +00:00
}
],
"@typescript-eslint/no-non-null-assertion": "error",
// TODO: Remove any usage and enable
"@typescript-eslint/no-explicit-any": "off"
2022-09-09 11:53:35 +00:00
}
}
],
env: {
browser: true,
node: true,
mocha: true
},
globals: {},
rules: {
2022-11-25 08:19:04 +00:00
// Solid
"solid/reactivity": "off", // FIXME
"solid/no-innerhtml": "off",
2022-09-09 11:53:35 +00:00
/** Unicorn **/
"unicorn/no-null": "off",
"unicorn/filename-case": "off",
"unicorn/no-array-for-each": "off",
"unicorn/no-array-reduce": "off",
"unicorn/prefer-string-replace-all": "warn",
"unicorn/prevent-abbreviations": "off",
"unicorn/prefer-module": "off",
"unicorn/import-style": "off",
"unicorn/numeric-separators-style": "off",
"unicorn/prefer-node-protocol": "off",
"unicorn/prefer-dom-node-append": "off", // FIXME
"unicorn/prefer-top-level-await": "warn",
"unicorn/consistent-function-scoping": "warn",
"unicorn/no-array-callback-reference": "warn",
"unicorn/no-array-method-this-argument": "warn",
"unicorn/no-for-loop": "off",
2023-05-07 13:47:10 +00:00
"sonarjs/no-duplicate-string": ["warn", { threshold: 5 }],
2022-09-09 11:53:35 +00:00
2022-11-25 08:19:04 +00:00
// Promise
// 'promise/catch-or-return': 'off', // Should be enabled
"promise/always-return": "off",
2022-11-14 17:09:51 +00:00
eqeqeq: "error",
"no-param-reassign": "error",
"no-nested-ternary": "error",
"no-shadow": "error",
"import/order": ["warn", {
groups: ["type", "builtin", "external", "internal", "parent", "sibling", "index"],
distinctGroup: false,
pathGroups: [
{
pattern: "*.scss",
patternOptions: { matchBase: true },
group: "index",
position: "after"
}
],
"newlines-between": "always",
alphabetize: {
order: "asc",
caseInsensitive: true
}
}]
2022-09-09 11:53:35 +00:00
},
settings: {
"import/resolver": {
2022-09-09 11:53:35 +00:00
typescript: true,
node: true
}
}
};