{ "extends": [ "eslint:recommended", "plugin:compat/recommended", "plugin:import/recommended", "plugin:no-unsanitized/DOM", "plugin:lit/recommended", "plugin:prettier/recommended" ], "plugins": [ "prettier" ], "parser": "@babel/eslint-parser", "parserOptions": { "ecmaVersion": 2018, "sourceType": "module", "allowImportExportEverywhere": false, "requireConfigFile": false, "babelOptions": { "presets": [ [ "@babel/preset-env" ] ] } }, "env": { "browser": true, "es6": true }, "rules": { // Stylistic: "brace-style": "error", "camelcase": ["error", { "properties": "never", "ignoreDestructuring": true }], "comma-dangle": ["error", "always-multiline"], "comma-spacing": "error", "comma-style": "error", "curly": ["error", "multi-or-nest", "consistent"], "func-call-spacing": "error", // "indent": ["error", 2, { // "ignoredNodes": ["JSXElement", "JSXElement > *", "JSXAttribute", "JSXIdentifier", "JSXNamespacedName", "JSXMemberExpression", "JSXSpreadAttribute", "JSXExpressionContainer", "JSXOpeningElement", "JSXClosingElement", "JSXFragment", "JSXOpeningFragment", "JSXClosingFragment", "JSXText", "JSXEmptyExpression", "JSXSpreadChild"] // }], "max-len": ["error", { "code": 100, "tabWidth": 2, "ignoreUrls": true, "ignoreComments": false, "ignoreStrings": true, "ignoreRegExpLiterals": true, "ignoreTemplateLiterals": true }], "no-multiple-empty-lines": ["error", { "max": 1 }], "no-tabs": "error", "no-trailing-spaces": "error", "object-curly-spacing": ["error", "always"], "one-var": ["error", { "var": "never", "let": "never", "const": "never" }], "operator-linebreak": ["error", "after"], "padded-blocks": ["error", "never"], "quote-props": ["error", "consistent"], "quotes": ["error", "double", { "avoidEscape": true, "allowTemplateLiterals": true }], "semi": "error", "semi-spacing": "error", "space-before-blocks": "error", "space-before-function-paren": ["error", { "named": "never", "anonymous": "always", "asyncArrow": "always" }], "spaced-comment": ["error", "always", { "line": { "markers": ["/"], "exceptions": ["-", "+"] }, "block": { "markers": ["!"], "exceptions": ["*"], "balanced": true } }], "template-tag-spacing": ["error", "never"], // ES6: "arrow-body-style": ["error", "as-needed", { "requireReturnForObjectLiteral": false }], "arrow-parens": ["error", "always"], "arrow-spacing": ["error", { "before": true, "after": true }], "no-confusing-arrow": ["error", { "allowParens": true }], "no-var": "error", "prefer-const": ["error", { "destructuring": "any", "ignoreReadBeforeAssign": true }], "prefer-destructuring": ["error", { "VariableDeclarator": { "array": false, "object": true }, "AssignmentExpression": { "array": true, "object": false } }], "prefer-rest-params": "error", "prefer-spread": "error", "template-curly-spacing": "error" }, "overrides": [{ "files": [ "api/**/*.ts" ], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/recommended", "plugin:import/typescript", "plugin:prettier/recommended" ], "plugins": [ "@typescript-eslint", "prettier" ], "parser": "@typescript-eslint/parser", "parserOptions": { "project": ["./tsconfig.json"] }, "rules": { "@typescript-eslint/restrict-template-expressions": "off" }, "env": { "browser": false, "node": true } }], "ignorePatterns": [ "public/**", "static/assets/**", "*.d.ts", "gulpfile.js", "webpack.config.js" ] }