diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 4c445ba..d4a8acf 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -3,30 +3,187 @@ require('@rushstack/eslint-patch/modern-module-resolution'); module.exports = { root: true, - 'extends': [ + extends: [ 'plugin:vue/vue3-essential', 'eslint:recommended', - '@vue/eslint-config-typescript', + '@vue/eslint-config-typescript' ], + plugins: [ '@stylistic' ], parserOptions: { - ecmaVersion: 'latest', + ecmaVersion: 'latest' }, rules: { - 'semi': 'off', - '@typescript-eslint/semi': 'error', + 'keyword-spacing': 'error', - 'indent': 'off', - '@typescript-eslint/indent': [ + '@stylistic/array-bracket-newline': [ + 'error', + { + minItems: 2 + } + ], + '@stylistic/array-bracket-spacing': [ + 'error', + 'always' + ], + '@stylistic/array-element-newline': [ + 'error', + { + minItems: 2 + } + ], + '@stylistic/arrow-parens': [ + 'error', + 'as-needed' + ], + '@stylistic/arrow-spacing': 'error', + '@stylistic/brace-style': [ + 'error', + 'stroustrup' + ], + '@stylistic/comma-dangle': [ + 'error', + 'never' + ], + '@stylistic/comma-style': [ + 'error', + 'last' + ], + '@stylistic/dot-location': [ + 'error', + 'property' + ], + '@stylistic/eol-last': [ + 'error', + 'always' + ], + '@stylistic/function-call-argument-newline': [ + 'error', + 'consistent' + ], + '@stylistic/function-paren-newline': [ + 'error', + { + minItems: 5 + } + ], + '@stylistic/indent': [ 'error', 'tab' ], - - 'quotes': 'off', - '@typescript-eslint/quotes': [ + '@stylistic/linebreak-style': [ + 'error', + 'unix' + ], + '@stylistic/lines-around-comment': [ + 'error', + { + beforeBlockComment: true + } + ], + '@stylistic/lines-between-class-members': [ + 'error', + 'always' + ], + '@stylistic/no-extra-semi': 'error', + '@stylistic/no-floating-decimal': 'error', + '@stylistic/no-mixed-operators': 'error', + '@stylistic/no-mixed-spaces-and-tabs': 'error', + '@stylistic/no-multi-spaces': [ + 'error', + { + exceptions: { + VariableDeclarator: true, + ImportDeclaration: true + } + } + ], + '@stylistic/no-multiple-empty-lines': 'error', + '@stylistic/no-trailing-spaces': 'error', + '@stylistic/no-whitespace-before-property': 'error', + '@stylistic/nonblock-statement-body-position': [ + 'error', + 'below' + ], + '@stylistic/object-curly-newline': [ + 'error', + 'always' + ], + '@stylistic/object-curly-spacing': [ + 'error', + 'always' + ], + '@stylistic/object-property-newline': [ + 'error', + { + allowAllPropertiesOnSameLine: false + } + ], + '@stylistic/operator-linebreak': [ + 'error', + 'before' + ], + '@stylistic/padded-blocks': [ + 'error', + 'never' + ], + '@stylistic/padding-line-between-statements': [ + 'error', + { + blankLine: 'always', + prev: '*', + next: 'return' + } + ], + '@stylistic/quote-props': [ + 'error', + 'as-needed' + ], + '@stylistic/quotes': [ 'error', 'single' ], + '@stylistic/rest-spread-spacing': [ + 'error', + 'never' + ], + '@stylistic/semi': 'error', + '@stylistic/semi-spacing': 'error', + '@stylistic/semi-style': [ + 'error', + 'last' + ], + '@stylistic/space-before-blocks': [ + 'error', + 'always' + ], + '@stylistic/space-before-function-paren': [ + 'error', + 'never' + ], + '@stylistic/space-in-parens': [ + 'error', + 'never' + ], + '@stylistic/space-infix-ops': 'error', + '@stylistic/spaced-comment': [ + 'error', + 'always' + ], + '@stylistic/switch-colon-spacing': 'error', + '@stylistic/template-curly-spacing': [ + 'error', + 'always' + ], + '@stylistic/template-tag-spacing': [ + 'error', + 'always' + ], + '@stylistic/wrap-regex': 'error', 'vue/comment-directive': 'off', + 'vue/html-indent': [ + 'error', + 2 + ] } }; diff --git a/package.json b/package.json index 27a42eb..84eee15 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ }, "devDependencies": { "@rushstack/eslint-patch": "^1.3.3", + "@stylistic/eslint-plugin": "^1.1.0", "@tsconfig/node18": "^18.2.2", "@types/jsdom": "^21.1.3", "@types/node": "^18.18.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e0070f2..c5f4c0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,6 +25,9 @@ devDependencies: '@rushstack/eslint-patch': specifier: ^1.3.3 version: 1.5.1 + '@stylistic/eslint-plugin': + specifier: ^1.1.0 + version: 1.1.0(eslint@8.53.0)(typescript@5.2.2) '@tsconfig/node18': specifier: ^18.2.2 version: 18.2.2 @@ -723,6 +726,51 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@stylistic/eslint-plugin-js@1.1.0: + resolution: {integrity: sha512-7yDOvKQvtTXIJMVcKNGfpYSJJhwTbOrDcMDgYqWbtS9LyHmuzxvnR748bQ21pQyi6aZR2E7edwKsdKmZlXc9Rg==} + dependencies: + acorn: 8.11.2 + escape-string-regexp: 4.0.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + graphemer: 1.4.0 + dev: true + + /@stylistic/eslint-plugin-jsx@1.1.0: + resolution: {integrity: sha512-XMTAYQ9t7ZoWjqciqOy99O0sRCHh/6x/Q4Dm8sCVKzKlsnPzVlXzAD0htNqHG+Fu7qyGblDqb0/7PNJXBdQc5Q==} + dependencies: + '@stylistic/eslint-plugin-js': 1.1.0 + estraverse: 5.3.0 + dev: true + + /@stylistic/eslint-plugin-ts@1.1.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-vqlinwzTNSKoFaVcVKE2iVGKX62NKIJfkhEI+5uuufYcAhfjfOK3KQY0zhdUeshEUkBVR0uRrJzH1/Cj/2Unfg==} + peerDependencies: + eslint: '*' + dependencies: + '@stylistic/eslint-plugin-js': 1.1.0 + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + graphemer: 1.4.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin@1.1.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-PcJgMTNiIZ1d+aQt7OM50hRkeOIB7FyfRofNEe1PykG7NvSjjwQ7fS2XN+eN/SmoPN4ocZkacZHOv5cDNrFEqQ==} + peerDependencies: + eslint: '*' + dependencies: + '@stylistic/eslint-plugin-js': 1.1.0 + '@stylistic/eslint-plugin-jsx': 1.1.0 + '@stylistic/eslint-plugin-ts': 1.1.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} diff --git a/src/App.vue b/src/App.vue index 1dd89da..2fb37b9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,10 +1,30 @@