-{
- "$schema": "https://json.schemastore.org/eslintrc",
- "root": true,
- "env": {
- "es2022": true,
- "node": true
- },
- "parserOptions": {
- "ecmaVersion": 2022,
- "sourceType": "module"
- },
- "plugins": ["import"],
- "extends": ["eslint:recommended", "plugin:import/recommended", "plugin:prettier/recommended"],
- "settings": {
- "import/resolver": {
- "typescript": {
- "project": "./tsconfig.json"
- }
- }
- },
- "rules": {
- "semi": ["error", "always"],
- "space-before-blocks": ["error", "always"],
- "curly": ["error", "all"],
- "brace-style": "error",
- "no-else-return": "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",
- "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",
- {
- "code": 100,
- "ignoreUrls": true
- }
- ],
- "no-lonely-if": "error",
- "no-trailing-spaces": "error",
- "no-whitespace-before-property": "error",
- "no-shadow": "error",
- "space-in-parens": ["error", "never"],
- "space-infix-ops": "error",
- "space-unary-ops": "error",
- "spaced-comment": ["error", "always"],
- "switch-colon-spacing": "error",
- "arrow-parens": ["error", "always"],
- "arrow-spacing": "error",
- "no-duplicate-imports": "error",
- "no-var": "error",
- "prefer-const": "error",
- "sort-imports": [
- "error",
- {
- "ignoreCase": false,
- "ignoreDeclarationSort": true,
- "ignoreMemberSort": false,
- "memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
- "allowSeparatedGroups": true
- }
- ],
- "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": {
- "project": true,
- "tsconfigRootDir": "./"
- },
- "plugins": ["@typescript-eslint", "eslint-plugin-tsdoc"],
- "extends": [
- "plugin:@typescript-eslint/recommended-type-checked",
- "plugin:@typescript-eslint/stylistic-type-checked",
- "plugin:import/typescript"
- ],
- "rules": {
- "tsdoc/syntax": "warn",
- "@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",
- "@typescript-eslint/no-shadow": "error"
- }
- },
- {
- "files": ["**/*.js", "**/*.cjs", "**/*.mjs"],
- "plugins": ["jsdoc"],
- "extends": ["plugin:jsdoc/recommended", "plugin:n/recommended"],
- "rules": {
- "n/shebang": "off"
- }
- }
- ]
-}