summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGusted <postmaster@gusted.xyz>2024-10-23 07:07:18 +0200
committerGusted <postmaster@gusted.xyz>2024-10-23 15:28:43 +0200
commit7ad83fce40170b6a970eadc75a33c32479deffb6 (patch)
tree08e81676b6431816f20378cd89980950c92b8022
parentMerge pull request 'Update dependency eslint-plugin-unicorn to v56 (forgejo)'... (diff)
downloadforgejo-7ad83fce40170b6a970eadc75a33c32479deffb6.tar.xz
forgejo-7ad83fce40170b6a970eadc75a33c32479deffb6.zip
chore: move to Eslint flat config
Make the big move to Eslint flat config format. The outcome of Eslint still should be the same, but some things has changed: - `eslint-plugin-github` is dropped, flat configs have been out for a while and most eslint plugins support it, but for no reason and no activity in sight this plugin is likely not going to support flat config for a while and to avoid other plugins not being able to update (as they are requiring flat configs) drop the github rules. - Nested configs don't work properly and are unified into the root eslint config, this unification did cause some conflicts and thats why the `import-x` is in a seperate 'group' to exclude targeting Vue files. - The `eslint-plugin-i` is deprecated and `esplint-plugin-import-x` is its succesor which has better support for flat configs, the same rules are still applied. The majority of the flat config was generated by `@eslint/migrate-config` tool.
-rw-r--r--.eslintrc.yaml806
-rw-r--r--Makefile6
-rw-r--r--eslint.config.mjs1159
-rw-r--r--package-lock.json864
-rw-r--r--package.json6
-rw-r--r--tests/e2e/.eslintrc.yaml24
-rwxr-xr-xtools/generate-images.js4
-rw-r--r--web_src/js/components/.eslintrc.yaml21
8 files changed, 1425 insertions, 1465 deletions
diff --git a/.eslintrc.yaml b/.eslintrc.yaml
deleted file mode 100644
index a4967d170e..0000000000
--- a/.eslintrc.yaml
+++ /dev/null
@@ -1,806 +0,0 @@
-root: true
-reportUnusedDisableDirectives: true
-
-ignorePatterns:
- - /web_src/js/vendor
- - /web_src/fomantic
- - /public/assets/js
-
-parserOptions:
- sourceType: module
- ecmaVersion: latest
-
-plugins:
- - "@eslint-community/eslint-plugin-eslint-comments"
- - "@stylistic/eslint-plugin-js"
- - "@vitest"
- - eslint-plugin-array-func
- - eslint-plugin-github
- - eslint-plugin-i
- - eslint-plugin-no-jquery
- - eslint-plugin-no-use-extend-native
- - eslint-plugin-regexp
- - eslint-plugin-sonarjs
- - eslint-plugin-unicorn
- - eslint-plugin-vitest-globals
- - eslint-plugin-wc
-
-env:
- es2024: true
- node: true
-
-overrides:
- - files: ["web_src/**/*"]
- globals:
- __webpack_public_path__: true
- process: false # https://github.com/webpack/webpack/issues/15833
- - files: ["web_src/**/*", "docs/**/*"]
- env:
- browser: true
- node: false
- - files: ["web_src/**/*worker.*"]
- env:
- worker: true
- rules:
- no-restricted-globals: [2, addEventListener, blur, close, closed, confirm, defaultStatus, defaultstatus, error, event, external, find, focus, frameElement, frames, history, innerHeight, innerWidth, isFinite, isNaN, length, locationbar, menubar, moveBy, moveTo, name, onblur, onerror, onfocus, onload, onresize, onunload, open, opener, opera, outerHeight, outerWidth, pageXOffset, pageYOffset, parent, print, removeEventListener, resizeBy, resizeTo, screen, screenLeft, screenTop, screenX, screenY, scroll, scrollbars, scrollBy, scrollTo, scrollX, scrollY, status, statusbar, stop, toolbar, top]
- - files: ["*.config.*"]
- rules:
- i/no-unused-modules: [0]
- - files: ["**/*.test.*", "web_src/js/test/setup.js"]
- env:
- vitest-globals/env: true
- rules:
- "@vitest/consistent-test-filename": [0]
- "@vitest/consistent-test-it": [0]
- "@vitest/expect-expect": [0]
- "@vitest/max-expects": [0]
- "@vitest/max-nested-describe": [0]
- "@vitest/no-alias-methods": [0]
- "@vitest/no-commented-out-tests": [0]
- "@vitest/no-conditional-expect": [0]
- "@vitest/no-conditional-in-test": [0]
- "@vitest/no-conditional-tests": [0]
- "@vitest/no-disabled-tests": [0]
- "@vitest/no-done-callback": [0]
- "@vitest/no-duplicate-hooks": [0]
- "@vitest/no-focused-tests": [0]
- "@vitest/no-hooks": [0]
- "@vitest/no-identical-title": [2]
- "@vitest/no-interpolation-in-snapshots": [0]
- "@vitest/no-large-snapshots": [0]
- "@vitest/no-mocks-import": [0]
- "@vitest/no-restricted-matchers": [0]
- "@vitest/no-restricted-vi-methods": [0]
- "@vitest/no-standalone-expect": [0]
- "@vitest/no-test-prefixes": [0]
- "@vitest/no-test-return-statement": [0]
- "@vitest/prefer-called-with": [0]
- "@vitest/prefer-comparison-matcher": [0]
- "@vitest/prefer-each": [0]
- "@vitest/prefer-equality-matcher": [0]
- "@vitest/prefer-expect-resolves": [0]
- "@vitest/prefer-hooks-in-order": [0]
- "@vitest/prefer-hooks-on-top": [2]
- "@vitest/prefer-lowercase-title": [0]
- "@vitest/prefer-mock-promise-shorthand": [0]
- "@vitest/prefer-snapshot-hint": [0]
- "@vitest/prefer-spy-on": [0]
- "@vitest/prefer-strict-equal": [0]
- "@vitest/prefer-to-be": [0]
- "@vitest/prefer-to-be-falsy": [0]
- "@vitest/prefer-to-be-object": [0]
- "@vitest/prefer-to-be-truthy": [0]
- "@vitest/prefer-to-contain": [0]
- "@vitest/prefer-to-have-length": [0]
- "@vitest/prefer-todo": [0]
- "@vitest/require-hook": [0]
- "@vitest/require-to-throw-message": [0]
- "@vitest/require-top-level-describe": [0]
- "@vitest/valid-describe-callback": [2]
- "@vitest/valid-expect": [2]
- "@vitest/valid-title": [2]
- - files: ["web_src/js/modules/fetch.js", "web_src/js/standalone/**/*"]
- rules:
- no-restricted-syntax: [2, WithStatement, ForInStatement, LabeledStatement, SequenceExpression]
-
-rules:
- "@eslint-community/eslint-comments/disable-enable-pair": [2]
- "@eslint-community/eslint-comments/no-aggregating-enable": [2]
- "@eslint-community/eslint-comments/no-duplicate-disable": [2]
- "@eslint-community/eslint-comments/no-restricted-disable": [0]
- "@eslint-community/eslint-comments/no-unlimited-disable": [2]
- "@eslint-community/eslint-comments/no-unused-disable": [2]
- "@eslint-community/eslint-comments/no-unused-enable": [2]
- "@eslint-community/eslint-comments/no-use": [0]
- "@eslint-community/eslint-comments/require-description": [0]
- "@stylistic/js/array-bracket-newline": [0]
- "@stylistic/js/array-bracket-spacing": [2, never]
- "@stylistic/js/array-element-newline": [0]
- "@stylistic/js/arrow-parens": [2, always]
- "@stylistic/js/arrow-spacing": [2, {before: true, after: true}]
- "@stylistic/js/block-spacing": [0]
- "@stylistic/js/brace-style": [2, 1tbs, {allowSingleLine: true}]
- "@stylistic/js/comma-dangle": [2, always-multiline]
- "@stylistic/js/comma-spacing": [2, {before: false, after: true}]
- "@stylistic/js/comma-style": [2, last]
- "@stylistic/js/computed-property-spacing": [2, never]
- "@stylistic/js/dot-location": [2, property]
- "@stylistic/js/eol-last": [2]
- "@stylistic/js/function-call-spacing": [2, never]
- "@stylistic/js/function-call-argument-newline": [0]
- "@stylistic/js/function-paren-newline": [0]
- "@stylistic/js/generator-star-spacing": [0]
- "@stylistic/js/implicit-arrow-linebreak": [0]
- "@stylistic/js/indent": [2, 2, {ignoreComments: true, SwitchCase: 1}]
- "@stylistic/js/key-spacing": [2]
- "@stylistic/js/keyword-spacing": [2]
- "@stylistic/js/linebreak-style": [2, unix]
- "@stylistic/js/lines-around-comment": [0]
- "@stylistic/js/lines-between-class-members": [0]
- "@stylistic/js/max-len": [0]
- "@stylistic/js/max-statements-per-line": [0]
- "@stylistic/js/multiline-ternary": [0]
- "@stylistic/js/new-parens": [2]
- "@stylistic/js/newline-per-chained-call": [0]
- "@stylistic/js/no-confusing-arrow": [0]
- "@stylistic/js/no-extra-parens": [0]
- "@stylistic/js/no-extra-semi": [2]
- "@stylistic/js/no-floating-decimal": [0]
- "@stylistic/js/no-mixed-operators": [0]
- "@stylistic/js/no-mixed-spaces-and-tabs": [2]
- "@stylistic/js/no-multi-spaces": [2, {ignoreEOLComments: true, exceptions: {Property: true}}]
- "@stylistic/js/no-multiple-empty-lines": [2, {max: 1, maxEOF: 0, maxBOF: 0}]
- "@stylistic/js/no-tabs": [2]
- "@stylistic/js/no-trailing-spaces": [2]
- "@stylistic/js/no-whitespace-before-property": [2]
- "@stylistic/js/nonblock-statement-body-position": [2]
- "@stylistic/js/object-curly-newline": [0]
- "@stylistic/js/object-curly-spacing": [2, never]
- "@stylistic/js/object-property-newline": [0]
- "@stylistic/js/one-var-declaration-per-line": [0]
- "@stylistic/js/operator-linebreak": [2, after]
- "@stylistic/js/padded-blocks": [2, never]
- "@stylistic/js/padding-line-between-statements": [0]
- "@stylistic/js/quote-props": [0]
- "@stylistic/js/quotes": [2, single, {avoidEscape: true, allowTemplateLiterals: true}]
- "@stylistic/js/rest-spread-spacing": [2, never]
- "@stylistic/js/semi": [2, always, {omitLastInOneLineBlock: true}]
- "@stylistic/js/semi-spacing": [2, {before: false, after: true}]
- "@stylistic/js/semi-style": [2, last]
- "@stylistic/js/space-before-blocks": [2, always]
- "@stylistic/js/space-before-function-paren": [2, {anonymous: ignore, named: never, asyncArrow: always}]
- "@stylistic/js/space-in-parens": [2, never]
- "@stylistic/js/space-infix-ops": [2]
- "@stylistic/js/space-unary-ops": [2]
- "@stylistic/js/spaced-comment": [2, always]
- "@stylistic/js/switch-colon-spacing": [2]
- "@stylistic/js/template-curly-spacing": [2, never]
- "@stylistic/js/template-tag-spacing": [2, never]
- "@stylistic/js/wrap-iife": [2, inside]
- "@stylistic/js/wrap-regex": [0]
- "@stylistic/js/yield-star-spacing": [2, after]
- accessor-pairs: [2]
- array-callback-return: [2, {checkForEach: true}]
- array-func/avoid-reverse: [2]
- array-func/from-map: [2]
- array-func/no-unnecessary-this-arg: [2]
- array-func/prefer-array-from: [2]
- array-func/prefer-flat-map: [0] # handled by unicorn/prefer-array-flat-map
- array-func/prefer-flat: [0] # handled by unicorn/prefer-array-flat
- arrow-body-style: [0]
- block-scoped-var: [2]
- camelcase: [0]
- capitalized-comments: [0]
- class-methods-use-this: [0]
- complexity: [0]
- consistent-return: [0]
- consistent-this: [0]
- constructor-super: [2]
- curly: [0]
- default-case-last: [2]
- default-case: [0]
- default-param-last: [0]
- dot-notation: [0]
- eqeqeq: [2]
- for-direction: [2]
- func-name-matching: [2]
- func-names: [0]
- func-style: [0]
- getter-return: [2]
- github/a11y-aria-label-is-well-formatted: [0]
- github/a11y-no-title-attribute: [0]
- github/a11y-no-visually-hidden-interactive-element: [0]
- github/a11y-role-supports-aria-props: [0]
- github/a11y-svg-has-accessible-name: [0]
- github/array-foreach: [0]
- github/async-currenttarget: [2]
- github/async-preventdefault: [2]
- github/authenticity-token: [0]
- github/get-attribute: [0]
- github/js-class-name: [0]
- github/no-blur: [0]
- github/no-d-none: [0]
- github/no-dataset: [2]
- github/no-dynamic-script-tag: [2]
- github/no-implicit-buggy-globals: [2]
- github/no-inner-html: [0]
- github/no-innerText: [2]
- github/no-then: [2]
- github/no-useless-passive: [2]
- github/prefer-observers: [2]
- github/require-passive-events: [2]
- github/unescaped-html-literal: [0]
- grouped-accessor-pairs: [2]
- guard-for-in: [0]
- id-blacklist: [0]
- id-length: [0]
- id-match: [0]
- i/consistent-type-specifier-style: [0]
- i/default: [0]
- i/dynamic-import-chunkname: [0]
- i/export: [2]
- i/exports-last: [0]
- i/extensions: [2, always, {ignorePackages: true}]
- i/first: [2]
- i/group-exports: [0]
- i/max-dependencies: [0]
- i/named: [2]
- i/namespace: [0]
- i/newline-after-import: [0]
- i/no-absolute-path: [0]
- i/no-amd: [2]
- i/no-anonymous-default-export: [0]
- i/no-commonjs: [2]
- i/no-cycle: [2, {ignoreExternal: true, maxDepth: 1}]
- i/no-default-export: [0]
- i/no-deprecated: [0]
- i/no-dynamic-require: [0]
- i/no-empty-named-blocks: [2]
- i/no-extraneous-dependencies: [2]
- i/no-import-module-exports: [0]
- i/no-internal-modules: [0]
- i/no-mutable-exports: [0]
- i/no-named-as-default-member: [0]
- i/no-named-as-default: [2]
- i/no-named-default: [0]
- i/no-named-export: [0]
- i/no-namespace: [0]
- i/no-nodejs-modules: [0]
- i/no-relative-packages: [0]
- i/no-relative-parent-imports: [0]
- i/no-restricted-paths: [0]
- i/no-self-import: [2]
- i/no-unassigned-import: [0]
- i/no-unresolved: [2, {commonjs: true, ignore: ["\\?.+$", ^vitest/]}]
- i/no-unused-modules: [2, {unusedExports: true}]
- i/no-useless-path-segments: [2, {commonjs: true}]
- i/no-webpack-loader-syntax: [2]
- i/order: [0]
- i/prefer-default-export: [0]
- i/unambiguous: [0]
- init-declarations: [0]
- line-comment-position: [0]
- logical-assignment-operators: [0]
- max-classes-per-file: [0]
- max-depth: [0]
- max-lines-per-function: [0]
- max-lines: [0]
- max-nested-callbacks: [0]
- max-params: [0]
- max-statements: [0]
- multiline-comment-style: [2, separate-lines]
- new-cap: [0]
- no-alert: [0]
- no-array-constructor: [2]
- no-async-promise-executor: [0]
- no-await-in-loop: [0]
- no-bitwise: [0]
- no-buffer-constructor: [0]
- no-caller: [2]
- no-case-declarations: [2]
- no-class-assign: [2]
- no-compare-neg-zero: [2]
- no-cond-assign: [2, except-parens]
- no-console: [1, {allow: [debug, info, warn, error]}]
- no-const-assign: [2]
- no-constant-binary-expression: [2]
- no-constant-condition: [0]
- no-constructor-return: [2]
- no-continue: [0]
- no-control-regex: [0]
- no-debugger: [1]
- no-delete-var: [2]
- no-div-regex: [0]
- no-dupe-args: [2]
- no-dupe-class-members: [2]
- no-dupe-else-if: [2]
- no-dupe-keys: [2]
- no-duplicate-case: [2]
- no-duplicate-imports: [2]
- no-else-return: [2]
- no-empty-character-class: [2]
- no-empty-function: [0]
- no-empty-pattern: [2]
- no-empty-static-block: [2]
- no-empty: [2, {allowEmptyCatch: true}]
- no-eq-null: [2]
- no-eval: [2]
- no-ex-assign: [2]
- no-extend-native: [2]
- no-extra-bind: [2]
- no-extra-boolean-cast: [2]
- no-extra-label: [0]
- no-fallthrough: [2]
- no-func-assign: [2]
- no-global-assign: [2]
- no-implicit-coercion: [2]
- no-implicit-globals: [0]
- no-implied-eval: [2]
- no-import-assign: [2]
- no-inline-comments: [0]
- no-inner-declarations: [2]
- no-invalid-regexp: [2]
- no-invalid-this: [0]
- no-irregular-whitespace: [2]
- no-iterator: [2]
- no-jquery/no-ajax-events: [2]
- no-jquery/no-ajax: [2]
- no-jquery/no-and-self: [2]
- no-jquery/no-animate-toggle: [2]
- no-jquery/no-animate: [2]
- no-jquery/no-append-html: [2]
- no-jquery/no-attr: [2]
- no-jquery/no-bind: [2]
- no-jquery/no-box-model: [2]
- no-jquery/no-browser: [2]
- no-jquery/no-camel-case: [2]
- no-jquery/no-class-state: [2]
- no-jquery/no-class: [0]
- no-jquery/no-clone: [2]
- no-jquery/no-closest: [0]
- no-jquery/no-constructor-attributes: [2]
- no-jquery/no-contains: [2]
- no-jquery/no-context-prop: [2]
- no-jquery/no-css: [2]
- no-jquery/no-data: [0]
- no-jquery/no-deferred: [2]
- no-jquery/no-delegate: [2]
- no-jquery/no-each-collection: [0]
- no-jquery/no-each-util: [0]
- no-jquery/no-each: [0]
- no-jquery/no-error-shorthand: [2]
- no-jquery/no-error: [2]
- no-jquery/no-escape-selector: [2]
- no-jquery/no-event-shorthand: [2]
- no-jquery/no-extend: [2]
- no-jquery/no-fade: [2]
- no-jquery/no-filter: [0]
- no-jquery/no-find-collection: [0]
- no-jquery/no-find-util: [2]
- no-jquery/no-find: [0]
- no-jquery/no-fx-interval: [2]
- no-jquery/no-global-eval: [2]
- no-jquery/no-global-selector: [0]
- no-jquery/no-grep: [2]
- no-jquery/no-has: [2]
- no-jquery/no-hold-ready: [2]
- no-jquery/no-html: [0]
- no-jquery/no-in-array: [2]
- no-jquery/no-is-array: [2]
- no-jquery/no-is-empty-object: [2]
- no-jquery/no-is-function: [2]
- no-jquery/no-is-numeric: [2]
- no-jquery/no-is-plain-object: [2]
- no-jquery/no-is-window: [2]
- no-jquery/no-is: [2]
- no-jquery/no-jquery-constructor: [0]
- no-jquery/no-live: [2]
- no-jquery/no-load-shorthand: [2]
- no-jquery/no-load: [2]
- no-jquery/no-map-collection: [0]
- no-jquery/no-map-util: [2]
- no-jquery/no-map: [2]
- no-jquery/no-merge: [2]
- no-jquery/no-node-name: [2]
- no-jquery/no-noop: [2]
- no-jquery/no-now: [2]
- no-jquery/no-on-ready: [2]
- no-jquery/no-other-methods: [0]
- no-jquery/no-other-utils: [2]
- no-jquery/no-param: [2]
- no-jquery/no-parent: [0]
- no-jquery/no-parents: [2]
- no-jquery/no-parse-html-literal: [2]
- no-jquery/no-parse-html: [2]
- no-jquery/no-parse-json: [2]
- no-jquery/no-parse-xml: [2]
- no-jquery/no-prop: [2]
- no-jquery/no-proxy: [2]
- no-jquery/no-ready-shorthand: [2]
- no-jquery/no-ready: [2]
- no-jquery/no-selector-prop: [2]
- no-jquery/no-serialize: [2]
- no-jquery/no-size: [2]
- no-jquery/no-sizzle: [0]
- no-jquery/no-slide: [2]
- no-jquery/no-sub: [2]
- no-jquery/no-support: [2]
- no-jquery/no-text: [0]
- no-jquery/no-trigger: [0]
- no-jquery/no-trim: [2]
- no-jquery/no-type: [2]
- no-jquery/no-unique: [2]
- no-jquery/no-unload-shorthand: [2]
- no-jquery/no-val: [0]
- no-jquery/no-visibility: [2]
- no-jquery/no-when: [2]
- no-jquery/no-wrap: [2]
- no-jquery/variable-pattern: [2]
- no-label-var: [2]
- no-labels: [0] # handled by no-restricted-syntax
- no-lone-blocks: [2]
- no-lonely-if: [0]
- no-loop-func: [0]
- no-loss-of-precision: [2]
- no-magic-numbers: [0]
- no-misleading-character-class: [2]
- no-multi-assign: [0]
- no-multi-str: [2]
- no-negated-condition: [0]
- no-nested-ternary: [0]
- no-new-func: [2]
- no-new-native-nonconstructor: [2]
- no-new-object: [2]
- no-new-symbol: [2]
- no-new-wrappers: [2]
- no-new: [0]
- no-nonoctal-decimal-escape: [2]
- no-obj-calls: [2]
- no-octal-escape: [2]
- no-octal: [2]
- no-param-reassign: [0]
- no-plusplus: [0]
- no-promise-executor-return: [0]
- no-proto: [2]
- no-prototype-builtins: [2]
- no-redeclare: [2]
- no-regex-spaces: [2]
- no-restricted-exports: [0]
- no-restricted-globals: [2, addEventListener, blur, close, closed, confirm, defaultStatus, defaultstatus, error, event, external, find, focus, frameElement, frames, history, innerHeight, innerWidth, isFinite, isNaN, length, location, locationbar, menubar, moveBy, moveTo, name, onblur, onerror, onfocus, onload, onresize, onunload, open, opener, opera, outerHeight, outerWidth, pageXOffset, pageYOffset, parent, print, removeEventListener, resizeBy, resizeTo, screen, screenLeft, screenTop, screenX, screenY, scroll, scrollbars, scrollBy, scrollTo, scrollX, scrollY, self, status, statusbar, stop, toolbar, top, __dirname, __filename]
- no-restricted-imports: [0]
- no-restricted-syntax: [2, WithStatement, ForInStatement, LabeledStatement, SequenceExpression, {selector: "CallExpression[callee.name='fetch']", message: "use modules/fetch.js instead"}]
- no-return-assign: [0]
- no-script-url: [2]
- no-self-assign: [2, {props: true}]
- no-self-compare: [2]
- no-sequences: [2]
- no-setter-return: [2]
- no-shadow-restricted-names: [2]
- no-shadow: [0]
- no-sparse-arrays: [2]
- no-template-curly-in-string: [2]
- no-ternary: [0]
- no-this-before-super: [2]
- no-throw-literal: [2]
- no-undef-init: [2]
- no-undef: [2, {typeof: true}]
- no-undefined: [0]
- no-underscore-dangle: [0]
- no-unexpected-multiline: [2]
- no-unmodified-loop-condition: [2]
- no-unneeded-ternary: [2]
- no-unreachable-loop: [2]
- no-unreachable: [2]
- no-unsafe-finally: [2]
- no-unsafe-negation: [2]
- no-unused-expressions: [2]
- no-unused-labels: [2]
- no-unused-private-class-members: [2]
- no-unused-vars: [2, {args: all, argsIgnorePattern: ^_, varsIgnorePattern: ^_, caughtErrorsIgnorePattern: ^_, destructuredArrayIgnorePattern: ^_, ignoreRestSiblings: false}]
- no-use-before-define: [2, {functions: false, classes: true, variables: true, allowNamedExports: true}]
- no-use-extend-native/no-use-extend-native: [2]
- no-useless-backreference: [2]
- no-useless-call: [2]
- no-useless-catch: [2]
- no-useless-computed-key: [2]
- no-useless-concat: [2]
- no-useless-constructor: [2]
- no-useless-escape: [2]
- no-useless-rename: [2]
- no-useless-return: [2]
- no-var: [2]
- no-void: [2]
- no-warning-comments: [0]
- no-with: [0] # handled by no-restricted-syntax
- object-shorthand: [2, always]
- one-var-declaration-per-line: [0]
- one-var: [0]
- operator-assignment: [2, always]
- operator-linebreak: [2, after]
- prefer-arrow-callback: [2, {allowNamedFunctions: true, allowUnboundThis: true}]
- prefer-const: [2, {destructuring: all, ignoreReadBeforeAssign: true}]
- prefer-destructuring: [0]
- prefer-exponentiation-operator: [2]
- prefer-named-capture-group: [0]
- prefer-numeric-literals: [2]
- prefer-object-has-own: [2]
- prefer-object-spread: [2]
- prefer-promise-reject-errors: [2, {allowEmptyReject: false}]
- prefer-regex-literals: [2]
- prefer-rest-params: [2]
- prefer-spread: [2]
- prefer-template: [2]
- radix: [2, as-needed]
- regexp/confusing-quantifier: [2]
- regexp/control-character-escape: [2]
- regexp/hexadecimal-escape: [0]
- regexp/letter-case: [0]
- regexp/match-any: [2]
- regexp/negation: [2]
- regexp/no-contradiction-with-assertion: [0]
- regexp/no-control-character: [0]
- regexp/no-dupe-characters-character-class: [2]
- regexp/no-dupe-disjunctions: [2]
- regexp/no-empty-alternative: [2]
- regexp/no-empty-capturing-group: [2]
- regexp/no-empty-character-class: [0]
- regexp/no-empty-group: [2]
- regexp/no-empty-lookarounds-assertion: [2]
- regexp/no-empty-string-literal: [2]
- regexp/no-escape-backspace: [2]
- regexp/no-extra-lookaround-assertions: [0]
- regexp/no-invalid-regexp: [2]
- regexp/no-invisible-character: [2]
- regexp/no-lazy-ends: [2]
- regexp/no-legacy-features: [2]
- regexp/no-misleading-capturing-group: [0]
- regexp/no-misleading-unicode-character: [0]
- regexp/no-missing-g-flag: [2]
- regexp/no-non-standard-flag: [2]
- regexp/no-obscure-range: [2]
- regexp/no-octal: [2]
- regexp/no-optional-assertion: [2]
- regexp/no-potentially-useless-backreference: [2]
- regexp/no-standalone-backslash: [2]
- regexp/no-super-linear-backtracking: [0]
- regexp/no-super-linear-move: [0]
- regexp/no-trivially-nested-assertion: [2]
- regexp/no-trivially-nested-quantifier: [2]
- regexp/no-unused-capturing-group: [0]
- regexp/no-useless-assertions: [2]
- regexp/no-useless-backreference: [2]
- regexp/no-useless-character-class: [2]
- regexp/no-useless-dollar-replacements: [2]
- regexp/no-useless-escape: [2]
- regexp/no-useless-flag: [2]
- regexp/no-useless-lazy: [2]
- regexp/no-useless-non-capturing-group: [2]
- regexp/no-useless-quantifier: [2]
- regexp/no-useless-range: [2]
- regexp/no-useless-set-operand: [2]
- regexp/no-useless-string-literal: [2]
- regexp/no-useless-two-nums-quantifier: [2]
- regexp/no-zero-quantifier: [2]
- regexp/optimal-lookaround-quantifier: [2]
- regexp/optimal-quantifier-concatenation: [0]
- regexp/prefer-character-class: [0]
- regexp/prefer-d: [0]
- regexp/prefer-escape-replacement-dollar-char: [0]
- regexp/prefer-lookaround: [0]
- regexp/prefer-named-backreference: [0]
- regexp/prefer-named-capture-group: [0]
- regexp/prefer-named-replacement: [0]
- regexp/prefer-plus-quantifier: [2]
- regexp/prefer-predefined-assertion: [2]
- regexp/prefer-quantifier: [0]
- regexp/prefer-question-quantifier: [2]
- regexp/prefer-range: [2]
- regexp/prefer-regexp-exec: [2]
- regexp/prefer-regexp-test: [2]
- regexp/prefer-result-array-groups: [0]
- regexp/prefer-set-operation: [2]
- regexp/prefer-star-quantifier: [2]
- regexp/prefer-unicode-codepoint-escapes: [2]
- regexp/prefer-w: [0]
- regexp/require-unicode-regexp: [0]
- regexp/simplify-set-operations: [2]
- regexp/sort-alternatives: [0]
- regexp/sort-character-class-elements: [0]
- regexp/sort-flags: [0]
- regexp/strict: [2]
- regexp/unicode-escape: [0]
- regexp/use-ignore-case: [0]
- require-atomic-updates: [0]
- require-await: [0]
- require-unicode-regexp: [0]
- require-yield: [2]
- sonarjs/cognitive-complexity: [0]
- sonarjs/elseif-without-else: [0]
- sonarjs/max-switch-cases: [0]
- sonarjs/no-all-duplicated-branches: [2]
- sonarjs/no-collapsible-if: [0]
- sonarjs/no-collection-size-mischeck: [2]
- sonarjs/no-duplicate-string: [0]
- sonarjs/no-duplicated-branches: [0]
- sonarjs/no-element-overwrite: [2]
- sonarjs/no-empty-collection: [2]
- sonarjs/no-extra-arguments: [2]
- sonarjs/no-gratuitous-expressions: [2]
- sonarjs/no-identical-conditions: [2]
- sonarjs/no-identical-expressions: [2]
- sonarjs/no-identical-functions: [2, 5]
- sonarjs/no-ignored-return: [2]
- sonarjs/no-inverted-boolean-check: [2]
- sonarjs/no-nested-switch: [0]
- sonarjs/no-nested-template-literals: [0]
- sonarjs/no-one-iteration-loop: [2]
- sonarjs/no-redundant-boolean: [2]
- sonarjs/no-redundant-jump: [2]
- sonarjs/no-same-line-conditional: [2]
- sonarjs/no-small-switch: [0]
- sonarjs/no-unused-collection: [2]
- sonarjs/no-use-of-empty-return-value: [2]
- sonarjs/no-useless-catch: [2]
- sonarjs/non-existent-operator: [2]
- sonarjs/prefer-immediate-return: [0]
- sonarjs/prefer-object-literal: [0]
- sonarjs/prefer-single-boolean-return: [0]
- sonarjs/prefer-while: [2]
- sort-imports: [0]
- sort-keys: [0]
- sort-vars: [0]
- strict: [0]
- symbol-description: [2]
- unicode-bom: [2, never]
- unicorn/better-regex: [0]
- unicorn/catch-error-name: [0]
- unicorn/consistent-destructuring: [2]
- unicorn/consistent-empty-array-spread: [2]
- unicorn/consistent-existence-index-check: [2]
- unicorn/consistent-function-scoping: [2]
- unicorn/custom-error-definition: [0]
- unicorn/empty-brace-spaces: [2]
- unicorn/error-message: [0]
- unicorn/escape-case: [0]
- unicorn/expiring-todo-comments: [0]
- unicorn/explicit-length-check: [0]
- unicorn/filename-case: [0]
- unicorn/import-index: [0]
- unicorn/import-style: [0]
- unicorn/new-for-builtins: [2]
- unicorn/no-abusive-eslint-disable: [0]
- unicorn/no-anonymous-default-export: [0]
- unicorn/no-array-callback-reference: [0]
- unicorn/no-array-for-each: [2]
- unicorn/no-array-method-this-argument: [2]
- unicorn/no-array-push-push: [2]
- unicorn/no-array-reduce: [2]
- unicorn/no-await-expression-member: [0]
- unicorn/no-await-in-promise-methods: [2]
- unicorn/no-console-spaces: [0]
- unicorn/no-document-cookie: [2]
- unicorn/no-empty-file: [2]
- unicorn/no-for-loop: [0]
- unicorn/no-hex-escape: [0]
- unicorn/no-instanceof-array: [0]
- unicorn/no-invalid-fetch-options: [2]
- unicorn/no-invalid-remove-event-listener: [2]
- unicorn/no-keyword-prefix: [0]
- unicorn/no-length-as-slice-end: [2]
- unicorn/no-lonely-if: [2]
- unicorn/no-magic-array-flat-depth: [0]
- unicorn/no-negated-condition: [0]
- unicorn/no-negation-in-equality-check: [2]
- unicorn/no-nested-ternary: [0]
- unicorn/no-new-array: [0]
- unicorn/no-new-buffer: [0]
- unicorn/no-null: [0]
- unicorn/no-object-as-default-parameter: [0]
- unicorn/no-process-exit: [0]
- unicorn/no-single-promise-in-promise-methods: [2]
- unicorn/no-static-only-class: [2]
- unicorn/no-thenable: [2]
- unicorn/no-this-assignment: [2]
- unicorn/no-typeof-undefined: [2]
- unicorn/no-unnecessary-await: [2]
- unicorn/no-unnecessary-polyfills: [2]
- unicorn/no-unreadable-array-destructuring: [0]
- unicorn/no-unreadable-iife: [2]
- unicorn/no-unused-properties: [2]
- unicorn/no-useless-fallback-in-spread: [2]
- unicorn/no-useless-length-check: [2]
- unicorn/no-useless-promise-resolve-reject: [2]
- unicorn/no-useless-spread: [2]
- unicorn/no-useless-switch-case: [2]
- unicorn/no-useless-undefined: [0]
- unicorn/no-zero-fractions: [2]
- unicorn/number-literal-case: [0]
- unicorn/numeric-separators-style: [0]
- unicorn/prefer-add-event-listener: [2]
- unicorn/prefer-array-find: [2]
- unicorn/prefer-array-flat-map: [2]
- unicorn/prefer-array-flat: [2]
- unicorn/prefer-array-index-of: [2]
- unicorn/prefer-array-some: [2]
- unicorn/prefer-at: [0]
- unicorn/prefer-blob-reading-methods: [2]
- unicorn/prefer-code-point: [0]
- unicorn/prefer-date-now: [2]
- unicorn/prefer-default-parameters: [0]
- unicorn/prefer-dom-node-append: [2]
- unicorn/prefer-dom-node-dataset: [0]
- unicorn/prefer-dom-node-remove: [2]
- unicorn/prefer-dom-node-text-content: [2]
- unicorn/prefer-event-target: [2]
- unicorn/prefer-export-from: [0]
- unicorn/prefer-global-this: [0]
- unicorn/prefer-includes: [2]
- unicorn/prefer-json-parse-buffer: [0]
- unicorn/prefer-keyboard-event-key: [2]
- unicorn/prefer-logical-operator-over-ternary: [2]
- unicorn/prefer-math-min-max: [2]
- unicorn/prefer-math-trunc: [2]
- unicorn/prefer-modern-dom-apis: [0]
- unicorn/prefer-modern-math-apis: [2]
- unicorn/prefer-module: [2]
- unicorn/prefer-native-coercion-functions: [2]
- unicorn/prefer-negative-index: [2]
- unicorn/prefer-node-protocol: [2]
- unicorn/prefer-number-properties: [0]
- unicorn/prefer-object-from-entries: [2]
- unicorn/prefer-object-has-own: [0]
- unicorn/prefer-optional-catch-binding: [2]
- unicorn/prefer-prototype-methods: [0]
- unicorn/prefer-query-selector: [0]
- unicorn/prefer-reflect-apply: [0]
- unicorn/prefer-regexp-test: [2]
- unicorn/prefer-set-has: [0]
- unicorn/prefer-set-size: [2]
- unicorn/prefer-spread: [0]
- unicorn/prefer-string-raw: [0]
- unicorn/prefer-string-replace-all: [0]
- unicorn/prefer-string-slice: [0]
- unicorn/prefer-string-starts-ends-with: [2]
- unicorn/prefer-string-trim-start-end: [2]
- unicorn/prefer-structured-clone: [2]
- unicorn/prefer-switch: [0]
- unicorn/prefer-ternary: [0]
- unicorn/prefer-text-content: [2]
- unicorn/prefer-top-level-await: [0]
- unicorn/prefer-type-error: [0]
- unicorn/prevent-abbreviations: [0]
- unicorn/relative-url-style: [2]
- unicorn/require-array-join-separator: [2]
- unicorn/require-number-to-fixed-digits-argument: [2]
- unicorn/require-post-message-target-origin: [0]
- unicorn/string-content: [0]
- unicorn/switch-case-braces: [0]
- unicorn/template-indent: [2]
- unicorn/text-encoding-identifier-case: [0]
- unicorn/throw-new-error: [2]
- use-isnan: [2]
- valid-typeof: [2, {requireStringLiterals: true}]
- vars-on-top: [0]
- wc/attach-shadow-constructor: [2]
- wc/define-tag-after-class-definition: [0]
- wc/expose-class-on-global: [0]
- wc/file-name-matches-element: [2]
- wc/guard-define-call: [0]
- wc/guard-super-call: [2]
- wc/max-elements-per-file: [0]
- wc/no-child-traversal-in-attributechangedcallback: [2]
- wc/no-child-traversal-in-connectedcallback: [2]
- wc/no-closed-shadow-root: [2]
- wc/no-constructor-attributes: [2]
- wc/no-constructor-params: [2]
- wc/no-constructor: [2]
- wc/no-customized-built-in-elements: [2]
- wc/no-exports-with-element: [0]
- wc/no-invalid-element-name: [2]
- wc/no-invalid-extends: [2]
- wc/no-method-prefixed-with-on: [2]
- wc/no-self-class: [2]
- wc/no-typos: [2]
- wc/require-listener-teardown: [2]
- wc/tag-name-matches-class: [2]
- yoda: [2, never]
diff --git a/Makefile b/Makefile
index 80a9756f9a..1c47424d45 100644
--- a/Makefile
+++ b/Makefile
@@ -164,7 +164,7 @@ TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMAN
GO_DIRS := build cmd models modules routers services tests
WEB_DIRS := web_src/js web_src/css
-ESLINT_FILES := web_src/js tools *.js tests/e2e/*.js tests/e2e/shared/*.js
+ESLINT_FILES := web_src/js tools *.js *.mjs tests/e2e/*.js tests/e2e/shared/*.js
STYLELINT_FILES := web_src/css web_src/js/components/*.vue
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github $(wildcard *.go *.js *.md *.yml *.yaml *.toml)
@@ -437,11 +437,11 @@ lint-codespell-fix-i:
.PHONY: lint-js
lint-js: node_modules
- npx eslint --color --max-warnings=0 --ext js,vue $(ESLINT_FILES)
+ npx eslint --color --max-warnings=0 $(ESLINT_FILES)
.PHONY: lint-js-fix
lint-js-fix: node_modules
- npx eslint --color --max-warnings=0 --ext js,vue $(ESLINT_FILES) --fix
+ npx eslint --color --max-warnings=0 $(ESLINT_FILES) --fix
.PHONY: lint-css
lint-css: node_modules
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000000..389f7c3cd1
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,1159 @@
+import eslintCommunityEslintPluginEslintComments from '@eslint-community/eslint-plugin-eslint-comments';
+import stylisticEslintPluginJs from '@stylistic/eslint-plugin-js';
+import vitest from '@vitest/eslint-plugin';
+import arrayFunc from 'eslint-plugin-array-func';
+import eslintPluginImportX from 'eslint-plugin-import-x';
+import noJquery from 'eslint-plugin-no-jquery';
+import noUseExtendNative from 'eslint-plugin-no-use-extend-native';
+import regexp from 'eslint-plugin-regexp';
+import sonarjs from 'eslint-plugin-sonarjs';
+import unicorn from 'eslint-plugin-unicorn';
+import playwright from 'eslint-plugin-playwright';
+import vitestGlobals from 'eslint-plugin-vitest-globals';
+import wc from 'eslint-plugin-wc';
+import globals from 'globals';
+import vue from 'eslint-plugin-vue';
+import vueScopedCss from 'eslint-plugin-vue-scoped-css';
+
+export default [{
+ ignores: ['web_src/js/vendor', 'web_src/fomantic', 'public/assets/js'],
+}, {
+ plugins: {
+ '@eslint-community/eslint-comments': eslintCommunityEslintPluginEslintComments,
+ '@stylistic/js': stylisticEslintPluginJs,
+ '@vitest': vitest,
+ 'array-func': arrayFunc,
+ 'import-x': eslintPluginImportX,
+ 'no-jquery': noJquery,
+ 'no-use-extend-native': noUseExtendNative,
+ regexp,
+ sonarjs,
+ unicorn,
+ playwright,
+ 'vitest-globals': vitestGlobals,
+ vue,
+ 'vue-scoped-css': vueScopedCss,
+ wc,
+ },
+
+ linterOptions: {
+ reportUnusedDisableDirectives: true,
+ },
+
+ languageOptions: {
+ globals: {
+ ...globals.node,
+ },
+ parserOptions: {
+ ecmaVersion: 'latest',
+ },
+
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ rules: {
+ '@eslint-community/eslint-comments/disable-enable-pair': [2],
+ '@eslint-community/eslint-comments/no-aggregating-enable': [2],
+ '@eslint-community/eslint-comments/no-duplicate-disable': [2],
+ '@eslint-community/eslint-comments/no-restricted-disable': [0],
+ '@eslint-community/eslint-comments/no-unlimited-disable': [2],
+ '@eslint-community/eslint-comments/no-unused-disable': [2],
+ '@eslint-community/eslint-comments/no-unused-enable': [2],
+ '@eslint-community/eslint-comments/no-use': [0],
+ '@eslint-community/eslint-comments/require-description': [0],
+ '@stylistic/js/array-bracket-newline': [0],
+ '@stylistic/js/array-bracket-spacing': [2, 'never'],
+ '@stylistic/js/array-element-newline': [0],
+ '@stylistic/js/arrow-parens': [2, 'always'],
+
+ '@stylistic/js/arrow-spacing': [2, {
+ before: true,
+ after: true,
+ }],
+
+ '@stylistic/js/block-spacing': [0],
+
+ '@stylistic/js/brace-style': [2, '1tbs', {
+ allowSingleLine: true,
+ }],
+
+ '@stylistic/js/comma-dangle': [2, 'always-multiline'],
+
+ '@stylistic/js/comma-spacing': [2, {
+ before: false,
+ after: true,
+ }],
+
+ '@stylistic/js/comma-style': [2, 'last'],
+ '@stylistic/js/computed-property-spacing': [2, 'never'],
+ '@stylistic/js/dot-location': [2, 'property'],
+ '@stylistic/js/eol-last': [2],
+ '@stylistic/js/function-call-spacing': [2, 'never'],
+ '@stylistic/js/function-call-argument-newline': [0],
+ '@stylistic/js/function-paren-newline': [0],
+ '@stylistic/js/generator-star-spacing': [0],
+ '@stylistic/js/implicit-arrow-linebreak': [0],
+
+ '@stylistic/js/indent': [2, 2, {
+ ignoreComments: true,
+ SwitchCase: 1,
+ }],
+
+ '@stylistic/js/key-spacing': [2],
+ '@stylistic/js/keyword-spacing': [2],
+ '@stylistic/js/linebreak-style': [2, 'unix'],
+ '@stylistic/js/lines-around-comment': [0],
+ '@stylistic/js/lines-between-class-members': [0],
+ '@stylistic/js/max-len': [0],
+ '@stylistic/js/max-statements-per-line': [0],
+ '@stylistic/js/multiline-ternary': [0],
+ '@stylistic/js/new-parens': [2],
+ '@stylistic/js/newline-per-chained-call': [0],
+ '@stylistic/js/no-confusing-arrow': [0],
+ '@stylistic/js/no-extra-parens': [0],
+ '@stylistic/js/no-extra-semi': [2],
+ '@stylistic/js/no-floating-decimal': [0],
+ '@stylistic/js/no-mixed-operators': [0],
+ '@stylistic/js/no-mixed-spaces-and-tabs': [2],
+
+ '@stylistic/js/no-multi-spaces': [2, {
+ ignoreEOLComments: true,
+
+ exceptions: {
+ Property: true,
+ },
+ }],
+
+ '@stylistic/js/no-multiple-empty-lines': [2, {
+ max: 1,
+ maxEOF: 0,
+ maxBOF: 0,
+ }],
+
+ '@stylistic/js/no-tabs': [2],
+ '@stylistic/js/no-trailing-spaces': [2],
+ '@stylistic/js/no-whitespace-before-property': [2],
+ '@stylistic/js/nonblock-statement-body-position': [2],
+ '@stylistic/js/object-curly-newline': [0],
+ '@stylistic/js/object-curly-spacing': [2, 'never'],
+ '@stylistic/js/object-property-newline': [0],
+ '@stylistic/js/one-var-declaration-per-line': [0],
+ '@stylistic/js/operator-linebreak': [2, 'after'],
+ '@stylistic/js/padded-blocks': [2, 'never'],
+ '@stylistic/js/padding-line-between-statements': [0],
+ '@stylistic/js/quote-props': [0],
+
+ '@stylistic/js/quotes': [2, 'single', {
+ avoidEscape: true,
+ allowTemplateLiterals: true,
+ }],
+
+ '@stylistic/js/rest-spread-spacing': [2, 'never'],
+
+ '@stylistic/js/semi': [2, 'always', {
+ omitLastInOneLineBlock: true,
+ }],
+
+ '@stylistic/js/semi-spacing': [2, {
+ before: false,
+ after: true,
+ }],
+
+ '@stylistic/js/semi-style': [2, 'last'],
+ '@stylistic/js/space-before-blocks': [2, 'always'],
+
+ '@stylistic/js/space-before-function-paren': [2, {
+ anonymous: 'ignore',
+ named: 'never',
+ asyncArrow: 'always',
+ }],
+
+ '@stylistic/js/space-in-parens': [2, 'never'],
+ '@stylistic/js/space-infix-ops': [2],
+ '@stylistic/js/space-unary-ops': [2],
+ '@stylistic/js/spaced-comment': [2, 'always'],
+ '@stylistic/js/switch-colon-spacing': [2],
+ '@stylistic/js/template-curly-spacing': [2, 'never'],
+ '@stylistic/js/template-tag-spacing': [2, 'never'],
+ '@stylistic/js/wrap-iife': [2, 'inside'],
+ '@stylistic/js/wrap-regex': [0],
+ '@stylistic/js/yield-star-spacing': [2, 'after'],
+ 'accessor-pairs': [2],
+
+ 'array-callback-return': [2, {
+ checkForEach: true,
+ }],
+
+ 'array-func/avoid-reverse': [2],
+ 'array-func/from-map': [2],
+ 'array-func/no-unnecessary-this-arg': [2],
+ 'array-func/prefer-array-from': [2],
+ 'array-func/prefer-flat-map': [0],
+ 'array-func/prefer-flat': [0],
+ 'arrow-body-style': [0],
+ 'block-scoped-var': [2],
+ camelcase: [0],
+ 'capitalized-comments': [0],
+ 'class-methods-use-this': [0],
+ complexity: [0],
+ 'consistent-return': [0],
+ 'consistent-this': [0],
+ 'constructor-super': [2],
+ curly: [0],
+ 'default-case-last': [2],
+ 'default-case': [0],
+ 'default-param-last': [0],
+ 'dot-notation': [0],
+ eqeqeq: [2],
+ 'for-direction': [2],
+ 'func-name-matching': [2],
+ 'func-names': [0],
+ 'func-style': [0],
+ 'getter-return': [2],
+ 'grouped-accessor-pairs': [2],
+ 'guard-for-in': [0],
+ 'id-blacklist': [0],
+ 'id-length': [0],
+ 'id-match': [0],
+ 'init-declarations': [0],
+ 'line-comment-position': [0],
+ 'logical-assignment-operators': [0],
+ 'max-classes-per-file': [0],
+ 'max-depth': [0],
+ 'max-lines-per-function': [0],
+ 'max-lines': [0],
+ 'max-nested-callbacks': [0],
+ 'max-params': [0],
+ 'max-statements': [0],
+ 'multiline-comment-style': [2, 'separate-lines'],
+ 'new-cap': [0],
+ 'no-alert': [0],
+ 'no-array-constructor': [2],
+ 'no-async-promise-executor': [0],
+ 'no-await-in-loop': [0],
+ 'no-bitwise': [0],
+ 'no-buffer-constructor': [0],
+ 'no-caller': [2],
+ 'no-case-declarations': [2],
+ 'no-class-assign': [2],
+ 'no-compare-neg-zero': [2],
+ 'no-cond-assign': [2, 'except-parens'],
+
+ 'no-console': [1, {
+ allow: ['debug', 'info', 'warn', 'error'],
+ }],
+
+ 'no-const-assign': [2],
+ 'no-constant-binary-expression': [2],
+ 'no-constant-condition': [0],
+ 'no-constructor-return': [2],
+ 'no-continue': [0],
+ 'no-control-regex': [0],
+ 'no-debugger': [1],
+ 'no-delete-var': [2],
+ 'no-div-regex': [0],
+ 'no-dupe-args': [2],
+ 'no-dupe-class-members': [2],
+ 'no-dupe-else-if': [2],
+ 'no-dupe-keys': [2],
+ 'no-duplicate-case': [2],
+ 'no-duplicate-imports': [2],
+ 'no-else-return': [2],
+ 'no-empty-character-class': [2],
+ 'no-empty-function': [0],
+ 'no-empty-pattern': [2],
+ 'no-empty-static-block': [2],
+
+ 'no-empty': [2, {
+ allowEmptyCatch: true,
+ }],
+
+ 'no-eq-null': [2],
+ 'no-eval': [2],
+ 'no-ex-assign': [2],
+ 'no-extend-native': [2],
+ 'no-extra-bind': [2],
+ 'no-extra-boolean-cast': [2],
+ 'no-extra-label': [0],
+ 'no-fallthrough': [2],
+ 'no-func-assign': [2],
+ 'no-global-assign': [2],
+ 'no-implicit-coercion': [2],
+ 'no-implicit-globals': [0],
+ 'no-implied-eval': [2],
+ 'no-import-assign': [2],
+ 'no-inline-comments': [0],
+ 'no-inner-declarations': [2],
+ 'no-invalid-regexp': [2],
+ 'no-invalid-this': [0],
+ 'no-irregular-whitespace': [2],
+ 'no-iterator': [2],
+ 'no-jquery/no-ajax-events': [2],
+ 'no-jquery/no-ajax': [2],
+ 'no-jquery/no-and-self': [2],
+ 'no-jquery/no-animate-toggle': [2],
+ 'no-jquery/no-animate': [2],
+ 'no-jquery/no-append-html': [2],
+ 'no-jquery/no-attr': [2],
+ 'no-jquery/no-bind': [2],
+ 'no-jquery/no-box-model': [2],
+ 'no-jquery/no-browser': [2],
+ 'no-jquery/no-camel-case': [2],
+ 'no-jquery/no-class-state': [2],
+ 'no-jquery/no-class': [0],
+ 'no-jquery/no-clone': [2],
+ 'no-jquery/no-closest': [0],
+ 'no-jquery/no-constructor-attributes': [2],
+ 'no-jquery/no-contains': [2],
+ 'no-jquery/no-context-prop': [2],
+ 'no-jquery/no-css': [2],
+ 'no-jquery/no-data': [0],
+ 'no-jquery/no-deferred': [2],
+ 'no-jquery/no-delegate': [2],
+ 'no-jquery/no-each-collection': [0],
+ 'no-jquery/no-each-util': [0],
+ 'no-jquery/no-each': [0],
+ 'no-jquery/no-error-shorthand': [2],
+ 'no-jquery/no-error': [2],
+ 'no-jquery/no-escape-selector': [2],
+ 'no-jquery/no-event-shorthand': [2],
+ 'no-jquery/no-extend': [2],
+ 'no-jquery/no-fade': [2],
+ 'no-jquery/no-filter': [0],
+ 'no-jquery/no-find-collection': [0],
+ 'no-jquery/no-find-util': [2],
+ 'no-jquery/no-find': [0],
+ 'no-jquery/no-fx-interval': [2],
+ 'no-jquery/no-global-eval': [2],
+ 'no-jquery/no-global-selector': [0],
+ 'no-jquery/no-grep': [2],
+ 'no-jquery/no-has': [2],
+ 'no-jquery/no-hold-ready': [2],
+ 'no-jquery/no-html': [0],
+ 'no-jquery/no-in-array': [2],
+ 'no-jquery/no-is-array': [2],
+ 'no-jquery/no-is-empty-object': [2],
+ 'no-jquery/no-is-function': [2],
+ 'no-jquery/no-is-numeric': [2],
+ 'no-jquery/no-is-plain-object': [2],
+ 'no-jquery/no-is-window': [2],
+ 'no-jquery/no-is': [2],
+ 'no-jquery/no-jquery-constructor': [0],
+ 'no-jquery/no-live': [2],
+ 'no-jquery/no-load-shorthand': [2],
+ 'no-jquery/no-load': [2],
+ 'no-jquery/no-map-collection': [0],
+ 'no-jquery/no-map-util': [2],
+ 'no-jquery/no-map': [2],
+ 'no-jquery/no-merge': [2],
+ 'no-jquery/no-node-name': [2],
+ 'no-jquery/no-noop': [2],
+ 'no-jquery/no-now': [2],
+ 'no-jquery/no-on-ready': [2],
+ 'no-jquery/no-other-methods': [0],
+ 'no-jquery/no-other-utils': [2],
+ 'no-jquery/no-param': [2],
+ 'no-jquery/no-parent': [0],
+ 'no-jquery/no-parents': [2],
+ 'no-jquery/no-parse-html-literal': [2],
+ 'no-jquery/no-parse-html': [2],
+ 'no-jquery/no-parse-json': [2],
+ 'no-jquery/no-parse-xml': [2],
+ 'no-jquery/no-prop': [2],
+ 'no-jquery/no-proxy': [2],
+ 'no-jquery/no-ready-shorthand': [2],
+ 'no-jquery/no-ready': [2],
+ 'no-jquery/no-selector-prop': [2],
+ 'no-jquery/no-serialize': [2],
+ 'no-jquery/no-size': [2],
+ 'no-jquery/no-sizzle': [0],
+ 'no-jquery/no-slide': [2],
+ 'no-jquery/no-sub': [2],
+ 'no-jquery/no-support': [2],
+ 'no-jquery/no-text': [0],
+ 'no-jquery/no-trigger': [0],
+ 'no-jquery/no-trim': [2],
+ 'no-jquery/no-type': [2],
+ 'no-jquery/no-unique': [2],
+ 'no-jquery/no-unload-shorthand': [2],
+ 'no-jquery/no-val': [0],
+ 'no-jquery/no-visibility': [2],
+ 'no-jquery/no-when': [2],
+ 'no-jquery/no-wrap': [2],
+ 'no-jquery/variable-pattern': [2],
+ 'no-label-var': [2],
+ 'no-labels': [0],
+ 'no-lone-blocks': [2],
+ 'no-lonely-if': [0],
+ 'no-loop-func': [0],
+ 'no-loss-of-precision': [2],
+ 'no-magic-numbers': [0],
+ 'no-misleading-character-class': [2],
+ 'no-multi-assign': [0],
+ 'no-multi-str': [2],
+ 'no-negated-condition': [0],
+ 'no-nested-ternary': [0],
+ 'no-new-func': [2],
+ 'no-new-native-nonconstructor': [2],
+ 'no-new-object': [2],
+ 'no-new-symbol': [2],
+ 'no-new-wrappers': [2],
+ 'no-new': [0],
+ 'no-nonoctal-decimal-escape': [2],
+ 'no-obj-calls': [2],
+ 'no-octal-escape': [2],
+ 'no-octal': [2],
+ 'no-param-reassign': [0],
+ 'no-plusplus': [0],
+ 'no-promise-executor-return': [0],
+ 'no-proto': [2],
+ 'no-prototype-builtins': [2],
+ 'no-redeclare': [2],
+ 'no-regex-spaces': [2],
+ 'no-restricted-exports': [0],
+
+ 'no-restricted-globals': [
+ 2,
+ 'addEventListener',
+ 'blur',
+ 'close',
+ 'closed',
+ 'confirm',
+ 'defaultStatus',
+ 'defaultstatus',
+ 'error',
+ 'event',
+ 'external',
+ 'find',
+ 'focus',
+ 'frameElement',
+ 'frames',
+ 'history',
+ 'innerHeight',
+ 'innerWidth',
+ 'isFinite',
+ 'isNaN',
+ 'length',
+ 'location',
+ 'locationbar',
+ 'menubar',
+ 'moveBy',
+ 'moveTo',
+ 'name',
+ 'onblur',
+ 'onerror',
+ 'onfocus',
+ 'onload',
+ 'onresize',
+ 'onunload',
+ 'open',
+ 'opener',
+ 'opera',
+ 'outerHeight',
+ 'outerWidth',
+ 'pageXOffset',
+ 'pageYOffset',
+ 'parent',
+ 'print',
+ 'removeEventListener',
+ 'resizeBy',
+ 'resizeTo',
+ 'screen',
+ 'screenLeft',
+ 'screenTop',
+ 'screenX',
+ 'screenY',
+ 'scroll',
+ 'scrollbars',
+ 'scrollBy',
+ 'scrollTo',
+ 'scrollX',
+ 'scrollY',
+ 'self',
+ 'status',
+ 'statusbar',
+ 'stop',
+ 'toolbar',
+ 'top',
+ '__dirname',
+ '__filename',
+ ],
+
+ 'no-restricted-imports': [0],
+
+ 'no-restricted-syntax': [
+ 2,
+ 'WithStatement',
+ 'ForInStatement',
+ 'LabeledStatement',
+ 'SequenceExpression',
+ {
+ selector: "CallExpression[callee.name='fetch']",
+ message: 'use modules/fetch.js instead',
+ },
+ ],
+
+ 'no-return-assign': [0],
+ 'no-script-url': [2],
+
+ 'no-self-assign': [2, {
+ props: true,
+ }],
+
+ 'no-self-compare': [2],
+ 'no-sequences': [2],
+ 'no-setter-return': [2],
+ 'no-shadow-restricted-names': [2],
+ 'no-shadow': [0],
+ 'no-sparse-arrays': [2],
+ 'no-template-curly-in-string': [2],
+ 'no-ternary': [0],
+ 'no-this-before-super': [2],
+ 'no-throw-literal': [2],
+ 'no-undef-init': [2],
+
+ 'no-undef': [2, {
+ typeof: true,
+ }],
+
+ 'no-undefined': [0],
+ 'no-underscore-dangle': [0],
+ 'no-unexpected-multiline': [2],
+ 'no-unmodified-loop-condition': [2],
+ 'no-unneeded-ternary': [2],
+ 'no-unreachable-loop': [2],
+ 'no-unreachable': [2],
+ 'no-unsafe-finally': [2],
+ 'no-unsafe-negation': [2],
+ 'no-unused-expressions': [2],
+ 'no-unused-labels': [2],
+ 'no-unused-private-class-members': [2],
+
+ 'no-unused-vars': [2, {
+ args: 'all',
+ argsIgnorePattern: '^_',
+ varsIgnorePattern: '^_',
+ caughtErrorsIgnorePattern: '^_',
+ destructuredArrayIgnorePattern: '^_',
+ ignoreRestSiblings: false,
+ }],
+
+ 'no-use-before-define': [2, {
+ functions: false,
+ classes: true,
+ variables: true,
+ allowNamedExports: true,
+ }],
+
+ 'no-use-extend-native/no-use-extend-native': [2],
+ 'no-useless-backreference': [2],
+ 'no-useless-call': [2],
+ 'no-useless-catch': [2],
+ 'no-useless-computed-key': [2],
+ 'no-useless-concat': [2],
+ 'no-useless-constructor': [2],
+ 'no-useless-escape': [2],
+ 'no-useless-rename': [2],
+ 'no-useless-return': [2],
+ 'no-var': [2],
+ 'no-void': [2],
+ 'no-warning-comments': [0],
+ 'no-with': [0],
+ 'object-shorthand': [2, 'always'],
+ 'one-var-declaration-per-line': [0],
+ 'one-var': [0],
+ 'operator-assignment': [2, 'always'],
+ 'operator-linebreak': [2, 'after'],
+
+ 'prefer-arrow-callback': [2, {
+ allowNamedFunctions: true,
+ allowUnboundThis: true,
+ }],
+
+ 'prefer-const': [2, {
+ destructuring: 'all',
+ ignoreReadBeforeAssign: true,
+ }],
+
+ 'prefer-destructuring': [0],
+ 'prefer-exponentiation-operator': [2],
+ 'prefer-named-capture-group': [0],
+ 'prefer-numeric-literals': [2],
+ 'prefer-object-has-own': [2],
+ 'prefer-object-spread': [2],
+
+ 'prefer-promise-reject-errors': [2, {
+ allowEmptyReject: false,
+ }],
+
+ 'prefer-regex-literals': [2],
+ 'prefer-rest-params': [2],
+ 'prefer-spread': [2],
+ 'prefer-template': [2],
+ radix: [2, 'as-needed'],
+ 'regexp/confusing-quantifier': [2],
+ 'regexp/control-character-escape': [2],
+ 'regexp/hexadecimal-escape': [0],
+ 'regexp/letter-case': [0],
+ 'regexp/match-any': [2],
+ 'regexp/negation': [2],
+ 'regexp/no-contradiction-with-assertion': [0],
+ 'regexp/no-control-character': [0],
+ 'regexp/no-dupe-characters-character-class': [2],
+ 'regexp/no-dupe-disjunctions': [2],
+ 'regexp/no-empty-alternative': [2],
+ 'regexp/no-empty-capturing-group': [2],
+ 'regexp/no-empty-character-class': [0],
+ 'regexp/no-empty-group': [2],
+ 'regexp/no-empty-lookarounds-assertion': [2],
+ 'regexp/no-empty-string-literal': [2],
+ 'regexp/no-escape-backspace': [2],
+ 'regexp/no-extra-lookaround-assertions': [0],
+ 'regexp/no-invalid-regexp': [2],
+ 'regexp/no-invisible-character': [2],
+ 'regexp/no-lazy-ends': [2],
+ 'regexp/no-legacy-features': [2],
+ 'regexp/no-misleading-capturing-group': [0],
+ 'regexp/no-misleading-unicode-character': [0],
+ 'regexp/no-missing-g-flag': [2],
+ 'regexp/no-non-standard-flag': [2],
+ 'regexp/no-obscure-range': [2],
+ 'regexp/no-octal': [2],
+ 'regexp/no-optional-assertion': [2],
+ 'regexp/no-potentially-useless-backreference': [2],
+ 'regexp/no-standalone-backslash': [2],
+ 'regexp/no-super-linear-backtracking': [0],
+ 'regexp/no-super-linear-move': [0],
+ 'regexp/no-trivially-nested-assertion': [2],
+ 'regexp/no-trivially-nested-quantifier': [2],
+ 'regexp/no-unused-capturing-group': [0],
+ 'regexp/no-useless-assertions': [2],
+ 'regexp/no-useless-backreference': [2],
+ 'regexp/no-useless-character-class': [2],
+ 'regexp/no-useless-dollar-replacements': [2],
+ 'regexp/no-useless-escape': [2],
+ 'regexp/no-useless-flag': [2],
+ 'regexp/no-useless-lazy': [2],
+ 'regexp/no-useless-non-capturing-group': [2],
+ 'regexp/no-useless-quantifier': [2],
+ 'regexp/no-useless-range': [2],
+ 'regexp/no-useless-set-operand': [2],
+ 'regexp/no-useless-string-literal': [2],
+ 'regexp/no-useless-two-nums-quantifier': [2],
+ 'regexp/no-zero-quantifier': [2],
+ 'regexp/optimal-lookaround-quantifier': [2],
+ 'regexp/optimal-quantifier-concatenation': [0],
+ 'regexp/prefer-character-class': [0],
+ 'regexp/prefer-d': [0],
+ 'regexp/prefer-escape-replacement-dollar-char': [0],
+ 'regexp/prefer-lookaround': [0],
+ 'regexp/prefer-named-backreference': [0],
+ 'regexp/prefer-named-capture-group': [0],
+ 'regexp/prefer-named-replacement': [0],
+ 'regexp/prefer-plus-quantifier': [2],
+ 'regexp/prefer-predefined-assertion': [2],
+ 'regexp/prefer-quantifier': [0],
+ 'regexp/prefer-question-quantifier': [2],
+ 'regexp/prefer-range': [2],
+ 'regexp/prefer-regexp-exec': [2],
+ 'regexp/prefer-regexp-test': [2],
+ 'regexp/prefer-result-array-groups': [0],
+ 'regexp/prefer-set-operation': [2],
+ 'regexp/prefer-star-quantifier': [2],
+ 'regexp/prefer-unicode-codepoint-escapes': [2],
+ 'regexp/prefer-w': [0],
+ 'regexp/require-unicode-regexp': [0],
+ 'regexp/simplify-set-operations': [2],
+ 'regexp/sort-alternatives': [0],
+ 'regexp/sort-character-class-elements': [0],
+ 'regexp/sort-flags': [0],
+ 'regexp/strict': [2],
+ 'regexp/unicode-escape': [0],
+ 'regexp/use-ignore-case': [0],
+ 'require-atomic-updates': [0],
+ 'require-await': [0],
+ 'require-unicode-regexp': [0],
+ 'require-yield': [2],
+ 'sonarjs/cognitive-complexity': [0],
+ 'sonarjs/elseif-without-else': [0],
+ 'sonarjs/max-switch-cases': [0],
+ 'sonarjs/no-all-duplicated-branches': [2],
+ 'sonarjs/no-collapsible-if': [0],
+ 'sonarjs/no-collection-size-mischeck': [2],
+ 'sonarjs/no-duplicate-string': [0],
+ 'sonarjs/no-duplicated-branches': [0],
+ 'sonarjs/no-element-overwrite': [2],
+ 'sonarjs/no-empty-collection': [2],
+ 'sonarjs/no-extra-arguments': [2],
+ 'sonarjs/no-gratuitous-expressions': [2],
+ 'sonarjs/no-identical-conditions': [2],
+ 'sonarjs/no-identical-expressions': [2],
+ 'sonarjs/no-identical-functions': [2, 5],
+ 'sonarjs/no-ignored-return': [2],
+ 'sonarjs/no-inverted-boolean-check': [2],
+ 'sonarjs/no-nested-switch': [0],
+ 'sonarjs/no-nested-template-literals': [0],
+ 'sonarjs/no-one-iteration-loop': [2],
+ 'sonarjs/no-redundant-boolean': [2],
+ 'sonarjs/no-redundant-jump': [2],
+ 'sonarjs/no-same-line-conditional': [2],
+ 'sonarjs/no-small-switch': [0],
+ 'sonarjs/no-unused-collection': [2],
+ 'sonarjs/no-use-of-empty-return-value': [2],
+ 'sonarjs/no-useless-catch': [2],
+ 'sonarjs/non-existent-operator': [2],
+ 'sonarjs/prefer-immediate-return': [0],
+ 'sonarjs/prefer-object-literal': [0],
+ 'sonarjs/prefer-single-boolean-return': [0],
+ 'sonarjs/prefer-while': [2],
+ 'sort-imports': [0],
+ 'sort-keys': [0],
+ 'sort-vars': [0],
+ strict: [0],
+ 'symbol-description': [2],
+ 'unicode-bom': [2, 'never'],
+ 'unicorn/better-regex': [0],
+ 'unicorn/catch-error-name': [0],
+ 'unicorn/consistent-destructuring': [2],
+ 'unicorn/consistent-empty-array-spread': [2],
+ 'unicorn/consistent-existence-index-check': [2],
+ 'unicorn/consistent-function-scoping': [2],
+ 'unicorn/custom-error-definition': [0],
+ 'unicorn/empty-brace-spaces': [2],
+ 'unicorn/error-message': [0],
+ 'unicorn/escape-case': [0],
+ 'unicorn/expiring-todo-comments': [0],
+ 'unicorn/explicit-length-check': [0],
+ 'unicorn/filename-case': [0],
+ 'unicorn/import-index': [0],
+ 'unicorn/import-style': [0],
+ 'unicorn/new-for-builtins': [2],
+ 'unicorn/no-abusive-eslint-disable': [0],
+ 'unicorn/no-anonymous-default-export': [0],
+ 'unicorn/no-array-callback-reference': [0],
+ 'unicorn/no-array-for-each': [2],
+ 'unicorn/no-array-method-this-argument': [2],
+ 'unicorn/no-array-push-push': [2],
+ 'unicorn/no-array-reduce': [2],
+ 'unicorn/no-await-expression-member': [0],
+ 'unicorn/no-await-in-promise-methods': [2],
+ 'unicorn/no-console-spaces': [0],
+ 'unicorn/no-document-cookie': [2],
+ 'unicorn/no-empty-file': [2],
+ 'unicorn/no-for-loop': [0],
+ 'unicorn/no-hex-escape': [0],
+ 'unicorn/no-instanceof-array': [0],
+ 'unicorn/no-invalid-fetch-options': [2],
+ 'unicorn/no-invalid-remove-event-listener': [2],
+ 'unicorn/no-keyword-prefix': [0],
+ 'unicorn/no-length-as-slice-end': [2],
+ 'unicorn/no-lonely-if': [2],
+ 'unicorn/no-magic-array-flat-depth': [0],
+ 'unicorn/no-negated-condition': [0],
+ 'unicorn/no-negation-in-equality-check': [2],
+ 'unicorn/no-nested-ternary': [0],
+ 'unicorn/no-new-array': [0],
+ 'unicorn/no-new-buffer': [0],
+ 'unicorn/no-null': [0],
+ 'unicorn/no-object-as-default-parameter': [0],
+ 'unicorn/no-process-exit': [0],
+ 'unicorn/no-single-promise-in-promise-methods': [2],
+ 'unicorn/no-static-only-class': [2],
+ 'unicorn/no-thenable': [2],
+ 'unicorn/no-this-assignment': [2],
+ 'unicorn/no-typeof-undefined': [2],
+ 'unicorn/no-unnecessary-await': [2],
+ 'unicorn/no-unnecessary-polyfills': [2],
+ 'unicorn/no-unreadable-array-destructuring': [0],
+ 'unicorn/no-unreadable-iife': [2],
+ 'unicorn/no-unused-properties': [2],
+ 'unicorn/no-useless-fallback-in-spread': [2],
+ 'unicorn/no-useless-length-check': [2],
+ 'unicorn/no-useless-promise-resolve-reject': [2],
+ 'unicorn/no-useless-spread': [2],
+ 'unicorn/no-useless-switch-case': [2],
+ 'unicorn/no-useless-undefined': [0],
+ 'unicorn/no-zero-fractions': [2],
+ 'unicorn/number-literal-case': [0],
+ 'unicorn/numeric-separators-style': [0],
+ 'unicorn/prefer-add-event-listener': [2],
+ 'unicorn/prefer-array-find': [2],
+ 'unicorn/prefer-array-flat-map': [2],
+ 'unicorn/prefer-array-flat': [2],
+ 'unicorn/prefer-array-index-of': [2],
+ 'unicorn/prefer-array-some': [2],
+ 'unicorn/prefer-at': [0],
+ 'unicorn/prefer-blob-reading-methods': [2],
+ 'unicorn/prefer-code-point': [0],
+ 'unicorn/prefer-date-now': [2],
+ 'unicorn/prefer-default-parameters': [0],
+ 'unicorn/prefer-dom-node-append': [2],
+ 'unicorn/prefer-dom-node-dataset': [0],
+ 'unicorn/prefer-dom-node-remove': [2],
+ 'unicorn/prefer-dom-node-text-content': [2],
+ 'unicorn/prefer-event-target': [2],
+ 'unicorn/prefer-export-from': [0],
+ 'unicorn/prefer-global-this': [0],
+ 'unicorn/prefer-includes': [2],
+ 'unicorn/prefer-json-parse-buffer': [0],
+ 'unicorn/prefer-keyboard-event-key': [2],
+ 'unicorn/prefer-logical-operator-over-ternary': [2],
+ 'unicorn/prefer-math-min-max': [2],
+ 'unicorn/prefer-math-trunc': [2],
+ 'unicorn/prefer-modern-dom-apis': [0],
+ 'unicorn/prefer-modern-math-apis': [2],
+ 'unicorn/prefer-module': [2],
+ 'unicorn/prefer-native-coercion-functions': [2],
+ 'unicorn/prefer-negative-index': [2],
+ 'unicorn/prefer-node-protocol': [2],
+ 'unicorn/prefer-number-properties': [0],
+ 'unicorn/prefer-object-from-entries': [2],
+ 'unicorn/prefer-object-has-own': [0],
+ 'unicorn/prefer-optional-catch-binding': [2],
+ 'unicorn/prefer-prototype-methods': [0],
+ 'unicorn/prefer-query-selector': [0],
+ 'unicorn/prefer-reflect-apply': [0],
+ 'unicorn/prefer-regexp-test': [2],
+ 'unicorn/prefer-set-has': [0],
+ 'unicorn/prefer-set-size': [2],
+ 'unicorn/prefer-spread': [0],
+ 'unicorn/prefer-string-raw': [0],
+ 'unicorn/prefer-string-replace-all': [0],
+ 'unicorn/prefer-string-slice': [0],
+ 'unicorn/prefer-string-starts-ends-with': [2],
+ 'unicorn/prefer-string-trim-start-end': [2],
+ 'unicorn/prefer-structured-clone': [2],
+ 'unicorn/prefer-switch': [0],
+ 'unicorn/prefer-ternary': [0],
+ 'unicorn/prefer-text-content': [2],
+ 'unicorn/prefer-top-level-await': [0],
+ 'unicorn/prefer-type-error': [0],
+ 'unicorn/prevent-abbreviations': [0],
+ 'unicorn/relative-url-style': [2],
+ 'unicorn/require-array-join-separator': [2],
+ 'unicorn/require-number-to-fixed-digits-argument': [2],
+ 'unicorn/require-post-message-target-origin': [0],
+ 'unicorn/string-content': [0],
+ 'unicorn/switch-case-braces': [0],
+ 'unicorn/template-indent': [2],
+ 'unicorn/text-encoding-identifier-case': [0],
+ 'unicorn/throw-new-error': [2],
+ 'use-isnan': [2],
+
+ 'valid-typeof': [2, {
+ requireStringLiterals: true,
+ }],
+
+ 'vars-on-top': [0],
+ 'wc/attach-shadow-constructor': [2],
+ 'wc/define-tag-after-class-definition': [0],
+ 'wc/expose-class-on-global': [0],
+ 'wc/file-name-matches-element': [2],
+ 'wc/guard-define-call': [0],
+ 'wc/guard-super-call': [2],
+ 'wc/max-elements-per-file': [0],
+ 'wc/no-child-traversal-in-attributechangedcallback': [2],
+ 'wc/no-child-traversal-in-connectedcallback': [2],
+ 'wc/no-closed-shadow-root': [2],
+ 'wc/no-constructor-attributes': [2],
+ 'wc/no-constructor-params': [2],
+ 'wc/no-constructor': [2],
+ 'wc/no-customized-built-in-elements': [2],
+ 'wc/no-exports-with-element': [0],
+ 'wc/no-invalid-element-name': [2],
+ 'wc/no-invalid-extends': [2],
+ 'wc/no-method-prefixed-with-on': [2],
+ 'wc/no-self-class': [2],
+ 'wc/no-typos': [2],
+ 'wc/require-listener-teardown': [2],
+ 'wc/tag-name-matches-class': [2],
+ yoda: [2, 'never'],
+ },
+},
+{
+ ignores: ['*.vue', '**/*.vue'],
+ rules: {
+ 'import-x/consistent-type-specifier-style': [0],
+ 'import-x/default': [0],
+ 'import-x/dynamic-import-chunkname': [0],
+ 'import-x/export': [2],
+ 'import-x/exports-last': [0],
+
+ 'import-x/extensions': [2, 'always', {
+ ignorePackages: true,
+ }],
+
+ 'import-x/first': [2],
+ 'import-x/group-exports': [0],
+ 'import-x/max-dependencies': [0],
+ 'import-x/named': [2],
+ 'import-x/namespace': [0],
+ 'import-x/newline-after-import': [0],
+ 'import-x/no-absolute-path': [0],
+ 'import-x/no-amd': [2],
+ 'import-x/no-anonymous-default-export': [0],
+ 'import-x/no-commonjs': [2],
+
+ 'import-x/no-cycle': [2, {
+ ignoreExternal: true,
+ maxDepth: 1,
+ }],
+
+ 'import-x/no-default-export': [0],
+ 'import-x/no-deprecated': [0],
+ 'import-x/no-dynamic-require': [0],
+ 'import-x/no-empty-named-blocks': [2],
+ 'import-x/no-extraneous-dependencies': [2],
+ 'import-x/no-import-module-exports': [0],
+ 'import-x/no-internal-modules': [0],
+ 'import-x/no-mutable-exports': [0],
+ 'import-x/no-named-as-default-member': [0],
+ 'import-x/no-named-as-default': [2],
+ 'import-x/no-named-default': [0],
+ 'import-x/no-named-export': [0],
+ 'import-x/no-namespace': [0],
+ 'import-x/no-nodejs-modules': [0],
+ 'import-x/no-relative-packages': [0],
+ 'import-x/no-relative-parent-imports': [0],
+ 'import-x/no-restricted-paths': [0],
+ 'import-x/no-self-import': [2],
+ 'import-x/no-unassigned-import': [0],
+
+ 'import-x/no-unresolved': [2, {
+ commonjs: true,
+ ignore: ['\\?.+$', '^vitest/'],
+ }],
+
+ 'import-x/no-useless-path-segments': [2, {
+ commonjs: true,
+ }],
+
+ 'import-x/no-webpack-loader-syntax': [2],
+ 'import-x/order': [0],
+ 'import-x/prefer-default-export': [0],
+ 'import-x/unambiguous': [0],
+ },
+},
+{
+ files: ['web_src/**/*'],
+ languageOptions: {
+ globals: {
+ __webpack_public_path__: true,
+ process: false,
+ },
+ },
+}, {
+ files: ['web_src/**/*', 'docs/**/*'],
+
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ },
+ },
+}, {
+ files: ['web_src/**/*worker.*'],
+
+ languageOptions: {
+ globals: {
+ ...globals.worker,
+ },
+ },
+
+ rules: {
+ 'no-restricted-globals': [
+ 2,
+ 'addEventListener',
+ 'blur',
+ 'close',
+ 'closed',
+ 'confirm',
+ 'defaultStatus',
+ 'defaultstatus',
+ 'error',
+ 'event',
+ 'external',
+ 'find',
+ 'focus',
+ 'frameElement',
+ 'frames',
+ 'history',
+ 'innerHeight',
+ 'innerWidth',
+ 'isFinite',
+ 'isNaN',
+ 'length',
+ 'locationbar',
+ 'menubar',
+ 'moveBy',
+ 'moveTo',
+ 'name',
+ 'onblur',
+ 'onerror',
+ 'onfocus',
+ 'onload',
+ 'onresize',
+ 'onunload',
+ 'open',
+ 'opener',
+ 'opera',
+ 'outerHeight',
+ 'outerWidth',
+ 'pageXOffset',
+ 'pageYOffset',
+ 'parent',
+ 'print',
+ 'removeEventListener',
+ 'resizeBy',
+ 'resizeTo',
+ 'screen',
+ 'screenLeft',
+ 'screenTop',
+ 'screenX',
+ 'screenY',
+ 'scroll',
+ 'scrollbars',
+ 'scrollBy',
+ 'scrollTo',
+ 'scrollX',
+ 'scrollY',
+ 'status',
+ 'statusbar',
+ 'stop',
+ 'toolbar',
+ 'top',
+ ],
+ },
+}, {
+ files: ['**/*.config.*'],
+ languageOptions: {
+ ecmaVersion: 'latest',
+ },
+ rules: {
+ 'import-x/no-unused-modules': [0],
+ 'import-x/no-unresolved': [0],
+ },
+}, {
+ files: ['**/*.test.*', 'web_src/js/test/setup.js'],
+ languageOptions: {
+ globals: {
+ ...vitestGlobals.environments.env.globals,
+ },
+ },
+
+ rules: {
+ '@vitest/consistent-test-filename': [0],
+ '@vitest/consistent-test-it': [0],
+ '@vitest/expect-expect': [0],
+ '@vitest/max-expects': [0],
+ '@vitest/max-nested-describe': [0],
+ '@vitest/no-alias-methods': [0],
+ '@vitest/no-commented-out-tests': [0],
+ '@vitest/no-conditional-expect': [0],
+ '@vitest/no-conditional-in-test': [0],
+ '@vitest/no-conditional-tests': [0],
+ '@vitest/no-disabled-tests': [0],
+ '@vitest/no-done-callback': [0],
+ '@vitest/no-duplicate-hooks': [0],
+ '@vitest/no-focused-tests': [0],
+ '@vitest/no-hooks': [0],
+ '@vitest/no-identical-title': [2],
+ '@vitest/no-interpolation-in-snapshots': [0],
+ '@vitest/no-large-snapshots': [0],
+ '@vitest/no-mocks-import': [0],
+ '@vitest/no-restricted-matchers': [0],
+ '@vitest/no-restricted-vi-methods': [0],
+ '@vitest/no-standalone-expect': [0],
+ '@vitest/no-test-prefixes': [0],
+ '@vitest/no-test-return-statement': [0],
+ '@vitest/prefer-called-with': [0],
+ '@vitest/prefer-comparison-matcher': [0],
+ '@vitest/prefer-each': [0],
+ '@vitest/prefer-equality-matcher': [0],
+ '@vitest/prefer-expect-resolves': [0],
+ '@vitest/prefer-hooks-in-order': [0],
+ '@vitest/prefer-hooks-on-top': [2],
+ '@vitest/prefer-lowercase-title': [0],
+ '@vitest/prefer-mock-promise-shorthand': [0],
+ '@vitest/prefer-snapshot-hint': [0],
+ '@vitest/prefer-spy-on': [0],
+ '@vitest/prefer-strict-equal': [0],
+ '@vitest/prefer-to-be': [0],
+ '@vitest/prefer-to-be-falsy': [0],
+ '@vitest/prefer-to-be-object': [0],
+ '@vitest/prefer-to-be-truthy': [0],
+ '@vitest/prefer-to-contain': [0],
+ '@vitest/prefer-to-have-length': [0],
+ '@vitest/prefer-todo': [0],
+ '@vitest/require-hook': [0],
+ '@vitest/require-to-throw-message': [0],
+ '@vitest/require-top-level-describe': [0],
+ '@vitest/valid-describe-callback': [2],
+ '@vitest/valid-expect': [2],
+ '@vitest/valid-title': [2],
+ },
+}, {
+ files: ['web_src/js/modules/fetch.js', 'web_src/js/standalone/**/*'],
+
+ rules: {
+ 'no-restricted-syntax': [
+ 2,
+ 'WithStatement',
+ 'ForInStatement',
+ 'LabeledStatement',
+ 'SequenceExpression',
+ ],
+ },
+}, {
+ files: ['tests/e2e/**/*.js'],
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ },
+
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ rules: {
+ ...playwright.configs['flat/recommended'].rules,
+ 'playwright/no-conditional-in-test': [0],
+ 'playwright/no-conditional-expect': [0],
+ 'playwright/no-networkidle': [0],
+
+ 'playwright/no-skipped-test': [
+ 2,
+ {
+ allowConditional: true,
+ },
+ ],
+
+ 'playwright/prefer-comparison-matcher': [2],
+ 'playwright/prefer-equality-matcher': [2],
+ 'playwright/prefer-to-contain': [2],
+ 'playwright/prefer-to-have-length': [2],
+ 'playwright/require-to-throw-message': [2],
+ },
+},
+...vue.configs['flat/recommended'],
+{
+ files: ['web_src/js/components/*.vue'],
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ },
+
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ rules: {
+ 'vue/attributes-order': [0],
+ 'vue/html-closing-bracket-spacing': [2, {
+ startTag: 'never',
+ endTag: 'never',
+ selfClosingTag: 'never',
+ }],
+ 'vue/max-attributes-per-line': [0],
+ 'vue-scoped-css/enforce-style-type': [0],
+ },
+},
+
+];
diff --git a/package-lock.json b/package-lock.json
index 1887edf456..ed6ca6f647 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -70,10 +70,9 @@
"@vitest/coverage-v8": "2.1.3",
"@vitest/eslint-plugin": "1.1.7",
"@vue/test-utils": "2.4.6",
- "eslint": "8.57.1",
+ "eslint": "9.13.0",
"eslint-plugin-array-func": "4.0.0",
- "eslint-plugin-github": "5.0.2",
- "eslint-plugin-i": "2.29.1",
+ "eslint-plugin-import-x": "4.3.1",
"eslint-plugin-no-jquery": "3.0.2",
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-playwright": "1.6.2",
@@ -84,6 +83,7 @@
"eslint-plugin-vue": "9.28.0",
"eslint-plugin-vue-scoped-css": "2.8.1",
"eslint-plugin-wc": "2.2.0",
+ "globals": "15.11.0",
"happy-dom": "15.7.4",
"license-checker-rseidelsohn": "4.4.2",
"markdownlint-cli": "0.42.0",
@@ -3019,17 +3019,66 @@
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
+ "node_modules/@eslint/config-array": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
+ "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.4",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz",
+ "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
+ "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@@ -3037,7 +3086,7 @@
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -3071,35 +3120,17 @@
"concat-map": "0.0.1"
}
},
- "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
@@ -3123,21 +3154,37 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz",
+ "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@github/browserslist-config": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@github/browserslist-config/-/browserslist-config-1.0.0.tgz",
- "integrity": "sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==",
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+ "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
"dev": true,
- "license": "MIT"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz",
+ "integrity": "sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
},
"node_modules/@github/combobox-nav": {
"version": "2.3.1",
@@ -3167,44 +3214,28 @@
"dom-input-range": "^1.2.0"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
- "deprecated": "Use @eslint/config-array instead",
+ "node_modules/@humanfs/core": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz",
+ "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==",
"dev": true,
"license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.3",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
"engines": {
- "node": ">=10.10.0"
+ "node": ">=18.18.0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@humanfs/node": {
+ "version": "0.16.5",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz",
+ "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
+ "license": "Apache-2.0",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@humanfs/core": "^0.19.0",
+ "@humanwhocodes/retry": "^0.3.0"
},
"engines": {
- "node": "*"
+ "node": ">=18.18.0"
}
},
"node_modules/@humanwhocodes/module-importer": {
@@ -3221,13 +3252,19 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
"dev": true,
- "license": "BSD-3-Clause"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@iconify/types": {
"version": "2.0.0",
@@ -3599,19 +3636,6 @@
"node": ">=14"
}
},
- "node_modules/@pkgr/core": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
- "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
- }
- },
"node_modules/@playwright/test": {
"version": "1.48.1",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.48.1.tgz",
@@ -4603,69 +4627,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.10.0.tgz",
- "integrity": "sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.10.0",
- "@typescript-eslint/type-utils": "8.10.0",
- "@typescript-eslint/utils": "8.10.0",
- "@typescript-eslint/visitor-keys": "8.10.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.3.1",
- "natural-compare": "^1.4.0",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
- "eslint": "^8.57.0 || ^9.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.10.0.tgz",
- "integrity": "sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "8.10.0",
- "@typescript-eslint/types": "8.10.0",
- "@typescript-eslint/typescript-estree": "8.10.0",
- "@typescript-eslint/visitor-keys": "8.10.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.10.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.10.0.tgz",
@@ -4684,31 +4645,6 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@typescript-eslint/type-utils": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.10.0.tgz",
- "integrity": "sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "8.10.0",
- "@typescript-eslint/utils": "8.10.0",
- "debug": "^4.3.4",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"node_modules/@typescript-eslint/types": {
"version": "8.10.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.10.0.tgz",
@@ -4822,13 +4758,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@vitejs/plugin-vue": {
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz",
@@ -5568,16 +5497,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"license": "Python-2.0"
},
- "node_modules/aria-query": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
- "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/array-buffer-byte-length": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
@@ -8012,60 +7931,64 @@
}
},
"node_modules/eslint": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
- "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz",
+ "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.1",
- "@humanwhocodes/config-array": "^0.13.0",
+ "@eslint-community/regexpp": "^4.11.0",
+ "@eslint/config-array": "^0.18.0",
+ "@eslint/core": "^0.7.0",
+ "@eslint/eslintrc": "^3.1.0",
+ "@eslint/js": "9.13.0",
+ "@eslint/plugin-kit": "^0.2.0",
+ "@humanfs/node": "^0.16.5",
"@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
+ "@humanwhocodes/retry": "^0.3.1",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
- "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",
- "esquery": "^1.4.2",
+ "eslint-scope": "^8.1.0",
+ "eslint-visitor-keys": "^4.1.0",
+ "espree": "^10.2.0",
+ "esquery": "^1.5.0",
"esutils": "^2.0.2",
"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.19.0",
- "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "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",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
"optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
"text-table": "^0.2.0"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-compat-utils": {
@@ -8084,19 +8007,6 @@
"eslint": ">=6.0.0"
}
},
- "node_modules/eslint-config-prettier": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
- "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
"node_modules/eslint-import-resolver-node": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
@@ -8160,157 +8070,6 @@
"eslint": ">=8.40.0"
}
},
- "node_modules/eslint-plugin-escompat": {
- "version": "3.11.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.3.tgz",
- "integrity": "sha512-Gz/eTJzl7fK9SPBkvB3t+xc1iribxRc5Fgu6Z7206b5q1d7kG0t8Drtin8MRY4UgGBg8Zu1HG6RGzR35LCUpLA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.23.1"
- },
- "peerDependencies": {
- "eslint": ">=5.14.1"
- }
- },
- "node_modules/eslint-plugin-eslint-comments": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz",
- "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^1.0.5",
- "ignore": "^5.0.5"
- },
- "engines": {
- "node": ">=6.5.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/eslint-plugin-filenames": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz",
- "integrity": "sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash.camelcase": "4.3.0",
- "lodash.kebabcase": "4.1.1",
- "lodash.snakecase": "4.1.1",
- "lodash.upperfirst": "4.3.1"
- },
- "peerDependencies": {
- "eslint": "*"
- }
- },
- "node_modules/eslint-plugin-github": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-5.0.2.tgz",
- "integrity": "sha512-nMdzWJQ5CimjQDY6SFeJ0KIXuNFf0dgDWEd4eP3UWfuTuP/dXcZJDg7MQRvAFt743T1zUi4+/HdOihfu8xJkLA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@github/browserslist-config": "^1.0.0",
- "@typescript-eslint/eslint-plugin": "^8.0.0",
- "@typescript-eslint/parser": "^8.0.0",
- "aria-query": "^5.3.0",
- "eslint-config-prettier": ">=8.0.0",
- "eslint-plugin-escompat": "^3.3.3",
- "eslint-plugin-eslint-comments": "^3.2.0",
- "eslint-plugin-filenames": "^1.3.2",
- "eslint-plugin-i18n-text": "^1.0.1",
- "eslint-plugin-import": "^2.25.2",
- "eslint-plugin-jsx-a11y": "^6.7.1",
- "eslint-plugin-no-only-tests": "^3.0.0",
- "eslint-plugin-prettier": "^5.0.0",
- "eslint-rule-documentation": ">=1.0.0",
- "jsx-ast-utils": "^3.3.2",
- "prettier": "^3.0.0",
- "svg-element-attributes": "^1.3.1"
- },
- "bin": {
- "eslint-ignore-errors": "bin/eslint-ignore-errors.js"
- },
- "peerDependencies": {
- "eslint": "^8.0.1"
- }
- },
- "node_modules/eslint-plugin-i": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.29.1.tgz",
- "integrity": "sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.3.4",
- "doctrine": "^3.0.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.8.0",
- "get-tsconfig": "^4.7.2",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
- },
- "peerDependencies": {
- "eslint": "^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-i/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/eslint-plugin-i/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/eslint-plugin-i18n-text": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz",
- "integrity": "sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "eslint": ">=5.0.0"
- }
- },
"node_modules/eslint-plugin-import": {
"version": "2.31.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
@@ -8345,6 +8104,47 @@
"eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
}
},
+ "node_modules/eslint-plugin-import-x": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.3.1.tgz",
+ "integrity": "sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^8.1.0",
+ "debug": "^4.3.4",
+ "doctrine": "^3.0.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "get-tsconfig": "^4.7.3",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.3",
+ "semver": "^7.6.3",
+ "stable-hash": "^0.0.4",
+ "tslib": "^2.6.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-import-x/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/eslint-plugin-import/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -8477,16 +8277,6 @@
"eslint": ">=8.0.0"
}
},
- "node_modules/eslint-plugin-no-only-tests": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz",
- "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=5.0.0"
- }
- },
"node_modules/eslint-plugin-no-use-extend-native": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.5.0.tgz",
@@ -8528,41 +8318,26 @@
}
}
},
- "node_modules/eslint-plugin-prettier": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
- "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
+ "node_modules/eslint-plugin-playwright/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "prettier-linter-helpers": "^1.0.0",
- "synckit": "^0.9.1"
+ "type-fest": "^0.20.2"
},
"engines": {
- "node": "^14.18.0 || >=16.0.0"
+ "node": ">=8"
},
"funding": {
- "url": "https://opencollective.com/eslint-plugin-prettier"
- },
- "peerDependencies": {
- "@types/eslint": ">=8.0.0",
- "eslint": ">=8.0.0",
- "eslint-config-prettier": "*",
- "prettier": ">=3.0.0"
- },
- "peerDependenciesMeta": {
- "@types/eslint": {
- "optional": true
- },
- "eslint-config-prettier": {
- "optional": true
- }
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.37.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz",
- "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==",
+ "version": "7.36.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
+ "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8592,19 +8367,6 @@
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
- "node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
- "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
- }
- },
"node_modules/eslint-plugin-react/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -9143,6 +8905,19 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
+ "node_modules/eslint-plugin-sonarjs/node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
+ "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
"node_modules/eslint-plugin-sonarjs/node_modules/eslint-scope": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz",
@@ -9207,19 +8982,6 @@
"eslint": ">=8.56.0"
}
},
- "node_modules/eslint-plugin-unicorn/node_modules/globals": {
- "version": "15.11.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz",
- "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/eslint-plugin-vitest-globals": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.5.0.tgz",
@@ -9277,6 +9039,22 @@
"vue-eslint-parser": ">=7.1.0"
}
},
+ "node_modules/eslint-plugin-vue/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/eslint-plugin-wc": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.2.0.tgz",
@@ -9291,16 +9069,6 @@
"eslint": ">=8.40.0"
}
},
- "node_modules/eslint-rule-documentation": {
- "version": "1.0.23",
- "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz",
- "integrity": "sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/eslint-scope": {
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
@@ -9331,6 +9099,13 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/eslint/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -9359,32 +9134,18 @@
"concat-map": "0.0.1"
}
},
- "node_modules/eslint/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz",
+ "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -9592,16 +9353,16 @@
}
},
"node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/fill-range": {
@@ -9643,18 +9404,17 @@
}
},
"node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
"license": "MIT",
"dependencies": {
"flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16"
}
},
"node_modules/flatted": {
@@ -9993,16 +9753,13 @@
}
},
"node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "version": "15.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz",
+ "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -10778,16 +10535,6 @@
"obj-props": "^1.0.0"
}
},
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
@@ -11610,13 +11357,6 @@
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"license": "MIT"
},
- "node_modules/lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
@@ -11631,13 +11371,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.kebabcase": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
- "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -11645,13 +11378,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.snakecase": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
- "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.sortedlastindex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/lodash.sortedlastindex/-/lodash.sortedlastindex-4.1.0.tgz",
@@ -11673,13 +11399,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.upperfirst": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
- "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -13304,35 +13023,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/prettier": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
- "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin/prettier.cjs"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/pretty-ms": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz",
@@ -13964,23 +13654,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/robust-predicates": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
@@ -14530,6 +14203,13 @@
"spdx-ranges": "^2.0.0"
}
},
+ "node_modules/stable-hash": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz",
+ "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/stackback": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
@@ -15133,17 +14813,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/svg-element-attributes": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz",
- "integrity": "sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/svg-tags": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
@@ -15205,23 +14874,6 @@
"node": ">=14"
}
},
- "node_modules/synckit": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz",
- "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@pkgr/core": "^0.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
- }
- },
"node_modules/table": {
"version": "6.8.2",
"resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz",
diff --git a/package.json b/package.json
index 5054b073e1..eecff8e617 100644
--- a/package.json
+++ b/package.json
@@ -69,10 +69,9 @@
"@vitest/coverage-v8": "2.1.3",
"@vitest/eslint-plugin": "1.1.7",
"@vue/test-utils": "2.4.6",
- "eslint": "8.57.1",
+ "eslint": "9.13.0",
"eslint-plugin-array-func": "4.0.0",
- "eslint-plugin-github": "5.0.2",
- "eslint-plugin-i": "2.29.1",
+ "eslint-plugin-import-x": "4.3.1",
"eslint-plugin-no-jquery": "3.0.2",
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-playwright": "1.6.2",
@@ -83,6 +82,7 @@
"eslint-plugin-vue": "9.28.0",
"eslint-plugin-vue-scoped-css": "2.8.1",
"eslint-plugin-wc": "2.2.0",
+ "globals": "15.11.0",
"happy-dom": "15.7.4",
"license-checker-rseidelsohn": "4.4.2",
"markdownlint-cli": "0.42.0",
diff --git a/tests/e2e/.eslintrc.yaml b/tests/e2e/.eslintrc.yaml
deleted file mode 100644
index 1486431524..0000000000
--- a/tests/e2e/.eslintrc.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-plugins:
- - eslint-plugin-playwright
-
-extends:
- - ../../.eslintrc.yaml
- - plugin:playwright/recommended
-
-parserOptions:
- sourceType: module
- ecmaVersion: latest
-
-env:
- browser: true
-
-rules:
- playwright/no-conditional-in-test: [0]
- playwright/no-conditional-expect: [0]
- playwright/no-networkidle: [0]
- playwright/no-skipped-test: [2, {allowConditional: true}]
- playwright/prefer-comparison-matcher: [2]
- playwright/prefer-equality-matcher: [2]
- playwright/prefer-to-contain: [2]
- playwright/prefer-to-have-length: [2]
- playwright/require-to-throw-message: [2]
diff --git a/tools/generate-images.js b/tools/generate-images.js
index 0bd3af29e4..d28e0916f7 100755
--- a/tools/generate-images.js
+++ b/tools/generate-images.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-import imageminZopfli from 'imagemin-zopfli'; // eslint-disable-line i/no-unresolved
-import {loadSVGFromString, Canvas, Rect, util} from 'fabric/node'; // eslint-disable-line i/no-unresolved
+import imageminZopfli from 'imagemin-zopfli'; // eslint-disable-line import-x/no-unresolved
+import {loadSVGFromString, Canvas, Rect, util} from 'fabric/node'; // eslint-disable-line import-x/no-unresolved
import {optimize} from 'svgo';
import {readFile, writeFile} from 'node:fs/promises';
import {argv, exit} from 'node:process';
diff --git a/web_src/js/components/.eslintrc.yaml b/web_src/js/components/.eslintrc.yaml
deleted file mode 100644
index 0d233442bc..0000000000
--- a/web_src/js/components/.eslintrc.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-plugins:
- - eslint-plugin-vue
- - eslint-plugin-vue-scoped-css
-
-extends:
- - ../../../.eslintrc.yaml
- - plugin:vue/vue3-recommended
- - plugin:vue-scoped-css/vue3-recommended
-
-parserOptions:
- sourceType: module
- ecmaVersion: latest
-
-env:
- browser: true
-
-rules:
- vue/attributes-order: [0]
- vue/html-closing-bracket-spacing: [2, {startTag: never, endTag: never, selfClosingTag: never}]
- vue/max-attributes-per-line: [0]
- vue-scoped-css/enforce-style-type: [0]