109 lines
3.5 KiB
JavaScript
109 lines
3.5 KiB
JavaScript
import vue from 'eslint-plugin-vue';
|
|
import globals from 'globals';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import js from '@eslint/js';
|
|
import { FlatCompat } from '@eslint/eslintrc';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const compat = new FlatCompat({
|
|
baseDirectory: __dirname,
|
|
recommendedConfig: js.configs.recommended,
|
|
allConfig: js.configs.all,
|
|
});
|
|
|
|
export default [
|
|
...compat.extends(
|
|
'standard',
|
|
'eslint:recommended',
|
|
'plugin:vue/vue3-strongly-recommended',
|
|
'plugin:cypress/recommended',
|
|
'prettier',
|
|
),
|
|
{
|
|
plugins: {
|
|
vue,
|
|
cypress: 'eslint-plugin-cypress',
|
|
eslint: 'eslint-plugin-import',
|
|
},
|
|
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.browser,
|
|
...vue.environments['setup-compiler-macros']['setup-compiler-macros'],
|
|
ga: 'readonly',
|
|
cordova: 'readonly',
|
|
__statics: 'readonly',
|
|
__QUASAR_SSR__: 'readonly',
|
|
__QUASAR_SSR_SERVER__: 'readonly',
|
|
__QUASAR_SSR_CLIENT__: 'readonly',
|
|
__QUASAR_SSR_PWA__: 'readonly',
|
|
process: 'readonly',
|
|
Capacitor: 'readonly',
|
|
chrome: 'readonly',
|
|
},
|
|
|
|
ecmaVersion: 2018,
|
|
sourceType: 'module',
|
|
|
|
parserOptions: {
|
|
parser: '@babel/eslint-parser',
|
|
},
|
|
},
|
|
|
|
rules: {
|
|
'jest/expect-expect': 'error',
|
|
'generator-star-spacing': 'error',
|
|
'arrow-parens': 'error',
|
|
'one-var': 'error',
|
|
'no-void': 'error',
|
|
'multiline-ternary': 'error',
|
|
'import/first': 'error',
|
|
'import/named': 'error',
|
|
'import/namespace': 'error',
|
|
'import/default': 'error',
|
|
'import/export': 'error',
|
|
'import/extensions': 'error',
|
|
'import/no-unresolved': 'error',
|
|
'import/no-extraneous-dependencies': 'error',
|
|
semi: 'error',
|
|
'space-before-function-paren': 'error',
|
|
'no-undef': 'error',
|
|
'no-unused-vars': 'warn',
|
|
'no-console': 'error',
|
|
'no-debugger': 'error',
|
|
'no-useless-escape': 'error',
|
|
'no-prototype-builtins': 'error',
|
|
'no-async-promise-executor': 'error',
|
|
'no-irregular-whitespace': 'error',
|
|
'no-constant-condition': 'error',
|
|
'no-unsafe-finally': 'error',
|
|
'no-extend-native': 'error',
|
|
'vue/no-unused-components': 'error',
|
|
'vue/no-unused-properties': 'error',
|
|
'vue/no-multiple-template-root': 'error',
|
|
'vue/no-v-html': 'error',
|
|
'vue/no-v-model-argument': 'error',
|
|
'vue/no-parsing-error': 'error',
|
|
'vue/no-deprecated-slot-attribute': 'error',
|
|
'prefer-promise-reject-errors': 'error',
|
|
},
|
|
},
|
|
...compat.extends('plugin:cypress/recommended').map((config) => ({
|
|
...config,
|
|
files: ['test/cypress/**/*.*'],
|
|
})),
|
|
{
|
|
files: ['test/cypress/**/*.*'],
|
|
|
|
rules: {
|
|
semi: 'error',
|
|
'space-before-function-paren': 'error',
|
|
'prefer-promise-reject-errors': 'error',
|
|
'vue/no-multiple-template-root': 'error',
|
|
},
|
|
},
|
|
];
|