diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..4910a0e --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,135 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: [ + 'svelte3', + '@typescript-eslint', + 'import', + 'simple-import-sort', + ], + parserOptions: { + tsconfigRootDir: __dirname, + project: [ + './tsconfig.test.json', + './src/tsconfig.json', + './src/common/tsconfig.json', + './src/assets/ts/tsconfig.eslint.json', + './src/assets/views/tsconfig.json', + ] + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + ], + rules: { + indent: [ + 'error', + 4, + { + SwitchCase: 1 + } + ], + 'no-trailing-spaces': 'error', + 'max-len': [ + 'error', + { + code: 120, + ignoreTemplateLiterals: true, + ignoreRegExpLiterals: true + } + ], + semi: 'off', + '@typescript-eslint/semi': [ + 'error' + ], + 'no-extra-semi': 'error', + 'eol-last': 'error', + 'comma-dangle': 'off', + 'simple-import-sort/imports': 'error', + 'no-extra-parens': 'off', + 'no-nested-ternary': 'error', + 'no-return-await': 'off', + 'no-useless-return': 'error', + 'no-useless-constructor': 'off', + 'import/extensions': ['error', 'ignorePackages'], + '@typescript-eslint/comma-dangle': [ + 'error', + { + arrays: 'always-multiline', + objects: 'always-multiline', + imports: 'always-multiline', + exports: 'always-multiline', + functions: 'always-multiline', + enums: 'always-multiline', + generics: 'always-multiline', + tuples: 'always-multiline' + } + ], + '@typescript-eslint/no-extra-parens': [ + 'error' + ], + '@typescript-eslint/no-inferrable-types': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'error', + '@typescript-eslint/no-unnecessary-condition': 'error', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_' + } + ], + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/no-useless-constructor': [ + 'error' + ], + '@typescript-eslint/return-await': [ + 'error', + 'always' + ], + '@typescript-eslint/explicit-member-accessibility': [ + 'error', + { + accessibility: 'explicit' + } + ], + '@typescript-eslint/no-floating-promises': 'error', + }, + ignorePatterns: [ + '.eslintrc.js', + 'rollup.config.js', + 'jest.config.js', + 'dist/**/*', + 'config/**/*', + 'intermediates/**/*', + 'public/**/*', + 'scripts/**/*', + 'src/frontend/register_svelte/register_svelte.js', + ], + overrides: [ + { + files: [ + 'test/**/*' + ], + rules: { + 'max-len': [ + 'error', + { + code: 120, + ignoreTemplateLiterals: true, + ignoreRegExpLiterals: true, + ignoreStrings: true + } + ] + } + }, + { + files: ['*.svelte'], + processor: 'svelte3/svelte3' + } + ], + settings: { + 'svelte3/typescript': require('typescript'), + 'svelte3/ignore-styles': function (attributes) { + return !!(attributes['lang'] && attributes['lang'] !== 'css'); + } + }, +} diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 8b0a7b4..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "plugins": [ - "@typescript-eslint" - ], - "parserOptions": { - "project": [ - "./tsconfig.json", - "./tsconfig.test.json" - ] - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended" - ], - "rules": { - "indent": [ - "error", - 4, - { - "SwitchCase": 1 - } - ], - "no-trailing-spaces": "error", - "max-len": [ - "error", - { - "code": 120, - "ignoreStrings": true, - "ignoreTemplateLiterals": true, - "ignoreRegExpLiterals": true - } - ], - "semi": "off", - "@typescript-eslint/semi": [ - "error" - ], - "no-extra-semi": "error", - "eol-last": "error", - "comma-dangle": "off", - "@typescript-eslint/comma-dangle": [ - "error", - { - "arrays": "always-multiline", - "objects": "always-multiline", - "imports": "always-multiline", - "exports": "always-multiline", - "functions": "always-multiline", - "enums": "always-multiline", - "generics": "always-multiline", - "tuples": "always-multiline" - } - ], - "no-extra-parens": "off", - "@typescript-eslint/no-extra-parens": [ - "error" - ], - "no-nested-ternary": "error", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/explicit-module-boundary-types": "error", - "@typescript-eslint/no-unnecessary-condition": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/no-non-null-assertion": "error", - "no-useless-return": "error", - "no-useless-constructor": "off", - "@typescript-eslint/no-useless-constructor": [ - "error" - ], - "no-return-await": "off", - "@typescript-eslint/return-await": [ - "error", - "always" - ], - "@typescript-eslint/explicit-member-accessibility": [ - "error", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/no-floating-promises": "error" - }, - "ignorePatterns": [ - "jest.config.js", - "scripts/**/*", - "webpack.config.js", - "dist/**/*", - "public/**/*", - "config/**/*" - ], - "overrides": [ - { - "files": [ - "test/**/*" - ], - "rules": { - "max-len": [ - "error", - { - "code": 120, - "ignoreTemplateLiterals": true, - "ignoreRegExpLiterals": true, - "ignoreStrings": true - } - ] - } - } - ] -}