enso/app/gui2/eslint.config.js
2024-04-24 13:40:42 +02:00

75 lines
1.8 KiB
JavaScript

import { FlatCompat } from '@eslint/eslintrc'
import eslintJs from '@eslint/js'
import * as path from 'node:path'
import * as url from 'node:url'
const compat = new FlatCompat()
const DIR_NAME = path.dirname(url.fileURLToPath(import.meta.url))
const conf = [
{
ignores: [
'rust-ffi/pkg',
'rust-ffi/node-pkg',
'dist',
'shared/ast/generated',
'templates',
'.histoire',
'playwright-report',
'test-results',
],
},
...compat.extends('plugin:vue/vue3-recommended'),
eslintJs.configs.recommended,
...compat.extends('@vue/eslint-config-typescript', '@vue/eslint-config-prettier'),
{
// files: ['{**,src}/*.{vue,js,jsx,cjs,mjs,ts,tsx,cts,mts}'],
languageOptions: {
parserOptions: {
tsconfigRootDir: DIR_NAME,
ecmaVersion: 'latest',
project: [
'./tsconfig.app.json',
'./tsconfig.node.json',
'./tsconfig.server.json',
'./tsconfig.app.vitest.json',
'./tsconfig.server.vitest.json',
'./tsconfig.story.json',
],
},
},
rules: {
camelcase: [1, { ignoreImports: true }],
'no-inner-declarations': 0,
'vue/attribute-hyphenation': [2, 'never'],
'vue/v-on-event-hyphenation': [2, 'never'],
'@typescript-eslint/no-unused-vars': [
1,
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_',
},
],
},
},
{
files: ['stories/*.vue'],
rules: {
'vue/multi-word-component-names': 0,
},
},
// We must make sure our E2E tests await all steps, otherwise they're flaky.
{
files: ['e2e/**/*.spec.ts'],
languageOptions: {
parser: await import('@typescript-eslint/parser'),
},
rules: {
'@typescript-eslint/no-floating-promises': 2,
},
},
]
export default conf