diff options
author | Wolfgang Müller | 2025-01-27 17:47:11 +0100 |
---|---|---|
committer | Wolfgang Müller | 2025-01-27 17:47:11 +0100 |
commit | 2099fb6e90c9ea3ef769cc3373ed98b61285d393 (patch) | |
tree | 6992d8768a40d9c6601974c1e81fe5b560eb12a9 | |
parent | cf817a050a82b526ad230d2677f23f2efd7f3455 (diff) | |
download | hircine-2099fb6e90c9ea3ef769cc3373ed98b61285d393.tar.gz |
frontend/lint: Migrate to eslint.config.mjs
-rw-r--r-- | frontend/.eslintignore | 16 | ||||
-rw-r--r-- | frontend/.eslintrc.cjs | 50 | ||||
-rw-r--r-- | frontend/eslint.config.mjs | 99 | ||||
-rw-r--r-- | frontend/package-lock.json | 50 | ||||
-rw-r--r-- | frontend/package.json | 3 |
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", |