summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorWolfgang Müller2025-01-27 17:47:11 +0100
committerWolfgang Müller2025-01-27 17:47:11 +0100
commit2099fb6e90c9ea3ef769cc3373ed98b61285d393 (patch)
tree6992d8768a40d9c6601974c1e81fe5b560eb12a9
parentcf817a050a82b526ad230d2677f23f2efd7f3455 (diff)
downloadhircine-2099fb6e90c9ea3ef769cc3373ed98b61285d393.tar.gz
frontend/lint: Migrate to eslint.config.mjs
-rw-r--r--frontend/.eslintignore16
-rw-r--r--frontend/.eslintrc.cjs50
-rw-r--r--frontend/eslint.config.mjs99
-rw-r--r--frontend/package-lock.json50
-rw-r--r--frontend/package.json3
5 files changed, 145 insertions, 73 deletions
diff --git a/frontend/.eslintignore b/frontend/.eslintignore
deleted file mode 100644
index fb4d584..0000000
--- a/frontend/.eslintignore
+++ /dev/null
@@ -1,16 +0,0 @@
-.DS_Store
-node_modules
-/build
-/.svelte-kit
-/package
-.env
-.env.*
-!.env.example
-/coverage
-
-# Ignore files for PNPM, NPM and YARN
-pnpm-lock.yaml
-package-lock.json
-yarn.lock
-
-/src/gql \ No newline at end of file
diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs
deleted file mode 100644
index 352fa79..0000000
--- a/frontend/.eslintrc.cjs
+++ /dev/null
@@ -1,50 +0,0 @@
-module.exports = {
- root: true,
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended-type-checked',
- 'plugin:@typescript-eslint/stylistic-type-checked',
- 'plugin:svelte/recommended',
- 'prettier'
- ],
- parser: '@typescript-eslint/parser',
- plugins: ['@typescript-eslint'],
- ignorePatterns: ['*.cjs'],
- parserOptions: {
- sourceType: 'module',
- ecmaVersion: 2022,
- extraFileExtensions: ['.svelte'],
- project: true,
- tsconfigRootDir: __dirname
- },
- env: {
- browser: true,
- es2022: true,
- node: true
- },
- overrides: [
- {
- files: ['*.svelte'],
- parser: 'svelte-eslint-parser',
- parserOptions: {
- parser: '@typescript-eslint/parser'
- },
- rules: {
- '@typescript-eslint/no-unsafe-argument': 'off',
- '@typescript-eslint/no-unsafe-assignment': 'off',
- '@typescript-eslint/no-unsafe-call': 'off',
- '@typescript-eslint/no-unsafe-enum-comparison': 'off',
- '@typescript-eslint/no-unsafe-member-access': 'off',
- 'no-undef': 'off'
- }
- },
- {
- files: ['codegen.ts', 'svelte.config.js'],
- extends: ['plugin:@typescript-eslint/disable-type-checked']
- }
- ],
- rules: {
- 'no-console': 'warn',
- eqeqeq: 'error'
- }
-};
diff --git a/frontend/eslint.config.mjs b/frontend/eslint.config.mjs
new file mode 100644
index 0000000..9e842a8
--- /dev/null
+++ b/frontend/eslint.config.mjs
@@ -0,0 +1,99 @@
+import { FlatCompat } from '@eslint/eslintrc';
+import js from '@eslint/js';
+import typescriptEslint from '@typescript-eslint/eslint-plugin';
+import tsParser from '@typescript-eslint/parser';
+import globals from 'globals';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+import parser from 'svelte-eslint-parser';
+
+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 [
+ {
+ ignores: [
+ '**/*.cjs',
+ '**/.DS_Store',
+ '**/node_modules',
+ 'build',
+ '.svelte-kit',
+ 'package',
+ '**/.env',
+ '**/.env.*',
+ '!**/.env.example',
+ 'coverage',
+ '**/pnpm-lock.yaml',
+ '**/package-lock.json',
+ '**/yarn.lock',
+ 'src/gql',
+ 'eslint.config.mjs'
+ ]
+ },
+ ...compat.extends(
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended-type-checked',
+ 'plugin:@typescript-eslint/stylistic-type-checked',
+ 'plugin:svelte/recommended',
+ 'prettier'
+ ),
+ {
+ plugins: {
+ '@typescript-eslint': typescriptEslint
+ },
+
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ ...globals.node
+ },
+
+ parser: tsParser,
+ ecmaVersion: 2022,
+ sourceType: 'module',
+
+ parserOptions: {
+ extraFileExtensions: ['.svelte'],
+ project: true,
+ tsconfigRootDir: '/home/wolf/src/wolf/hircine/frontend'
+ }
+ },
+
+ rules: {
+ 'no-console': 'warn',
+ eqeqeq: 'error'
+ }
+ },
+ {
+ files: ['**/*.svelte'],
+
+ languageOptions: {
+ parser: parser,
+ ecmaVersion: 5,
+ sourceType: 'script',
+
+ parserOptions: {
+ parser: '@typescript-eslint/parser'
+ }
+ },
+
+ rules: {
+ '@typescript-eslint/no-unsafe-argument': 'off',
+ '@typescript-eslint/no-unsafe-assignment': 'off',
+ '@typescript-eslint/no-unsafe-call': 'off',
+ '@typescript-eslint/no-unsafe-enum-comparison': 'off',
+ '@typescript-eslint/no-unsafe-member-access': 'off',
+ '@typescript-eslint/no-unused-expressions': 'off',
+ 'no-undef': 'off'
+ }
+ },
+ ...compat.extends('plugin:@typescript-eslint/disable-type-checked').map((config) => ({
+ ...config,
+ files: ['**/codegen.ts', '**/svelte.config.js']
+ }))
+];
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 3844269..23cd5f2 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -17,6 +17,8 @@
"svelte-modals": "^1.3.0"
},
"devDependencies": {
+ "@eslint/eslintrc": "^3.2.0",
+ "@eslint/js": "^9.19.0",
"@graphql-codegen/cli": "^5.0.3",
"@graphql-codegen/typed-document-node": "^5.0.11",
"@graphql-codegen/typescript-operations": "^4.3.1",
@@ -34,6 +36,7 @@
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.46.0",
"fast-deep-equal": "^3.1.3",
+ "globals": "^15.14.0",
"npm-check-updates": "^17.1.11",
"postcss": "^8.4.49",
"prettier": "^3.3.3",
@@ -583,6 +586,16 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-classes/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/@babel/plugin-transform-computed-properties": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
@@ -898,6 +911,16 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/@babel/types": {
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz",
@@ -1473,9 +1496,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.18.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz",
- "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==",
+ "version": "9.19.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz",
+ "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5061,6 +5084,16 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/@eslint/js": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz",
+ "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/eslint/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -5632,13 +5665,16 @@
}
},
"node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "version": "15.14.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
+ "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/globby": {
diff --git a/frontend/package.json b/frontend/package.json
index 50c77ca..70b282e 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -15,6 +15,8 @@
"test": "vitest"
},
"devDependencies": {
+ "@eslint/eslintrc": "^3.2.0",
+ "@eslint/js": "^9.19.0",
"@graphql-codegen/cli": "^5.0.3",
"@graphql-codegen/typed-document-node": "^5.0.11",
"@graphql-codegen/typescript-operations": "^4.3.1",
@@ -32,6 +34,7 @@
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.46.0",
"fast-deep-equal": "^3.1.3",
+ "globals": "^15.14.0",
"npm-check-updates": "^17.1.11",
"postcss": "^8.4.49",
"prettier": "^3.3.3",