107 lines
2.8 KiB
JavaScript
107 lines
2.8 KiB
JavaScript
module.exports = {
|
|
plugins: ["@typescript-eslint", "import", "sonarjs", "unicorn", "promise", "solid", "jest"],
|
|
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"
|
|
],
|
|
overrides: [
|
|
{
|
|
files: ["**/*.ts", "**/*.tsx"],
|
|
parser: "@typescript-eslint/parser",
|
|
parserOptions: {
|
|
ecmaVersion: 2021,
|
|
ecmaFeatures: { jsx: true },
|
|
sourceType: "module",
|
|
project: "./tsconfig.json"
|
|
},
|
|
extends: [
|
|
"plugin:@typescript-eslint/recommended"
|
|
// Maybe one day...
|
|
// 'plugin:@typescript-eslint/recommended-requiring-type-checking'
|
|
],
|
|
rules: {
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"warn",
|
|
{
|
|
argsIgnorePattern: "^_"
|
|
}
|
|
],
|
|
"@typescript-eslint/no-non-null-assertion": "error",
|
|
// TODO: Remove any usage and enable
|
|
"@typescript-eslint/no-explicit-any": "off"
|
|
}
|
|
}
|
|
],
|
|
env: {
|
|
browser: true,
|
|
node: true,
|
|
mocha: true
|
|
},
|
|
globals: {},
|
|
rules: {
|
|
// Solid
|
|
"solid/reactivity": "off", // FIXME
|
|
"solid/no-innerhtml": "off",
|
|
|
|
/** 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",
|
|
|
|
"sonarjs/no-duplicate-string": ["warn", { threshold: 5 }],
|
|
|
|
// Promise
|
|
// 'promise/catch-or-return': 'off', // Should be enabled
|
|
"promise/always-return": "off",
|
|
|
|
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
|
|
}
|
|
}]
|
|
},
|
|
settings: {
|
|
"import/resolver": {
|
|
typescript: true,
|
|
node: true
|
|
}
|
|
}
|
|
};
|