X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=.eslintrc;h=adb3c787842e635fb05b958d2b6b69e2d103ef7c;hb=981ebfbeeb421a4b620aa61861f9ddb313a03f67;hp=6089a14b3c2baaee4a2b28494157333ea39b8dba;hpb=7dde0b73302613be132c41e1f28a42de555dc2b6;p=e-mobility-charging-stations-simulator.git diff --git a/.eslintrc b/.eslintrc index 6089a14b..adb3c787 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,24 +1,184 @@ { - "parser": "babel-eslint", + "root": true, + "env": { + "es2020": true, + "node": true, + "mocha": true + }, + "parserOptions": { + "ecmaVersion": 2020, + "sourceType": "module" + }, "extends": [ "eslint:recommended", - "plugin:flowtype/recommended", - "node", - "google" - ], - "plugins": [ - "flowtype" + "plugin:import/recommended", + "plugin:jsdoc/recommended", + "plugin:prettier/recommended" ], + "plugins": ["import", "jsdoc"], + "settings": { + "jsdoc": { + "mode": "typescript" + }, + "import/resolver": { + "typescript": { + "project": "./tsconfig.json" + } + } + }, "rules": { - "require-jsdoc": 0, - "import/no-commonjs": [ - 2, + "space-before-blocks": ["error", "always"], + "curly": ["error", "all"], + "brace-style": "error", + "eqeqeq": ["error", "always"], + "no-else-return": "error", + "no-eq-null": "error", + "no-extra-bind": "error", + "no-lone-blocks": "error", + "no-multi-spaces": "error", + "no-empty": "error", + "no-return-assign": ["error", "always"], + "no-useless-catch": "error", + "no-useless-return": "error", + "no-multiple-empty-lines": [ + "error", + { + "max": 2, + "maxEOF": 1 + } + ], + "block-spacing": "error", + // "capitalized-comments": [ + // "error", + // "always", + // { + // "ignoreConsecutiveComments": true, + // "ignorePattern": "pragma|ignored" + // } + // ], + "eol-last": ["error", "always"], + "consistent-this": ["error", "self"], + "func-call-spacing": ["error", "never"], + "keyword-spacing": ["error"], + "id-blacklist": [ + "error", + "any", + "Number", + "number", + "String", + "string", + "Boolean", + "boolean", + "Undefined", + "undefined", + "Symbol", + "symbol" + ], + "linebreak-style": ["error", "unix"], + "max-len": [ + "warn", { - "allowRequire": true, - "allowPrimitiveModules": true + "code": 100, + "ignoreUrls": true } ], - "import/no-nodejs-modules": 0, - "flowtype/no-types-missing-file-annotation": 0 - } + "no-lonely-if": "error", + "no-trailing-spaces": "error", + "no-whitespace-before-property": "error", + "space-in-parens": ["error", "never"], + "space-infix-ops": "error", + "space-unary-ops": "error", + "spaced-comment": ["error", "always"], + "switch-colon-spacing": "error", + "arrow-body-style": ["error", "as-needed"], + "arrow-parens": ["error", "always"], + "arrow-spacing": "error", + "no-duplicate-imports": "error", + "no-var": "error", + "prefer-const": "error", + "sort-imports": [ + "warn", + { + "ignoreCase": false, + "ignoreDeclarationSort": true, + "ignoreMemberSort": false, + "memberSyntaxSortOrder": ["none", "all", "multiple", "single"], + "allowSeparatedGroups": true + } + ], + "import/no-unresolved": "error", + "import/order": [ + "error", + { + "groups": [ + "builtin", // Built-in imports (come from NodeJS native) go first + "external", // <- External imports + "internal", // <- Absolute imports + ["sibling", "parent"], // <- Relative imports, the sibling and parent types they can be mingled together + "index", // <- Index imports + "unknown" // <- Unknown + ], + "newlines-between": "always", + "alphabetize": { + /* Sort in ascending order. Options: ["ignore", "asc", "desc"] */ + "order": "asc", + /* Ignore case. Options: [true, false] */ + "caseInsensitive": true + } + } + ], + "object-curly-spacing": ["error", "always"], + "lines-between-class-members": [ + "error", + "always", + { + "exceptAfterSingleLine": true + } + ], + "quotes": [ + "error", + "single", + { + "avoidEscape": true, + "allowTemplateLiterals": false + } + ] + }, + "overrides": [ + { + "files": ["**/*.ts"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2020, + "sourceType": "module", + "project": "./tsconfig.json" + }, + "extends": [ + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:import/typescript" + ], + "plugins": ["@typescript-eslint"], + "rules": { + "@typescript-eslint/array-type": "off", + "semi": "off", + "@typescript-eslint/semi": ["error", "always"], + "@typescript-eslint/no-empty-function": "warn", + "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/no-misused-promises": "error", + "no-shadow": "off", // This one is generating false positive no-shadow errors on exported/const enums + "@typescript-eslint/no-shadow": "error" + } + }, + { + "files": ["**/*.js"], + "extends": "plugin:node/recommended", + "rules": { + "node/shebang": "off" + } + } + ] }