diff --git a/web/.eslintignore b/web/.eslintignore deleted file mode 100644 index 5382a86c6..000000000 --- a/web/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -# don't lint build output (make sure it's set to your correct build folder name) -dist -coverage/ -package.json -tsconfig.eslint.json -tsconfig.json -src/assets/locales/ -components.d.ts diff --git a/web/.eslintrc.js b/web/.eslintrc.js deleted file mode 100644 index 873fc9528..000000000 --- a/web/.eslintrc.js +++ /dev/null @@ -1,161 +0,0 @@ -// cSpell:ignore TSES -// @ts-check -/** @type {import('@typescript-eslint/experimental-utils').TSESLint.Linter.Config} */ - -/* eslint-env node */ -module.exports = { - env: { - browser: true, - }, - reportUnusedDisableDirectives: true, - - parser: 'vue-eslint-parser', - parserOptions: { - project: ['./tsconfig.eslint.json'], - tsconfigRootDir: __dirname, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore see https://github.com/vuejs/vue-eslint-parser#parseroptionsparser - parser: '@typescript-eslint/parser', - sourceType: 'module', - extraFileExtensions: ['.vue'], - }, - - plugins: ['@typescript-eslint', 'import', 'simple-import-sort'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'airbnb-base', - 'airbnb-typescript/base', - 'plugin:import/errors', - 'plugin:import/warnings', - 'plugin:import/typescript', - 'plugin:promise/recommended', - 'plugin:vue/vue3-recommended', - 'plugin:prettier/recommended', - 'plugin:vue-scoped-css/recommended', - ], - - rules: { - // enable scope analysis rules - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': 'error', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': 'error', - 'no-shadow': 'off', - '@typescript-eslint/no-shadow': 'error', - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'error', - - // make typescript eslint rules even more strict - '@typescript-eslint/no-explicit-any': 'error', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-non-null-assertion': 'error', - // SOURCE: https://github.com/iamturns/eslint-config-airbnb-typescript/blob/4aec5702be5b4e74e0e2f40bc78b4bc961681de1/lib/shared.js#L41 - '@typescript-eslint/naming-convention': [ - 'error', - // Allow camelCase variables (23.2), PascalCase variables (23.8), and UPPER_CASE variables (23.10) - { - selector: 'variable', - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - leadingUnderscore: 'allow', - }, - // Allow camelCase functions (23.2), and PascalCase functions (23.8) - { - selector: 'function', - format: ['camelCase', 'PascalCase'], - }, - // Airbnb recommends PascalCase for classes (23.3), and although Airbnb does not make TypeScript recommendations, we are assuming this rule would similarly apply to anything "type like", including interfaces, type aliases, and enums - { - selector: 'typeLike', - format: ['PascalCase'], - }, - ], - - 'import/no-unresolved': 'off', // disable as this is handled by tsc itself - 'import/first': 'error', - 'import/newline-after-import': 'error', - 'import/no-cycle': 'error', - 'import/no-relative-parent-imports': 'error', - 'import/no-duplicates': 'error', - 'import/no-extraneous-dependencies': 'error', - 'import/extensions': 'off', - 'import/prefer-default-export': 'off', - - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - - 'promise/prefer-await-to-then': 'error', - 'promise/prefer-await-to-callbacks': 'error', - - 'no-underscore-dangle': 'off', - 'no-else-return': ['error', { allowElseIf: false }], - 'no-return-assign': ['error', 'always'], - 'no-return-await': 'error', - 'no-useless-return': 'error', - 'no-restricted-imports': [ - 'error', - { - patterns: ['src', 'dist'], - }, - ], - 'no-console': 'warn', - 'no-useless-concat': 'error', - 'prefer-const': 'error', - 'spaced-comment': ['error', 'always'], - 'object-shorthand': ['error', 'always'], - 'no-useless-rename': 'error', - eqeqeq: 'error', - - 'vue/attribute-hyphenation': 'error', - // enable in accordance with https://github.com/prettier/eslint-config-prettier#vuehtml-self-closing - 'vue/html-self-closing': [ - 'error', - { - html: { - void: 'any', - }, - }, - ], - 'vue/no-static-inline-styles': 'error', - 'vue/v-on-function-call': 'error', - 'vue/no-useless-v-bind': 'error', - 'vue/no-useless-mustaches': 'error', - 'vue/no-useless-concat': 'error', - 'vue/no-boolean-default': 'error', - 'vue/html-button-has-type': 'error', - 'vue/component-name-in-template-casing': 'error', - 'vue/match-component-file-name': [ - 'error', - { - extensions: ['vue'], - shouldMatchCase: true, - }, - ], - 'vue/require-name-property': 'error', - 'vue/v-for-delimiter-style': 'error', - 'vue/no-empty-component-block': 'error', - 'vue/no-duplicate-attr-inheritance': 'error', - 'vue/no-unused-properties': [ - 'error', - { - groups: ['props', 'data', 'computed', 'methods', 'setup'], - }, - ], - 'vue/new-line-between-multi-line-property': 'error', - 'vue/padding-line-between-blocks': 'error', - 'vue/multi-word-component-names': 'off', - 'vue/no-reserved-component-names': 'off', - - // css rules - 'vue-scoped-css/no-unused-selector': 'error', - 'vue-scoped-css/no-parsing-error': 'error', - 'vue-scoped-css/require-scoped': 'error', - - // enable in accordance with https://github.com/prettier/eslint-config-prettier#curly - curly: ['error', 'all'], - - // risky because of https://github.com/prettier/eslint-plugin-prettier#arrow-body-style-and-prefer-arrow-callback-issue - 'arrow-body-style': 'error', - 'prefer-arrow-callback': 'error', - }, -}; diff --git a/web/eslint.config.js b/web/eslint.config.js new file mode 100644 index 000000000..82296f1bc --- /dev/null +++ b/web/eslint.config.js @@ -0,0 +1,199 @@ +// cSpell:ignore TSES +// @ts-check + +import simpleImportSort from 'eslint-plugin-simple-import-sort'; +//import eslintImport from 'eslint-plugin-import'; +//import eslintTypescript from '@typescript-eslint/eslint-plugin'; +import vueParser from 'vue-eslint-parser'; +import globals from 'globals'; +import js from '@eslint/js'; +import airBnbBase from 'eslint-config-airbnb-base'; +//import airBnbTS from 'eslint-config-airbnb-typescript/base'; +import eslintVue from 'eslint-plugin-vue'; +import eslintVueScopedCSS from 'eslint-plugin-vue-scoped-css'; +import eslintPrettier from 'eslint-plugin-prettier/recommended'; +import eslintPromise from 'eslint-plugin-promise'; +import tseslint from 'typescript-eslint'; + +import path from 'path'; +import { fileURLToPath } from 'url'; + +// TODO check eslint-env +/* eslint-env node */ + +export default tseslint.config( + { + ignores: [ + 'dist/**', + 'package.json', + 'tsconfig.eslint.json', + 'tsconfig.json', + 'src/assets/locales/**', + 'src/assets/dayjsLocales/**', + 'components.d.ts', + ], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + + //airBnbBase, + //airBnbTS, + //eslintImport, used these 'plugin:import/errors', 'plugin:import/warnings', 'plugin:import/typescript' + ...eslintVue.configs['flat/recommended'], + ...eslintVueScopedCSS.configs['flat/recommended'], + eslintPrettier, + //eslintPromise.configs.recommended, + { + files: ['**/*.js', '**/*.ts', '**/*.vue'], + + languageOptions: { + parser: vueParser, + parserOptions: { + project: ['./tsconfig.eslint.json'], + tsconfigRootDir: path.dirname(fileURLToPath(import.meta.url)), + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore see https://github.com/vuejs/vue-eslint-parser#parseroptionsparser + parser: tseslint.parser, + extraFileExtensions: ['.vue', '.json'], + }, + sourceType: 'module', + globals: globals.browser, + }, + + linterOptions: { + reportUnusedDisableDirectives: 'warn', + }, + + plugins: { + //TODO 'import': eslintImport, + 'simple-import-sort': simpleImportSort, + //TODO promise: eslintPromise, + vue: eslintVue, + 'vue-scoped-css': eslintVueScopedCSS, + }, + + rules: { + // enable scope analysis rules + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': 'error', + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': 'error', + 'no-redeclare': 'off', + '@typescript-eslint/no-redeclare': 'error', + + // make typescript eslint rules even more strict + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'error', + // SOURCE: https://github.com/iamturns/eslint-config-airbnb-typescript/blob/4aec5702be5b4e74e0e2f40bc78b4bc961681de1/lib/shared.js#L41 + '@typescript-eslint/naming-convention': [ + 'error', + // Allow camelCase variables (23.2), PascalCase variables (23.8), and UPPER_CASE variables (23.10) + { + selector: 'variable', + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + leadingUnderscore: 'allow', + }, + // Allow camelCase functions (23.2), and PascalCase functions (23.8) + { + selector: 'function', + format: ['camelCase', 'PascalCase'], + }, + // Airbnb recommends PascalCase for classes (23.3), and although Airbnb does not make TypeScript recommendations, we are assuming this rule would similarly apply to anything "type like", including interfaces, type aliases, and enums + { + selector: 'typeLike', + format: ['PascalCase'], + }, + ], + + //'import/no-unresolved': 'off', // disable as this is handled by tsc itself + //'import/first': 'error', + //'import/newline-after-import': 'error', + //'import/no-cycle': 'error', + //'import/no-relative-parent-imports': 'error', + //'import/no-duplicates': 'error', + //'import/no-extraneous-dependencies': 'error', + //'import/extensions': 'off', + //'import/prefer-default-export': 'off', + + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + + //'promise/prefer-await-to-then': 'error', + //'promise/prefer-await-to-callbacks': 'error', + + 'no-underscore-dangle': 'off', + 'no-else-return': ['error', { allowElseIf: false }], + 'no-return-assign': ['error', 'always'], + 'no-return-await': 'error', + 'no-useless-return': 'error', + 'no-restricted-imports': [ + 'error', + { + patterns: ['src', 'dist'], + }, + ], + 'no-console': 'warn', + 'no-useless-concat': 'error', + 'prefer-const': 'error', + 'spaced-comment': ['error', 'always'], + 'object-shorthand': ['error', 'always'], + 'no-useless-rename': 'error', + eqeqeq: 'error', + + 'vue/attribute-hyphenation': 'error', + // enable in accordance with https://github.com/prettier/eslint-config-prettier#vuehtml-self-closing + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'any', + }, + }, + ], + 'vue/no-static-inline-styles': 'error', + 'vue/v-on-function-call': 'error', + 'vue/no-useless-v-bind': 'error', + 'vue/no-useless-mustaches': 'error', + 'vue/no-useless-concat': 'error', + 'vue/no-boolean-default': 'error', + 'vue/html-button-has-type': 'error', + 'vue/component-name-in-template-casing': 'error', + 'vue/match-component-file-name': [ + 'error', + { + extensions: ['vue'], + shouldMatchCase: true, + }, + ], + 'vue/require-name-property': 'error', + 'vue/v-for-delimiter-style': 'error', + 'vue/no-empty-component-block': 'error', + 'vue/no-duplicate-attr-inheritance': 'error', + 'vue/no-unused-properties': [ + 'error', + { + groups: ['props', 'data', 'computed', 'methods', 'setup'], + }, + ], + 'vue/new-line-between-multi-line-property': 'error', + 'vue/padding-line-between-blocks': 'error', + 'vue/multi-word-component-names': 'off', + 'vue/no-reserved-component-names': 'off', + + // css rules + 'vue-scoped-css/no-unused-selector': 'error', + 'vue-scoped-css/no-parsing-error': 'error', + 'vue-scoped-css/require-scoped': 'error', + + // enable in accordance with https://github.com/prettier/eslint-config-prettier#curly + curly: ['error', 'all'], + + // risky because of https://github.com/prettier/eslint-plugin-prettier#arrow-body-style-and-prefer-arrow-callback-issue + 'arrow-body-style': 'error', + 'prefer-arrow-callback': 'error', + }, + }, +); diff --git a/web/package.json b/web/package.json index a86646bda..e77bd901c 100644 --- a/web/package.json +++ b/web/package.json @@ -3,6 +3,7 @@ "author": "Woodpecker CI", "version": "0.0.0", "license": "Apache-2.0", + "type": "module", "engines": { "node": ">=14" }, @@ -10,7 +11,7 @@ "start": "vite", "build": "vite build --base=/BASE_PATH", "serve": "vite preview", - "lint": "eslint --max-warnings 0 --ext .js,.ts,.vue,.json .", + "lint": "eslint --max-warnings 0 .", "format": "prettier --write .", "format:check": "prettier -c .", "typecheck": "vue-tsc --noEmit", @@ -34,6 +35,7 @@ "vue-router": "^4.2.5" }, "devDependencies": { + "@eslint/js": "^9.0.0", "@iconify/json": "^2.2.171", "@types/lodash": "^4.14.202", "@types/node": "^20.11.5", @@ -44,7 +46,7 @@ "@typescript-eslint/parser": "^7.0.0", "@vitejs/plugin-vue": "^5.0.3", "@vue/compiler-sfc": "^3.4.15", - "eslint": "^8.56.0", + "eslint": "^9.0.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", @@ -54,10 +56,12 @@ "eslint-plugin-simple-import-sort": "^12.0.0", "eslint-plugin-vue": "^9.20.1", "eslint-plugin-vue-scoped-css": "^2.7.2", + "globals": "^15.0.0", "prettier": "^3.2.4", "replace-in-file": "^7.1.0", "tinycolor2": "^1.6.0", "typescript": "5.4.3", + "typescript-eslint": "^7.6.0", "unplugin-icons": "^0.18.2", "unplugin-vue-components": "^0.26.0", "vite": "^5.0.12", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b4a4f9ed3..67de3b7bf 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -55,6 +55,9 @@ dependencies: version: 4.3.0(vue@3.4.21) devDependencies: + '@eslint/js': + specifier: ^9.0.0 + version: 9.0.0 '@iconify/json': specifier: ^2.2.171 version: 2.2.196 @@ -75,10 +78,10 @@ devDependencies: version: 7.5.8 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3) + version: 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@9.0.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.4.0(eslint@8.57.0)(typescript@5.4.3) + version: 7.4.0(eslint@9.0.0)(typescript@5.4.3) '@vitejs/plugin-vue': specifier: ^5.0.3 version: 5.0.4(vite@5.2.7)(vue@3.4.21) @@ -86,35 +89,38 @@ devDependencies: specifier: ^3.4.15 version: 3.4.21 eslint: - specifier: ^8.56.0 - version: 8.57.0 + specifier: ^9.0.0 + version: 9.0.0 eslint-config-airbnb-base: specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 15.0.0(eslint-plugin-import@2.29.1)(eslint@9.0.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@9.0.0) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@9.0.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint@9.0.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.57.0) + version: 6.1.1(eslint@9.0.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.0.0(eslint@8.57.0) + version: 12.0.0(eslint@9.0.0) eslint-plugin-vue: specifier: ^9.20.1 - version: 9.24.0(eslint@8.57.0) + version: 9.24.0(eslint@9.0.0) eslint-plugin-vue-scoped-css: specifier: ^2.7.2 - version: 2.8.0(eslint@8.57.0)(vue-eslint-parser@9.4.2) + version: 2.8.0(eslint@9.0.0)(vue-eslint-parser@9.4.2) + globals: + specifier: ^15.0.0 + version: 15.0.0 prettier: specifier: ^3.2.4 version: 3.2.5 @@ -127,6 +133,9 @@ devDependencies: typescript: specifier: 5.4.3 version: 5.4.3 + typescript-eslint: + specifier: ^7.6.0 + version: 7.6.0(eslint@9.0.0)(typescript@5.4.3) unplugin-icons: specifier: ^0.18.2 version: 0.18.5(@vue/compiler-sfc@3.4.21) @@ -147,7 +156,7 @@ devDependencies: version: 5.1.0(vue@3.4.21) vue-eslint-parser: specifier: ^9.4.0 - version: 9.4.2(eslint@8.57.0) + version: 9.4.2(eslint@9.0.0) vue-tsc: specifier: ^2.0.0 version: 2.0.7(typescript@5.4.3) @@ -582,13 +591,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.57.0 + eslint: 9.0.0 eslint-visitor-keys: 3.4.3 dev: true @@ -597,14 +606,14 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/eslintrc@3.0.2: + resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.0.1 + globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -614,16 +623,16 @@ packages: - supports-color dev: true - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.0.0: + resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.12.3: + resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -635,8 +644,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true /@iconify/json@2.2.196: @@ -984,7 +993,7 @@ packages: resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} dev: false - /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0)(eslint@9.0.0)(typescript@5.4.3): resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -996,13 +1005,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.4.0(eslint@9.0.0)(typescript@5.4.3) '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/type-utils': 7.4.0(eslint@9.0.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.4.0(eslint@9.0.0)(typescript@5.4.3) '@typescript-eslint/visitor-keys': 7.4.0 debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.0.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -1013,7 +1022,36 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.3): + resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/type-utils': 7.6.0(eslint@9.0.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.6.0 + debug: 4.3.4 + eslint: 9.0.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.4.0(eslint@9.0.0)(typescript@5.4.3): resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -1028,7 +1066,28 @@ packages: '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) '@typescript-eslint/visitor-keys': 7.4.0 debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.0.0 + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.6.0(eslint@9.0.0)(typescript@5.4.3): + resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.6.0 + debug: 4.3.4 + eslint: 9.0.0 typescript: 5.4.3 transitivePeerDependencies: - supports-color @@ -1042,7 +1101,15 @@ packages: '@typescript-eslint/visitor-keys': 7.4.0 dev: true - /@typescript-eslint/type-utils@7.4.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/scope-manager@7.6.0: + resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 + dev: true + + /@typescript-eslint/type-utils@7.4.0(eslint@9.0.0)(typescript@5.4.3): resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -1053,9 +1120,29 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.4.0(eslint@9.0.0)(typescript@5.4.3) debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.0.0 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@7.6.0(eslint@9.0.0)(typescript@5.4.3): + resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.3) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.3) + debug: 4.3.4 + eslint: 9.0.0 ts-api-utils: 1.3.0(typescript@5.4.3) typescript: 5.4.3 transitivePeerDependencies: @@ -1067,6 +1154,11 @@ packages: engines: {node: ^18.18.0 || >=20.0.0} dev: true + /@typescript-eslint/types@7.6.0: + resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + /@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3): resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1089,19 +1181,60 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.4.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.3): + resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@7.4.0(eslint@9.0.0)(typescript@5.4.3): resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.4.0 '@typescript-eslint/types': 7.4.0 '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - eslint: 8.57.0 + eslint: 9.0.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.4.3): + resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.3) + eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -1116,8 +1249,12 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + /@typescript-eslint/visitor-keys@7.6.0: + resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.6.0 + eslint-visitor-keys: 3.4.3 dev: true /@vitejs/plugin-vue@5.0.4(vite@5.2.7)(vue@3.4.21): @@ -1741,13 +1878,6 @@ packages: esutils: 2.0.3 dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: @@ -1943,17 +2073,17 @@ packages: source-map: 0.6.1 dev: false - /eslint-compat-utils@0.5.0(eslint@8.57.0): + /eslint-compat-utils@0.5.0(eslint@9.0.0): resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 semver: 7.6.0 dev: true - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@9.0.0): resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1961,35 +2091,35 @@ packages: eslint-plugin-import: ^2.25.2 dependencies: confusing-browser-globals: 1.0.11 - eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint@8.57.0) + eslint: 9.0.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint@9.0.0) object.assign: 4.1.5 object.entries: 1.1.8 semver: 7.6.0 dev: true - /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@9.0.0): resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} peerDependencies: '@typescript-eslint/eslint-plugin': ^7.0.0 '@typescript-eslint/parser': ^7.0.0 eslint: ^8.56.0 dependencies: - '@typescript-eslint/eslint-plugin': 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) + '@typescript-eslint/eslint-plugin': 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@9.0.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.4.0(eslint@9.0.0)(typescript@5.4.3) + eslint: 9.0.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@9.0.0) transitivePeerDependencies: - eslint-plugin-import dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): + /eslint-config-prettier@9.1.0(eslint@9.0.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -2002,7 +2132,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint@9.0.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -2023,15 +2153,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.4.0(eslint@9.0.0)(typescript@5.4.3) debug: 3.2.7 - eslint: 8.57.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.4.0)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.4.0)(eslint@9.0.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -2041,16 +2171,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.4.0(eslint@9.0.0)(typescript@5.4.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint@9.0.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -2066,7 +2196,7 @@ packages: - supports-color dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2080,65 +2210,65 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) + eslint: 9.0.0 + eslint-config-prettier: 9.1.0(eslint@9.0.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.57.0): + /eslint-plugin-promise@6.1.1(eslint@9.0.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true - /eslint-plugin-simple-import-sort@12.0.0(eslint@8.57.0): + /eslint-plugin-simple-import-sort@12.0.0(eslint@9.0.0): resolution: {integrity: sha512-8o0dVEdAkYap0Cn5kNeklaKcT1nUsa3LITWEuFk3nJifOoD+5JQGoyDUW2W/iPWwBsNBJpyJS9y4je/BgxLcyQ==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true - /eslint-plugin-vue-scoped-css@2.8.0(eslint@8.57.0)(vue-eslint-parser@9.4.2): + /eslint-plugin-vue-scoped-css@2.8.0(eslint@9.0.0)(vue-eslint-parser@9.4.2): resolution: {integrity: sha512-JXb3Um4+AhuDGxSX6FAGCI0p811xF7W8L7yxC8wmAEZEI/teTjlpC09noqQZHXn53RZ/TGQJ8Onaq4teYLxBbg==} engines: {node: ^12.22 || ^14.17 || >=16} peerDependencies: eslint: '>=5.0.0' vue-eslint-parser: '>=7.1.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) lodash: 4.17.21 postcss: 8.4.38 postcss-safe-parser: 6.0.0(postcss@8.4.38) postcss-scss: 4.0.9(postcss@8.4.38) postcss-selector-parser: 6.0.16 postcss-styl: 0.12.3 - vue-eslint-parser: 9.4.2(eslint@8.57.0) + vue-eslint-parser: 9.4.2(eslint@9.0.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-vue@9.24.0(eslint@8.57.0): + /eslint-plugin-vue@9.24.0(eslint@9.0.0): resolution: {integrity: sha512-9SkJMvF8NGMT9aQCwFc5rj8Wo1XWSMSHk36i7ZwdI614BU7sIOR28ZjuFPKp8YGymZN12BSEbiSwa7qikp+PBw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + eslint: 9.0.0 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.16 semver: 7.6.0 - vue-eslint-parser: 9.4.2(eslint@8.57.0) + vue-eslint-parser: 9.4.2(eslint@9.0.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -2152,45 +2282,54 @@ packages: estraverse: 5.3.0 dev: true + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.0.0: + resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.0.0 + '@humanwhocodes/config-array': 0.12.3 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -2203,6 +2342,15 @@ packages: - supports-color dev: true + /espree@10.0.1: + resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 4.0.0 + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2303,11 +2451,11 @@ packages: dependencies: reusify: 1.0.4 - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 dev: true /fill-range@7.0.1: @@ -2324,13 +2472,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 dev: true /flatted@3.3.1: @@ -2464,6 +2611,16 @@ packages: type-fest: 0.20.2 dev: true + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true + + /globals@15.0.0: + resolution: {integrity: sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==} + engines: {node: '>=18'} + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -2921,6 +3078,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true @@ -3298,13 +3462,6 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - /rollup@4.13.2: resolution: {integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3668,6 +3825,25 @@ packages: possible-typed-array-names: 1.0.0 dev: true + /typescript-eslint@7.6.0(eslint@9.0.0)(typescript@5.4.3): + resolution: {integrity: sha512-LY6vH6F1l5jpGqRtU+uK4+mOecIb4Cd4kaz1hAiJrgnNiHUA8wiw8BkJyYS+MRLM69F1QuSKwtGlQqnGl1Rc6w==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.3) + eslint: 9.0.0 + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + dev: true + /typescript@5.4.3: resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} @@ -3869,14 +4045,14 @@ packages: vue: 3.4.21(typescript@5.4.3) dev: false - /vue-eslint-parser@9.4.2(eslint@8.57.0): + /vue-eslint-parser@9.4.2(eslint@9.0.0): resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 diff --git a/web/tsconfig.eslint.json b/web/tsconfig.eslint.json index 8aa1c0ce6..004fde3c1 100644 --- a/web/tsconfig.eslint.json +++ b/web/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "extends": "./tsconfig.json", - "include": [".eslintrc.js", "jest.config.ts", "vite.config.ts", "windi.config.ts", "src", "test", "components.d.ts"] + "include": ["eslint.config.js", ".eslintrc.js", "jest.config.ts", "vite.config.ts", "windi.config.ts", "src", "test", "components.d.ts"] }