diff --git a/eslint.config.ts b/eslint.config.ts index a31b6c1fc7..9083ae9814 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -1,7 +1,6 @@ import arrayFunc from 'eslint-plugin-array-func'; import comments from '@eslint-community/eslint-plugin-eslint-comments'; import deMorgan from 'eslint-plugin-de-morgan'; -import github from 'eslint-plugin-github'; import globals from 'globals'; import importPlugin from 'eslint-plugin-import-x'; import playwright from 'eslint-plugin-playwright'; @@ -72,7 +71,6 @@ export default defineConfig([ regexp, sonarjs, unicorn, - github, wc, }, settings: { @@ -86,7 +84,6 @@ export default defineConfig([ '@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], @@ -193,7 +190,6 @@ export default defineConfig([ '@typescript-eslint/no-duplicate-type-constituents': [2, {ignoreUnions: true}], '@typescript-eslint/no-dynamic-delete': [0], '@typescript-eslint/no-empty-function': [0], - '@typescript-eslint/no-empty-interface': [0], '@typescript-eslint/no-empty-object-type': [2], '@typescript-eslint/no-explicit-any': [0], '@typescript-eslint/no-extra-non-null-assertion': [2], @@ -206,7 +202,6 @@ export default defineConfig([ '@typescript-eslint/no-invalid-this': [0], '@typescript-eslint/no-invalid-void-type': [0], '@typescript-eslint/no-loop-func': [0], - '@typescript-eslint/no-loss-of-precision': [0], '@typescript-eslint/no-magic-numbers': [0], '@typescript-eslint/no-meaningless-void-operator': [0], '@typescript-eslint/no-misused-new': [2], @@ -235,7 +230,7 @@ export default defineConfig([ '@typescript-eslint/no-unsafe-assignment': [0], '@typescript-eslint/no-unsafe-call': [0], '@typescript-eslint/no-unsafe-declaration-merging': [2], - '@typescript-eslint/no-unsafe-enum-comparison': [2], + '@typescript-eslint/no-unsafe-enum-comparison': [0], '@typescript-eslint/no-unsafe-function-type': [2], '@typescript-eslint/no-unsafe-member-access': [0], '@typescript-eslint/no-unsafe-return': [0], @@ -279,7 +274,6 @@ export default defineConfig([ '@typescript-eslint/strict-void-return': [0], '@typescript-eslint/switch-exhaustiveness-check': [0], '@typescript-eslint/triple-slash-reference': [2], - '@typescript-eslint/typedef': [0], '@typescript-eslint/unbound-method': [0], // too many false-positives '@typescript-eslint/unified-signatures': [2], 'accessor-pairs': [2], @@ -312,32 +306,9 @@ export default defineConfig([ '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': [0], // https://github.com/github/eslint-plugin-github/issues/599 - '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': [0], - 'github/require-passive-events': [2], - 'gitea/unescaped-html-literal': [2], 'grouped-accessor-pairs': [2], 'guard-for-in': [0], - 'id-blacklist': [0], + 'id-denylist': [0], 'id-length': [0], 'id-match': [0], 'import-x/consistent-type-specifier-style': [0], @@ -384,7 +355,6 @@ export default defineConfig([ 'import-x/prefer-default-export': [0], 'import-x/unambiguous': [0], 'init-declarations': [0], - 'line-comment-position': [0], 'logical-assignment-operators': [0], 'max-classes-per-file': [0], 'max-depth': [0], @@ -393,14 +363,12 @@ export default defineConfig([ 'max-nested-callbacks': [0], 'max-params': [0], 'max-statements': [0], - 'multiline-comment-style': [0], 'new-cap': [0], 'no-alert': [0], 'no-array-constructor': [0], // handled by @typescript-eslint/no-array-constructor '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], @@ -557,12 +525,11 @@ export default defineConfig([ 'no-nested-ternary': [0], 'no-new-func': [0], // handled by @typescript-eslint/no-implied-eval 'no-new-native-nonconstructor': [2], - 'no-new-object': [2], - 'no-new-symbol': [0], // handled by no-new-native-nonconstructor 'no-new-wrappers': [2], 'no-new': [0], 'no-nonoctal-decimal-escape': [2], 'no-obj-calls': [2], + 'no-object-constructor': [2], 'no-octal-escape': [2], 'no-octal': [2], 'no-param-reassign': [0], @@ -622,10 +589,8 @@ export default defineConfig([ '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': [0], // handled by @stylistic/operator-linebreak 'prefer-arrow-callback': [2, {allowNamedFunctions: true, allowUnboundThis: true}], 'prefer-const': [2, {destructuring: 'all', ignoreReadBeforeAssign: true}], 'prefer-destructuring': [0], @@ -761,139 +726,309 @@ export default defineConfig([ 'strict': [0], 'symbol-description': [2], 'unicode-bom': [2, 'never'], - 'unicorn/better-regex': [0], + 'unicorn/better-dom-traversing': [2], 'unicorn/catch-error-name': [0], + 'unicorn/class-reference-in-static-methods': [2], + 'unicorn/comment-content': [0], + 'unicorn/consistent-assert': [0], + 'unicorn/consistent-boolean-name': [0], + 'unicorn/consistent-class-member-order': [0], + 'unicorn/consistent-compound-words': [0], // too opinionated + 'unicorn/consistent-conditional-object-spread': [2], + 'unicorn/consistent-date-clone': [2], 'unicorn/consistent-destructuring': [2], 'unicorn/consistent-empty-array-spread': [2], - 'unicorn/consistent-template-literal-escape': [2], 'unicorn/consistent-existence-index-check': [0], + 'unicorn/consistent-export-decorator-position': [2], 'unicorn/consistent-function-scoping': [0], + 'unicorn/consistent-function-style': [2], + 'unicorn/consistent-json-file-read': [2], + 'unicorn/consistent-optional-chaining': [2], + 'unicorn/consistent-template-literal-escape': [2], 'unicorn/custom-error-definition': [0], + 'unicorn/default-export-style': [2], + 'unicorn/dom-node-dataset': [2, {preferAttributes: true}], 'unicorn/empty-brace-spaces': [2], 'unicorn/error-message': [0], 'unicorn/escape-case': [0], 'unicorn/expiring-todo-comments': [0], 'unicorn/explicit-length-check': [0], + 'unicorn/explicit-timer-delay': [2], 'unicorn/filename-case': [0], - 'unicorn/import-index': [0], + 'unicorn/id-match': [2], 'unicorn/import-style': [0], 'unicorn/isolated-functions': [2, {functions: []}], + 'unicorn/logical-assignment-operators': [0], + 'unicorn/max-nested-calls': [0], + 'unicorn/name-replacements': [0], 'unicorn/new-for-builtins': [2], 'unicorn/no-abusive-eslint-disable': [0], + 'unicorn/no-accessor-recursion': [2], + 'unicorn/no-accidental-bitwise-operator': [2], 'unicorn/no-anonymous-default-export': [0], 'unicorn/no-array-callback-reference': [0], - 'unicorn/no-array-for-each': [2], + 'unicorn/no-array-concat-in-loop': [2], + 'unicorn/no-array-fill-with-reference-type': [2], + 'unicorn/no-array-from-fill': [2], + 'unicorn/no-array-front-mutation': [0], 'unicorn/no-array-method-this-argument': [2], - 'unicorn/no-array-push-push': [2], 'unicorn/no-array-reduce': [2], + 'unicorn/no-array-reverse': [0], + 'unicorn/no-array-sort': [0], + 'unicorn/no-array-sort-for-min-max': [2], + 'unicorn/no-array-splice': [0], + 'unicorn/no-asterisk-prefix-in-documentation-comments': [0], 'unicorn/no-await-expression-member': [0], 'unicorn/no-await-in-promise-methods': [2], + 'unicorn/no-blob-to-file': [2], + 'unicorn/no-boolean-sort-comparator': [2], + 'unicorn/no-break-in-nested-loop': [0], + 'unicorn/no-canvas-to-image': [2], + 'unicorn/no-chained-comparison': [2], + 'unicorn/no-collection-bracket-access': [2], + 'unicorn/no-computed-property-existence-check': [0], + 'unicorn/no-confusing-array-splice': [2], + 'unicorn/no-confusing-array-with': [2], 'unicorn/no-console-spaces': [0], + 'unicorn/no-constant-zero-expression': [2], + 'unicorn/no-declarations-before-early-exit': [0], 'unicorn/no-document-cookie': [2], + 'unicorn/no-double-comparison': [2], + 'unicorn/no-duplicate-if-branches': [2], + 'unicorn/no-duplicate-logical-operands': [2], + 'unicorn/no-duplicate-loops': [0], + 'unicorn/no-duplicate-set-values': [2], 'unicorn/no-empty-file': [2], + 'unicorn/no-error-property-assignment': [2], + 'unicorn/no-exports-in-scripts': [2], + 'unicorn/no-for-each': [2], 'unicorn/no-for-loop': [0], - 'unicorn/no-hex-escape': [0], + 'unicorn/no-global-object-property-assignment': [0], 'unicorn/no-immediate-mutation': [0], - 'unicorn/no-instanceof-array': [0], + 'unicorn/no-impossible-length-comparison': [2], + 'unicorn/no-incorrect-query-selector': [2], + 'unicorn/no-incorrect-template-string-interpolation': [0], + 'unicorn/no-instanceof-builtins': [2], + 'unicorn/no-invalid-argument-count': [0], + 'unicorn/no-invalid-character-comparison': [2], 'unicorn/no-invalid-fetch-options': [2], + 'unicorn/no-invalid-file-input-accept': [2], 'unicorn/no-invalid-remove-event-listener': [2], 'unicorn/no-keyword-prefix': [0], - 'unicorn/no-length-as-slice-end': [2], + 'unicorn/no-late-current-target-access': [2], 'unicorn/no-lonely-if': [2], + 'unicorn/no-loop-iterable-mutation': [2], 'unicorn/no-magic-array-flat-depth': [0], + 'unicorn/no-manually-wrapped-comments': [0], // too opinionated + 'unicorn/no-mismatched-map-key': [2], + 'unicorn/no-misrefactored-assignment': [2], + 'unicorn/no-named-default': [2], + 'unicorn/no-negated-array-predicate': [2], + 'unicorn/no-negated-comparison': [2], '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-non-function-verb-prefix': [0], + 'unicorn/no-nonstandard-builtin-properties': [2], 'unicorn/no-null': [0], 'unicorn/no-object-as-default-parameter': [0], + 'unicorn/no-object-methods-with-collections': [2], + 'unicorn/no-optional-chaining-on-undeclared-variable': [2], 'unicorn/no-process-exit': [0], + 'unicorn/no-redundant-comparison': [2], + 'unicorn/no-return-array-push': [2], + 'unicorn/no-selector-as-dom-name': [2], 'unicorn/no-single-promise-in-promise-methods': [2], 'unicorn/no-static-only-class': [2], + 'unicorn/no-subtraction-comparison': [2], 'unicorn/no-thenable': [2], 'unicorn/no-this-assignment': [2], + 'unicorn/no-this-outside-of-class': [0], // gitea uses `this` in non-class functions + 'unicorn/no-top-level-assignment-in-function': [0], + 'unicorn/no-top-level-side-effects': [0], 'unicorn/no-typeof-undefined': [2], + 'unicorn/no-uncalled-method': [2], + 'unicorn/no-undeclared-class-members': [2], + 'unicorn/no-unnecessary-array-flat-depth': [2], + 'unicorn/no-unnecessary-array-splice-count': [2], 'unicorn/no-unnecessary-await': [2], + 'unicorn/no-unnecessary-boolean-comparison': [2], + 'unicorn/no-unnecessary-global-this': [0], + 'unicorn/no-unnecessary-nested-ternary': [2], 'unicorn/no-unnecessary-polyfills': [2], + 'unicorn/no-unnecessary-slice-end': [2], + 'unicorn/no-unnecessary-splice': [2], 'unicorn/no-unreadable-array-destructuring': [0], + 'unicorn/no-unreadable-for-of-expression': [0], 'unicorn/no-unreadable-iife': [0], + 'unicorn/no-unreadable-new-expression': [0], + 'unicorn/no-unreadable-object-destructuring': [0], + 'unicorn/no-unsafe-buffer-conversion': [2], + 'unicorn/no-unsafe-dom-html': [0], + 'unicorn/no-unsafe-property-key': [0], + 'unicorn/no-unsafe-string-replacement': [0], + 'unicorn/no-unused-array-method-return': [2], 'unicorn/no-unused-properties': [2], + 'unicorn/no-useless-boolean-cast': [2], + 'unicorn/no-useless-coercion': [2], 'unicorn/no-useless-collection-argument': [2], + 'unicorn/no-useless-compound-assignment': [2], + 'unicorn/no-useless-concat': [2], + 'unicorn/no-useless-continue': [2], + 'unicorn/no-useless-delete-check': [2], + 'unicorn/no-useless-else': [0], + 'unicorn/no-useless-error-capture-stack-trace': [2], 'unicorn/no-useless-fallback-in-spread': [2], 'unicorn/no-useless-iterator-to-array': [2], 'unicorn/no-useless-length-check': [2], + 'unicorn/no-useless-logical-operand': [2], + 'unicorn/no-useless-override': [2], 'unicorn/no-useless-promise-resolve-reject': [2], + 'unicorn/no-useless-recursion': [0], 'unicorn/no-useless-spread': [2], 'unicorn/no-useless-switch-case': [2], + 'unicorn/no-useless-template-literals': [2], 'unicorn/no-useless-undefined': [0], + 'unicorn/no-xor-as-exponentiation': [2], 'unicorn/no-zero-fractions': [2], 'unicorn/number-literal-case': [0], 'unicorn/numeric-separators-style': [0], + 'unicorn/operator-assignment': [2], 'unicorn/prefer-add-event-listener': [2], + 'unicorn/prefer-add-event-listener-options': [2], 'unicorn/prefer-array-find': [0], // handled by @typescript-eslint/prefer-find 'unicorn/prefer-array-flat': [2], 'unicorn/prefer-array-flat-map': [2], + 'unicorn/prefer-array-from-async': [2], + 'unicorn/prefer-array-from-map': [2], 'unicorn/prefer-array-index-of': [2], + 'unicorn/prefer-array-iterable-methods': [2], + 'unicorn/prefer-array-last-methods': [2], + 'unicorn/prefer-array-slice': [2], 'unicorn/prefer-array-some': [2], 'unicorn/prefer-at': [0], + 'unicorn/prefer-await': [2], + 'unicorn/prefer-bigint-literals': [2], 'unicorn/prefer-blob-reading-methods': [2], + 'unicorn/prefer-boolean-return': [2], + 'unicorn/prefer-class-fields': [2], + 'unicorn/prefer-classlist-toggle': [2], 'unicorn/prefer-code-point': [0], + 'unicorn/prefer-continue': [0], 'unicorn/prefer-date-now': [2], 'unicorn/prefer-default-parameters': [0], + 'unicorn/prefer-direct-iteration': [2], + 'unicorn/prefer-dispose': [2], 'unicorn/prefer-dom-node-append': [2], - 'unicorn/prefer-dom-node-dataset': [0], + 'unicorn/prefer-dom-node-html-methods': [0], 'unicorn/prefer-dom-node-remove': [2], 'unicorn/prefer-dom-node-text-content': [2], + 'unicorn/prefer-early-return': [0], + 'unicorn/prefer-else-if': [2], 'unicorn/prefer-event-target': [2], 'unicorn/prefer-export-from': [0], + 'unicorn/prefer-flat-math-min-max': [2], + 'unicorn/prefer-get-or-insert-computed': [2], + 'unicorn/prefer-global-number-constants': [2], 'unicorn/prefer-global-this': [0], + 'unicorn/prefer-has-check': [2], + 'unicorn/prefer-hoisting-branch-code': [2], + 'unicorn/prefer-https': [0], // false-positives on namespace and schema URIs + 'unicorn/prefer-identifier-import-export-specifiers': [2], + 'unicorn/prefer-import-meta-properties': [2], 'unicorn/prefer-includes': [0], // handled by @typescript-eslint/prefer-includes - 'unicorn/prefer-json-parse-buffer': [0], + 'unicorn/prefer-includes-over-repeated-comparisons': [0], // too opinionated + 'unicorn/prefer-iterable-in-constructor': [2], + 'unicorn/prefer-iterator-concat': [0], // too opinionated + 'unicorn/prefer-iterator-to-array': [2], + 'unicorn/prefer-iterator-to-array-at-end': [2], 'unicorn/prefer-keyboard-event-key': [2], + 'unicorn/prefer-location-assign': [2], 'unicorn/prefer-logical-operator-over-ternary': [2], + 'unicorn/prefer-map-from-entries': [0], + 'unicorn/prefer-math-abs': [2], + 'unicorn/prefer-math-constants': [2], 'unicorn/prefer-math-min-max': [2], 'unicorn/prefer-math-trunc': [2], + 'unicorn/prefer-minimal-ternary': [0], '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-coercion': [0], + 'unicorn/prefer-number-is-safe-integer': [0], 'unicorn/prefer-number-properties': [0], + 'unicorn/prefer-object-define-properties': [2], + 'unicorn/prefer-object-destructuring-defaults': [2], 'unicorn/prefer-object-from-entries': [2], - 'unicorn/prefer-object-has-own': [0], + 'unicorn/prefer-object-iterable-methods': [2], 'unicorn/prefer-optional-catch-binding': [2], + 'unicorn/prefer-path2d': [2], + 'unicorn/prefer-private-class-fields': [0], + 'unicorn/prefer-promise-with-resolvers': [2], 'unicorn/prefer-prototype-methods': [0], 'unicorn/prefer-query-selector': [2], + 'unicorn/prefer-queue-microtask': [2], 'unicorn/prefer-reflect-apply': [0], + 'unicorn/prefer-regexp-escape': [0], 'unicorn/prefer-regexp-test': [2], 'unicorn/prefer-response-static-json': [2], + 'unicorn/prefer-scoped-selector': [0], 'unicorn/prefer-set-has': [0], 'unicorn/prefer-set-size': [2], + 'unicorn/prefer-short-arrow-method': [2], 'unicorn/prefer-simple-condition-first': [0], + 'unicorn/prefer-simple-sort-comparator': [2], + 'unicorn/prefer-single-array-predicate': [2], + 'unicorn/prefer-single-call': [2], + 'unicorn/prefer-single-object-destructuring': [2], + 'unicorn/prefer-single-replace': [2], + 'unicorn/prefer-smaller-scope': [2], + 'unicorn/prefer-split-limit': [0], // too opinionated 'unicorn/prefer-spread': [0], + 'unicorn/prefer-string-match-all': [2], + 'unicorn/prefer-string-pad-start-end': [2], 'unicorn/prefer-string-raw': [0], + 'unicorn/prefer-string-repeat': [2], 'unicorn/prefer-string-replace-all': [0], 'unicorn/prefer-string-slice': [0], 'unicorn/prefer-string-starts-ends-with': [0], // handled by @typescript-eslint/prefer-string-starts-ends-with 'unicorn/prefer-string-trim-start-end': [2], 'unicorn/prefer-structured-clone': [2], 'unicorn/prefer-switch': [0], + 'unicorn/prefer-temporal': [0], 'unicorn/prefer-ternary': [0], 'unicorn/prefer-top-level-await': [0], 'unicorn/prefer-type-error': [0], + 'unicorn/prefer-type-literal-last': [0], + 'unicorn/prefer-uint8array-base64': [0], + 'unicorn/prefer-unary-minus': [2], + 'unicorn/prefer-unicode-code-point-escapes': [0], + 'unicorn/prefer-url-can-parse': [2], + 'unicorn/prefer-url-href': [2], + 'unicorn/prefer-while-loop-condition': [2], 'unicorn/prevent-abbreviations': [0], 'unicorn/relative-url-style': [2], 'unicorn/require-array-join-separator': [2], + 'unicorn/require-array-sort-compare': [0], + 'unicorn/require-css-escape': [2], + 'unicorn/require-module-attributes': [2], + 'unicorn/require-module-specifiers': [0], 'unicorn/require-number-to-fixed-digits-argument': [2], + 'unicorn/require-passive-events': [2], 'unicorn/require-post-message-target-origin': [0], + 'unicorn/require-proxy-trap-boolean-return': [2], 'unicorn/string-content': [0], 'unicorn/switch-case-braces': [0], 'unicorn/switch-case-break-position': [2], 'unicorn/template-indent': [2], 'unicorn/text-encoding-identifier-case': [0], 'unicorn/throw-new-error': [2], + 'unicorn/try-complexity': [0], 'use-isnan': [2], 'valid-typeof': [2, {requireStringLiterals: true}], 'vars-on-top': [0], @@ -956,6 +1091,7 @@ export default defineConfig([ languageOptions: {globals: globals.vitest}, rules: { 'gitea/unescaped-html-literal': [0], + 'unicorn/no-error-property-assignment': [0], 'vitest/consistent-test-filename': [0], 'vitest/consistent-test-it': [0], 'vitest/expect-expect': [0], @@ -967,7 +1103,6 @@ export default defineConfig([ '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': [2], 'vitest/no-hooks': [0], diff --git a/package.json b/package.json index 137d5a0783..e170b7850f 100644 --- a/package.json +++ b/package.json @@ -89,19 +89,18 @@ "@types/swagger-ui-dist": "3.30.6", "@types/throttle-debounce": "5.0.2", "@types/toastify-js": "1.12.4", - "@typescript-eslint/parser": "8.61.0", + "@typescript-eslint/parser": "8.61.1", "@vitejs/plugin-vue": "6.0.7", "@vitest/eslint-plugin": "1.6.20", - "eslint": "10.4.1", + "eslint": "10.5.0", "eslint-import-resolver-typescript": "4.4.5", "eslint-plugin-array-func": "5.1.1", "eslint-plugin-de-morgan": "2.1.2", - "eslint-plugin-github": "6.0.0", "eslint-plugin-import-x": "4.16.2", "eslint-plugin-playwright": "2.10.4", "eslint-plugin-regexp": "3.1.0", "eslint-plugin-sonarjs": "4.0.3", - "eslint-plugin-unicorn": "64.0.0", + "eslint-plugin-unicorn": "68.0.0", "eslint-plugin-vue": "10.9.2", "eslint-plugin-vue-scoped-css": "3.1.1", "eslint-plugin-wc": "3.1.0", @@ -119,7 +118,7 @@ "stylelint-value-no-unknown-custom-properties": "6.1.1", "svgo": "4.0.1", "typescript": "6.0.3", - "typescript-eslint": "8.61.0", + "typescript-eslint": "8.61.1", "updates": "17.18.0", "vitest": "4.1.8", "vue-tsc": "3.3.4" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 90b34abce4..0493673957 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -209,7 +209,7 @@ importers: devDependencies: '@eslint-community/eslint-plugin-eslint-comments': specifier: 4.7.2 - version: 4.7.2(eslint@10.4.1(jiti@2.7.0)) + version: 4.7.2(eslint@10.5.0(jiti@2.7.0)) '@eslint/json': specifier: 2.0.0 version: 2.0.0 @@ -218,7 +218,7 @@ importers: version: 1.60.0 '@stylistic/eslint-plugin': specifier: 5.10.0 - version: 5.10.0(eslint@10.4.1(jiti@2.7.0)) + version: 5.10.0(eslint@10.5.0(jiti@2.7.0)) '@stylistic/stylelint-plugin': specifier: 5.2.0 version: 5.2.0(stylelint@17.13.0(typescript@6.0.3)) @@ -253,50 +253,47 @@ importers: specifier: 1.12.4 version: 1.12.4 '@typescript-eslint/parser': - specifier: 8.61.0 - version: 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) + specifier: 8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) '@vitest/eslint-plugin': specifier: 1.6.20 - version: 1.6.20(@typescript-eslint/eslint-plugin@8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.8(@types/node@25.9.3)(happy-dom@20.10.2)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0))) + version: 1.6.20(@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.8(@types/node@25.9.3)(happy-dom@20.10.2)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0))) eslint: - specifier: 10.4.1 - version: 10.4.1(jiti@2.7.0) + specifier: 10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-import-resolver-typescript: specifier: 4.4.5 - version: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0)) + version: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-array-func: specifier: 5.1.1 - version: 5.1.1(eslint@10.4.1(jiti@2.7.0)) + version: 5.1.1(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-de-morgan: specifier: 2.1.2 - version: 2.1.2(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-github: - specifier: 6.0.0 - version: 6.0.0(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)) + version: 2.1.2(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-import-x: specifier: 4.16.2 - version: 4.16.2(@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)) + version: 4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-playwright: specifier: 2.10.4 - version: 2.10.4(eslint@10.4.1(jiti@2.7.0)) + version: 2.10.4(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-regexp: specifier: 3.1.0 - version: 3.1.0(eslint@10.4.1(jiti@2.7.0)) + version: 3.1.0(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-sonarjs: specifier: 4.0.3 - version: 4.0.3(eslint@10.4.1(jiti@2.7.0)) + version: 4.0.3(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-unicorn: - specifier: 64.0.0 - version: 64.0.0(eslint@10.4.1(jiti@2.7.0)) + specifier: 68.0.0 + version: 68.0.0(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-vue: specifier: 10.9.2 - version: 10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.4.1(jiti@2.7.0)))(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0))) + version: 10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.5.0(jiti@2.7.0)))(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.5.0(jiti@2.7.0))) eslint-plugin-vue-scoped-css: specifier: 3.1.1 - version: 3.1.1(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0))) + version: 3.1.1(eslint@10.5.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.5.0(jiti@2.7.0))) eslint-plugin-wc: specifier: 3.1.0 - version: 3.1.0(eslint@10.4.1(jiti@2.7.0)) + version: 3.1.0(eslint@10.5.0(jiti@2.7.0)) globals: specifier: 17.6.0 version: 17.6.0 @@ -340,8 +337,8 @@ importers: specifier: 6.0.3 version: 6.0.3 typescript-eslint: - specifier: 8.61.0 - version: 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) + specifier: 8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) updates: specifier: 17.18.0 version: 17.18.0 @@ -764,15 +761,6 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.4.1': - resolution: {integrity: sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.40 || 9 - peerDependenciesMeta: - eslint: - optional: true - '@eslint/config-array@0.23.5': resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -781,22 +769,10 @@ packages: resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@1.2.1': resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/json@2.0.0': resolution: {integrity: sha512-P32ZJMIopNWQd1SFhd0tgjfA/hgzUuVSqHmMi2273QaLWHWimXq6V+qL4DNKnjGzO/aNECtYW+rEJ/pWB6uP+w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -809,9 +785,6 @@ packages: resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@github/browserslist-config@1.0.0': - resolution: {integrity: sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==} - '@github/combobox-nav@2.3.1': resolution: {integrity: sha512-gwxPzLw8XKecy1nP63i9lOBritS3bWmxl02UX6G0TwMQZbMem1BCS1tEZgYd3mkrkiDrUMWaX+DbFCuDFo3K+A==} @@ -987,10 +960,6 @@ packages: '@package-json/types@0.0.12': resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} - '@pkgr/core@0.3.6': - resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} - engines: {node: ^14.18.0 || >=16.0.0} - '@playwright/test@1.60.0': resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} engines: {node: '>=18'} @@ -1404,16 +1373,16 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.61.0': - resolution: {integrity: sha512-bFNvl9ZczlVb+wR2Akszf3gHfKVj/8WanXaGJ3UstTA7brNKg0cNdk6X1Psu5V7MZ2oQtzZKOEzIUehaoxbDGw==} + '@typescript-eslint/eslint-plugin@8.61.1': + resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.61.0 + '@typescript-eslint/parser': ^8.61.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.61.0': - resolution: {integrity: sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w==} + '@typescript-eslint/parser@8.61.1': + resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1425,18 +1394,34 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/project-service@8.61.1': + resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/scope-manager@8.61.0': resolution: {integrity: sha512-IWdXFHFSb6mlC3HPc7QsLDm5zYEbUla6trDEHf32D3/dnuUyXd87plScSNXSbm0/RxMvObpI17sv/EDTGrGZkA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.61.1': + resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.61.0': resolution: {integrity: sha512-O5Amvdv9ztMpxpf+vmFULGG78IE6Qwdr3bCGvqwG4nwc9H2qXkOYJJnRbRHyMkQTjv1d03olqwwwzHLMqpFePQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.61.0': - resolution: {integrity: sha512-TuBiQYIkd97yBfInHCTKVYMbX4kvEmpOEuixIuzCU9p8BGT1SfyyO0d0IfDMbPIHcjn/hWnusUX5e8v5Xg+X8A==} + '@typescript-eslint/tsconfig-utils@8.61.1': + resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.61.1': + resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1446,12 +1431,22 @@ packages: resolution: {integrity: sha512-9QTQpZ5Iin4CdIodfbDQFSeiSJKidgYJYug1P9CC2xWgUTvlmixViqDZNciMjwLBZyJnG4tGmPl97rVAFb1AJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.61.1': + resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.61.0': resolution: {integrity: sha512-42zatd5qSvvcV1JdDBCLxYRznvP4eIHpPoZXdkPFnAmanA4FuZ5dibSnCBggY8hQnqajPpoGjXFdZ7fIJKQnlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/typescript-estree@8.61.1': + resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@8.61.0': resolution: {integrity: sha512-3bzFt7ImFMW/jVYwJamDoe/dMOdFLSC6pom6rRjdh4SZJEYupyMzem8e7vKZLclLfpHjlwSAXOUxtKxGXUiLqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1459,10 +1454,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@8.61.1': + resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/visitor-keys@8.61.0': resolution: {integrity: sha512-QVLZu3ZPQEE+HICQyAMZ2yLQhxf0meY/wx6Hx14YcTNj13JB3qHlX3lJ02L3fLGHgERRH71kvYDwiXIguT3AjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.61.1': + resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unrs/resolver-binding-android-arm-eabi@1.12.2': resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} cpu: [arm] @@ -1757,10 +1763,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} @@ -1799,9 +1801,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -1823,14 +1822,6 @@ packages: aws4@1.13.2: resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - axe-core@4.12.0: - resolution: {integrity: sha512-FTavr/7Ba0IptwGOPxnQvdyW2tAsdLBMTBXz7rKH6xJ2skpyxpBxyHkDdBs4lf69yRqYpkqCdfhnwS8YULGOmg==} - engines: {node: '>=4'} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1985,10 +1976,6 @@ packages: citeproc@2.4.63: resolution: {integrity: sha512-68F95Bp4UbgZU/DBUGQn0qV3HDZLCdI9+Bb2ByrTaNJDL5VEm9LqaiNaxljsvoaExSLEXe1/r6n2Z06SCzW3/Q==} - clean-regexp@1.0.0: - resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} - engines: {node: '>=4'} - cli-cursor@1.0.2: resolution: {integrity: sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==} engines: {node: '>=0.10.0'} @@ -2297,9 +2284,6 @@ packages: dagre-d3-es@7.0.14: resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -2376,6 +2360,10 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} + engines: {node: '>=12.20'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -2442,9 +2430,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2524,12 +2509,6 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - eslint-import-context@0.1.9: resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2588,33 +2567,6 @@ packages: peerDependencies: eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-escompat@3.11.4: - resolution: {integrity: sha512-j0ywwNnIufshOzgAu+PfIig1c7VRClKSNKzpniMT2vXQ4leL5q+e/SpMFQU0nrdL2WFFM44XmhSuwmxb3G0CJg==} - peerDependencies: - eslint: '>=5.14.1' - - eslint-plugin-eslint-comments@3.2.0: - resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} - engines: {node: '>=6.5.0'} - peerDependencies: - eslint: '>=4.19.1' - - eslint-plugin-filenames@1.3.2: - resolution: {integrity: sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==} - peerDependencies: - eslint: '*' - - eslint-plugin-github@6.0.0: - resolution: {integrity: sha512-J8MvUoiR/TU/Y9NnEmg1AnbvMUj9R6IO260z47zymMLLvso7B4c80IKjd8diqmqtSmeXXlbIus4i0SvK84flag==} - hasBin: true - peerDependencies: - eslint: ^8 || ^9 - - eslint-plugin-i18n-text@1.0.1: - resolution: {integrity: sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==} - peerDependencies: - eslint: '>=5.0.0' - eslint-plugin-import-x@4.16.2: resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2638,36 +2590,12 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-no-only-tests@3.4.0: - resolution: {integrity: sha512-4S3/9Nb7A2tiMcpzEQE9bQSlpeOz6WJkgryBuou/SA8W2x2c8Zf4j0NvTKBjv6qNhF9T79tmkecm/0CHqV0UGg==} - engines: {node: '>=5.0.0'} - eslint-plugin-playwright@2.10.4: resolution: {integrity: sha512-l0V/VxyqfFbtqCTxj5AdRn3Q6S/hIW4nKBnKZVleVbZ24N2My6Usj//ytX3dKKqAoSbvKck9YtSytfdZ5qjLuA==} engines: {node: '>=16.9.0'} peerDependencies: eslint: '>=8.40.0' - eslint-plugin-prettier@5.5.6: - resolution: {integrity: sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - eslint-plugin-regexp@3.1.0: resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2679,11 +2607,11 @@ packages: peerDependencies: eslint: ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-unicorn@64.0.0: - resolution: {integrity: sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==} - engines: {node: ^20.10.0 || >=21.0.0} + eslint-plugin-unicorn@68.0.0: + resolution: {integrity: sha512-mHYWvX948Q4H3bGc39bsNMxD/leOuNI+Iws9NVsoSz5VA7EGP86wnz7mZ/SPSvRhefT8L4hd8DHfDuGC+lIoCQ==} + engines: {node: '>=22'} peerDependencies: - eslint: '>=9.38.0' + eslint: '>=10.4' eslint-plugin-vue-scoped-css@3.1.1: resolution: {integrity: sha512-GIskMvLPnDtiu88rWXQHy2b2QZ4j959N5UgghML64jH0sg3Km+HRa9m7nkpcEBGLD4iA4vtMDbBIoLdFcbT8lQ==} @@ -2718,10 +2646,6 @@ packages: peerDependencies: eslint: '>=8.40.0' - eslint-rule-documentation@1.0.23: - resolution: {integrity: sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==} - engines: {node: '>=4.0.0'} - eslint-scope@9.1.2: resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2738,8 +2662,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.4.1: - resolution: {integrity: sha512-AyIKhnOBuOAdueD7RB3xB+YeAWScb9jHsJBgH2Hcde8InP5JYhqrRR6iTMHyTEwgENK54Cp44e4v8BwNhsuHuw==} + eslint@10.5.0: + resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2808,9 +2732,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2973,14 +2894,6 @@ packages: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@16.5.0: - resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} - engines: {node: '>=18'} - globals@17.6.0: resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} engines: {node: '>=18'} @@ -3427,10 +3340,6 @@ packages: resolution: {integrity: sha512-eQQBjBnsVtGacsG9uJNB8qOr3yA8rga4wAaGG1qRcBzSIvfhERLrWxMAM1hp5fcS6Abo8M4+bUBTekYR0qTPQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - kaiser@0.0.4: resolution: {integrity: sha512-m8ju+rmBqvclZmyrOXgGGhOYSjKJK6RN1NhqEltemY87UqZOxEkizg9TOy1vQSyJ01Wx6SAPuuN0iO2Mgislvw==} @@ -3462,13 +3371,6 @@ packages: klaw@1.3.1: resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -3573,24 +3475,12 @@ packages: lodash-es@4.18.1: resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - lodash@3.10.1: resolution: {integrity: sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==} @@ -4058,15 +3948,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.1: - resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} - engines: {node: '>=6.0.0'} - - prettier@3.8.3: - resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} - engines: {node: '>=14'} - hasBin: true - pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4124,10 +4005,6 @@ packages: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true - regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -4258,6 +4135,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true + seroval-plugins@1.5.4: resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} engines: {node: '>=10'} @@ -4391,10 +4273,6 @@ packages: resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} engines: {node: '>=20'} - string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} - string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -4494,9 +4372,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svg-element-attributes@1.3.1: - resolution: {integrity: sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA==} - svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} @@ -4518,10 +4393,6 @@ packages: resolution: {integrity: sha512-esiWJ7ixSKGpd9DJPBTC4ckChqdOjIwJfYhVHkcQ2Gnm41323p1TRmEI+esTQ9ppD+b5opps2OTEGTCGX5kF+g==} engines: {node: '>=14'} - synckit@0.11.13: - resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} - engines: {node: ^14.18.0 || >=16.0.0} - table@6.9.0: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} @@ -4640,18 +4511,13 @@ packages: resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} engines: {node: '>= 0.4'} - typescript-eslint@8.61.0: - resolution: {integrity: sha512-8y31Rd0eGTrDKqhy6vT0HtzhN+YLjQizwX3aA3hPXP/ynSfnrBXcQY5IzsP9/DM7+klX4IUncZZjkchP0z+rUw==} + typescript-eslint@8.61.1: + resolution: {integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -5430,25 +5296,19 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@10.4.1(jiti@2.7.0))': + '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@10.5.0(jiti@2.7.0))': dependencies: escape-string-regexp: 4.0.0 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) ignore: 7.0.5 - '@eslint-community/eslint-utils@4.9.1(eslint@10.4.1(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(jiti@2.7.0))': dependencies: - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.4.1(eslint@10.4.1(jiti@2.7.0))': - dependencies: - '@eslint/core': 0.17.0 - optionalDependencies: - eslint: 10.4.1(jiti@2.7.0) - '@eslint/config-array@0.23.5': dependencies: '@eslint/object-schema': 3.0.5 @@ -5461,30 +5321,10 @@ snapshots: dependencies: '@eslint/core': 1.2.1 - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': - dependencies: - ajv: 6.15.0 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.2.0 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.4': {} - '@eslint/json@2.0.0': dependencies: '@eslint/core': 1.2.1 @@ -5499,8 +5339,6 @@ snapshots: '@eslint/core': 1.2.1 levn: 0.4.1 - '@github/browserslist-config@1.0.0': {} - '@github/combobox-nav@2.3.1': {} '@github/markdown-toolbar-element@2.2.3': {} @@ -5731,8 +5569,6 @@ snapshots: '@package-json/types@0.0.12': {} - '@pkgr/core@0.3.6': {} - '@playwright/test@1.60.0': dependencies: playwright: 1.60.0 @@ -5836,7 +5672,8 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@rtsao/scc@1.1.0': {} + '@rtsao/scc@1.1.0': + optional: true '@scarf/scarf@1.4.0': {} @@ -5872,11 +5709,11 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.10.0(eslint@10.4.1(jiti@2.7.0))': + '@stylistic/eslint-plugin@5.10.0(eslint@10.5.0(jiti@2.7.0))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) '@typescript-eslint/types': 8.61.0 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -6066,7 +5903,8 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} + '@types/json5@0.0.29': + optional: true '@types/katex@0.16.8': {} @@ -6113,31 +5951,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.61.0 - '@typescript-eslint/type-utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.61.0 - eslint: 10.4.1(jiti@2.7.0) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.61.0 - '@typescript-eslint/type-utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.61.0 - eslint: 10.4.1(jiti@2.7.0) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 + eslint: 10.5.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -6145,39 +5967,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.61.0 - '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.61.0 + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 debug: 4.4.3 - eslint: 10.4.1(jiti@2.7.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.61.0 - '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.61.0 - debug: 4.4.3 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.61.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.61.0(typescript@5.9.3) - '@typescript-eslint/types': 8.61.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.61.0(typescript@6.0.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.61.0(typescript@6.0.3) @@ -6187,38 +5988,40 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.61.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + debug: 4.4.3 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.61.0': dependencies: '@typescript-eslint/types': 8.61.0 '@typescript-eslint/visitor-keys': 8.61.0 - '@typescript-eslint/tsconfig-utils@8.61.0(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.61.1': dependencies: - typescript: 5.9.3 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 '@typescript-eslint/tsconfig-utils@8.61.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.61.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - debug: 4.4.3 - eslint: 10.4.1(jiti@2.7.0) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + typescript: 6.0.3 - '@typescript-eslint/type-utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -6226,20 +6029,7 @@ snapshots: '@typescript-eslint/types@8.61.0': {} - '@typescript-eslint/typescript-estree@8.61.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.61.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.61.0(typescript@5.9.3) - '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/visitor-keys': 8.61.0 - debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.8.1 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.61.1': {} '@typescript-eslint/typescript-estree@8.61.0(typescript@6.0.3)': dependencies: @@ -6256,24 +6046,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.61.1(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.61.0 - '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@5.9.3) - eslint: 10.4.1(jiti@2.7.0) - typescript: 5.9.3 + '@typescript-eslint/project-service': 8.61.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.1 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.61.0 '@typescript-eslint/types': 8.61.0 '@typescript-eslint/typescript-estree': 8.61.0(typescript@6.0.3) - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -6283,6 +6088,11 @@ snapshots: '@typescript-eslint/types': 8.61.0 eslint-visitor-keys: 5.0.1 + '@typescript-eslint/visitor-keys@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + eslint-visitor-keys: 5.0.1 + '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true @@ -6364,13 +6174,13 @@ snapshots: vite: 8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0) vue: 3.5.37(typescript@6.0.3) - '@vitest/eslint-plugin@1.6.20(@typescript-eslint/eslint-plugin@8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.8(@types/node@25.9.3)(happy-dom@20.10.2)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0)))': + '@vitest/eslint-plugin@1.6.20(@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.8(@types/node@25.9.3)(happy-dom@20.10.2)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0)))': dependencies: '@typescript-eslint/scope-manager': 8.61.0 - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.4.1(jiti@2.7.0) + '@typescript-eslint/utils': 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) typescript: 6.0.3 vitest: 4.1.8(@types/node@25.9.3)(happy-dom@20.10.2)(jsdom@20.0.3)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0)) transitivePeerDependencies: @@ -6561,12 +6371,11 @@ snapshots: argparse@2.0.1: {} - aria-query@5.3.2: {} - array-buffer-byte-length@1.0.2: dependencies: call-bound: 1.0.4 is-array-buffer: 3.0.5 + optional: true array-includes@3.1.9: dependencies: @@ -6578,6 +6387,7 @@ snapshots: get-intrinsic: 1.3.0 is-string: 1.1.1 math-intrinsics: 1.1.0 + optional: true array.prototype.findlastindex@1.2.6: dependencies: @@ -6588,6 +6398,7 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.2 es-shim-unscopables: 1.1.0 + optional: true array.prototype.flat@1.3.3: dependencies: @@ -6595,6 +6406,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.2 es-shim-unscopables: 1.1.0 + optional: true array.prototype.flatmap@1.3.3: dependencies: @@ -6602,6 +6414,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.2 es-shim-unscopables: 1.1.0 + optional: true arraybuffer.prototype.slice@1.0.4: dependencies: @@ -6612,6 +6425,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + optional: true asciinema-player@3.15.1: dependencies: @@ -6627,26 +6441,22 @@ snapshots: assertion-error@2.0.1: {} - ast-types-flow@0.0.8: {} - astral-regex@2.0.0: {} - async-function@1.0.0: {} + async-function@1.0.0: + optional: true asynckit@0.4.0: {} available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 + optional: true aws-sign2@0.7.0: {} aws4@1.13.2: {} - axe-core@4.12.0: {} - - axobject-query@4.1.0: {} - balanced-match@1.0.2: {} balanced-match@4.0.4: {} @@ -6732,11 +6542,13 @@ snapshots: es-define-property: 1.0.1 get-intrinsic: 1.3.0 set-function-length: 1.2.2 + optional: true call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + optional: true callsites@3.1.0: {} @@ -6804,10 +6616,6 @@ snapshots: citeproc@2.4.63: {} - clean-regexp@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - cli-cursor@1.0.2: dependencies: restore-cursor: 1.0.1 @@ -7120,8 +6928,6 @@ snapshots: d3: 7.9.0 lodash-es: 4.18.1 - damerau-levenshtein@1.0.8: {} - dashdash@1.14.1: dependencies: assert-plus: 1.0.0 @@ -7137,24 +6943,28 @@ snapshots: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 + optional: true data-view-byte-length@1.0.2: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 + optional: true data-view-byte-offset@1.0.1: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 + optional: true dayjs@1.11.21: {} debug@3.2.7: dependencies: ms: 2.1.3 + optional: true debug@4.4.3: dependencies: @@ -7180,12 +6990,14 @@ snapshots: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 + optional: true define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 + optional: true delaunator@5.1.0: dependencies: @@ -7195,6 +7007,8 @@ snapshots: dequal@2.0.3: {} + detect-indent@7.0.2: {} + detect-libc@2.1.2: {} devlop@1.1.0: @@ -7208,6 +7022,7 @@ snapshots: doctrine@2.1.0: dependencies: esutils: 2.0.3 + optional: true dom-input-range@2.0.1: {} @@ -7271,8 +7086,6 @@ snapshots: emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - entities@4.5.0: {} entities@6.0.1: {} @@ -7341,6 +7154,7 @@ snapshots: typed-array-length: 1.0.8 unbox-primitive: 1.1.0 which-typed-array: 1.1.21 + optional: true es-define-property@1.0.1: {} @@ -7362,12 +7176,14 @@ snapshots: es-shim-unscopables@1.1.0: dependencies: hasown: 2.0.4 + optional: true es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 is-date-object: 1.1.0 is-symbol: 1.1.1 + optional: true es-toolkit@1.47.0: {} @@ -7416,10 +7232,6 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.4.1(jiti@2.7.0)): - dependencies: - eslint: 10.4.1(jiti@2.7.0) - eslint-import-context@0.1.9(unrs-resolver@1.12.2): dependencies: get-tsconfig: 4.14.0 @@ -7434,11 +7246,12 @@ snapshots: resolve: 2.0.0-next.7 transitivePeerDependencies: - supports-color + optional: true - eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0)): + eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.5.0(jiti@2.7.0)): dependencies: debug: 4.4.3 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) eslint-import-context: 0.1.9(unrs-resolver@1.12.2) get-tsconfig: 4.14.0 is-bun-module: 2.0.0 @@ -7446,104 +7259,38 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.5.0(jiti@2.7.0)) + eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)): + eslint-module-utils@2.13.0(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.5.0(jiti@2.7.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - eslint: 10.4.1(jiti@2.7.0) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.4.1(jiti@2.7.0) - eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.4.1(jiti@2.7.0)) + eslint-import-resolver-typescript: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)))(eslint-plugin-import@2.32.0)(eslint@10.5.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color optional: true - eslint-plugin-array-func@5.1.1(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-array-func@5.1.1(eslint@10.5.0(jiti@2.7.0)): dependencies: - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) - eslint-plugin-de-morgan@2.1.2(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-de-morgan@2.1.2(eslint@10.5.0(jiti@2.7.0)): dependencies: - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) - eslint-plugin-escompat@3.11.4(eslint@10.4.1(jiti@2.7.0)): - dependencies: - browserslist: 4.28.2 - eslint: 10.4.1(jiti@2.7.0) - - eslint-plugin-eslint-comments@3.2.0(eslint@10.4.1(jiti@2.7.0)): - dependencies: - escape-string-regexp: 1.0.5 - eslint: 10.4.1(jiti@2.7.0) - ignore: 5.3.2 - - eslint-plugin-filenames@1.3.2(eslint@10.4.1(jiti@2.7.0)): - dependencies: - eslint: 10.4.1(jiti@2.7.0) - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.upperfirst: 4.3.1 - - eslint-plugin-github@6.0.0(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)): - dependencies: - '@eslint/compat': 1.4.1(eslint@10.4.1(jiti@2.7.0)) - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@github/browserslist-config': 1.0.0 - '@typescript-eslint/eslint-plugin': 8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - aria-query: 5.3.2 - eslint: 10.4.1(jiti@2.7.0) - eslint-config-prettier: 10.1.8(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-escompat: 3.11.4(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-eslint-comments: 3.2.0(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-filenames: 1.3.2(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-i18n-text: 1.0.1(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@10.4.1(jiti@2.7.0)) - eslint-plugin-no-only-tests: 3.4.0 - eslint-plugin-prettier: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.4.1(jiti@2.7.0)))(eslint@10.4.1(jiti@2.7.0))(prettier@3.8.3) - eslint-rule-documentation: 1.0.23 - globals: 16.5.0 - jsx-ast-utils: 3.3.5 - prettier: 3.8.3 - svg-element-attributes: 1.3.1 - typescript: 5.9.3 - typescript-eslint: 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - transitivePeerDependencies: - - '@types/eslint' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-i18n-text@1.0.1(eslint@10.4.1(jiti@2.7.0)): - dependencies: - eslint: 10.4.1(jiti@2.7.0) - - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)): dependencies: '@package-json/types': 0.0.12 '@typescript-eslint/types': 8.61.0 comment-parser: 1.4.7 debug: 4.4.3 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) eslint-import-context: 0.1.9(unrs-resolver@1.12.2) is-glob: 4.0.3 minimatch: 10.2.5 @@ -7551,12 +7298,12 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.12.2 optionalDependencies: - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.5.0(jiti@2.7.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7565,9 +7312,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)) + eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.5.0(jiti@2.7.0)) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -7579,94 +7326,35 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 10.4.1(jiti@2.7.0) - eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.5)(eslint@10.4.1(jiti@2.7.0)) - hasown: 2.0.4 - is-core-module: 2.16.2 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color optional: true - eslint-plugin-jsx-a11y@6.10.2(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-playwright@2.10.4(eslint@10.5.0(jiti@2.7.0)): dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.12.0 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 10.4.1(jiti@2.7.0) - hasown: 2.0.4 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-no-only-tests@3.4.0: {} - - eslint-plugin-playwright@2.10.4(eslint@10.4.1(jiti@2.7.0)): - dependencies: - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) globals: 17.6.0 - eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.4.1(jiti@2.7.0)))(eslint@10.4.1(jiti@2.7.0))(prettier@3.8.3): + eslint-plugin-regexp@3.1.0(eslint@10.5.0(jiti@2.7.0)): dependencies: - eslint: 10.4.1(jiti@2.7.0) - prettier: 3.8.3 - prettier-linter-helpers: 1.0.1 - synckit: 0.11.13 - optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.4.1(jiti@2.7.0)) - - eslint-plugin-regexp@3.1.0(eslint@10.4.1(jiti@2.7.0)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 comment-parser: 1.4.7 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) jsdoc-type-pratt-parser: 7.2.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-sonarjs@4.0.3(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-sonarjs@4.0.3(eslint@10.5.0(jiti@2.7.0)): dependencies: '@eslint-community/regexpp': 4.12.2 builtin-modules: 3.3.0 bytes: 3.1.2 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) functional-red-black-tree: 1.0.1 globals: 17.6.0 jsx-ast-utils-x: 0.1.0 @@ -7677,58 +7365,56 @@ snapshots: ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 - eslint-plugin-unicorn@64.0.0(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-unicorn@68.0.0(eslint@10.5.0(jiti@2.7.0)): dependencies: '@babel/helper-validator-identifier': 7.29.7 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + browserslist: 4.28.2 change-case: 5.4.4 ci-info: 4.4.0 - clean-regexp: 1.0.0 core-js-compat: 3.49.0 - eslint: 10.4.1(jiti@2.7.0) + detect-indent: 7.0.2 + eslint: 10.5.0(jiti@2.7.0) find-up-simple: 1.0.1 globals: 17.6.0 indent-string: 5.0.0 is-builtin-module: 5.0.0 jsesc: 3.1.0 pluralize: 8.0.0 - regexp-tree: 0.1.27 regjsparser: 0.13.1 - semver: 7.8.1 + semver: 7.8.4 strip-indent: 4.1.1 - eslint-plugin-vue-scoped-css@3.1.1(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0))): + eslint-plugin-vue-scoped-css@3.1.1(eslint@10.5.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.5.0(jiti@2.7.0))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) es-toolkit: 1.47.0 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) postcss: 8.5.15 postcss-safe-parser: 7.0.1(postcss@8.5.15) postcss-selector-parser: 7.1.1 - vue-eslint-parser: 10.4.0(eslint@10.4.1(jiti@2.7.0)) + vue-eslint-parser: 10.4.0(eslint@10.5.0(jiti@2.7.0)) - eslint-plugin-vue@10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.4.1(jiti@2.7.0)))(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0))): + eslint-plugin-vue@10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.5.0(jiti@2.7.0)))(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.5.0(jiti@2.7.0))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) - eslint: 10.4.1(jiti@2.7.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + eslint: 10.5.0(jiti@2.7.0) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 semver: 7.8.1 - vue-eslint-parser: 10.4.0(eslint@10.4.1(jiti@2.7.0)) + vue-eslint-parser: 10.4.0(eslint@10.5.0(jiti@2.7.0)) xml-name-validator: 4.0.0 optionalDependencies: - '@stylistic/eslint-plugin': 5.10.0(eslint@10.4.1(jiti@2.7.0)) - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) + '@stylistic/eslint-plugin': 5.10.0(eslint@10.5.0(jiti@2.7.0)) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-wc@3.1.0(eslint@10.4.1(jiti@2.7.0)): + eslint-plugin-wc@3.1.0(eslint@10.5.0(jiti@2.7.0)): dependencies: - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) is-valid-element-name: 1.0.0 js-levenshtein-esm: 2.0.0 - eslint-rule-documentation@1.0.23: {} - eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 @@ -7742,9 +7428,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.4.1(jiti@2.7.0): + eslint@10.5.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.6.0 @@ -7825,8 +7511,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.3.0: {} - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7899,6 +7583,7 @@ snapshots: for-each@0.3.5: dependencies: is-callable: 1.2.7 + optional: true forever-agent@0.6.1: {} @@ -7949,12 +7634,15 @@ snapshots: functions-have-names: 1.2.3 hasown: 2.0.4 is-callable: 1.2.7 + optional: true functional-red-black-tree@1.0.1: {} - functions-have-names@1.2.3: {} + functions-have-names@1.2.3: + optional: true - generator-function@2.0.1: {} + generator-function@2.0.1: + optional: true get-east-asian-width@1.6.0: {} @@ -7981,6 +7669,7 @@ snapshots: call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 + optional: true get-tsconfig@4.14.0: dependencies: @@ -8017,16 +7706,13 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@14.0.0: {} - - globals@16.5.0: {} - globals@17.6.0: {} globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.2.0 + optional: true globby@16.2.0: dependencies: @@ -8071,7 +7757,8 @@ snapshots: dependencies: ansi-regex: 2.1.1 - has-bigints@1.1.0: {} + has-bigints@1.1.0: + optional: true has-flag@4.0.0: {} @@ -8080,10 +7767,12 @@ snapshots: has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 + optional: true has-proto@1.2.0: dependencies: dunder-proto: 1.0.1 + optional: true has-symbols@1.1.0: {} @@ -8197,6 +7886,7 @@ snapshots: es-errors: 1.3.0 hasown: 2.0.4 side-channel: 1.1.0 + optional: true internmap@1.0.1: {} @@ -8214,6 +7904,7 @@ snapshots: call-bind: 1.0.9 call-bound: 1.0.4 get-intrinsic: 1.3.0 + optional: true is-arrayish@0.2.1: {} @@ -8224,10 +7915,12 @@ snapshots: get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 + optional: true is-bigint@1.1.0: dependencies: has-bigints: 1.1.0 + optional: true is-binary-path@2.1.0: dependencies: @@ -8237,6 +7930,7 @@ snapshots: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + optional: true is-buffer@1.1.6: {} @@ -8248,7 +7942,8 @@ snapshots: dependencies: semver: 7.8.1 - is-callable@1.2.7: {} + is-callable@1.2.7: + optional: true is-core-module@2.16.2: dependencies: @@ -8259,11 +7954,13 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 is-typed-array: 1.1.15 + optional: true is-date-object@1.1.0: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + optional: true is-decimal@2.0.1: {} @@ -8272,6 +7969,7 @@ snapshots: is-finalizationregistry@1.1.1: dependencies: call-bound: 1.0.4 + optional: true is-fullwidth-code-point@1.0.0: dependencies: @@ -8286,6 +7984,7 @@ snapshots: get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 + optional: true is-glob@4.0.3: dependencies: @@ -8293,14 +7992,17 @@ snapshots: is-hexadecimal@2.0.1: {} - is-map@2.0.3: {} + is-map@2.0.3: + optional: true - is-negative-zero@2.0.3: {} + is-negative-zero@2.0.3: + optional: true is-number-object@1.1.1: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + optional: true is-number@7.0.0: {} @@ -8314,27 +8016,33 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.4 + optional: true - is-set@2.0.3: {} + is-set@2.0.3: + optional: true is-shared-array-buffer@1.0.4: dependencies: call-bound: 1.0.4 + optional: true is-string@1.1.1: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + optional: true is-symbol@1.1.1: dependencies: call-bound: 1.0.4 has-symbols: 1.1.0 safe-regex-test: 1.1.0 + optional: true is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.21 + optional: true is-typedarray@1.0.0: {} @@ -8342,18 +8050,22 @@ snapshots: dependencies: is-potential-custom-element-name: 1.0.1 - is-weakmap@2.0.2: {} + is-weakmap@2.0.2: + optional: true is-weakref@1.1.1: dependencies: call-bound: 1.0.4 + optional: true is-weakset@2.0.4: dependencies: call-bound: 1.0.4 get-intrinsic: 1.3.0 + optional: true - isarray@2.0.5: {} + isarray@2.0.5: + optional: true isexe@2.0.0: {} @@ -8477,6 +8189,7 @@ snapshots: json5@1.0.2: dependencies: minimist: 1.2.8 + optional: true jsonc-parser@3.3.1: {} @@ -8495,13 +8208,6 @@ snapshots: jsx-ast-utils-x@0.1.0: {} - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - kaiser@0.0.4: dependencies: earlgrey-runtime: 0.1.2 @@ -8534,12 +8240,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - layout-base@1.0.2: {} layout-base@2.0.1: {} @@ -8617,18 +8317,10 @@ snapshots: lodash-es@4.18.1: {} - lodash.camelcase@4.3.0: {} - - lodash.kebabcase@4.1.1: {} - lodash.merge@4.6.2: {} - lodash.snakecase@4.1.1: {} - lodash.truncate@4.4.2: {} - lodash.upperfirst@4.3.1: {} - lodash@3.10.1: {} lodash@4.18.1: {} @@ -8948,6 +8640,7 @@ snapshots: es-errors: 1.3.0 object.entries: 1.1.9 semver: 6.3.1 + optional: true node-fetch@2.6.13: dependencies: @@ -8975,9 +8668,11 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.13.4: {} + object-inspect@1.13.4: + optional: true - object-keys@1.1.1: {} + object-keys@1.1.1: + optional: true object.assign@4.1.7: dependencies: @@ -8987,6 +8682,7 @@ snapshots: es-object-atoms: 1.1.2 has-symbols: 1.1.0 object-keys: 1.1.1 + optional: true object.entries@1.1.9: dependencies: @@ -8994,6 +8690,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.2 + optional: true object.fromentries@2.0.8: dependencies: @@ -9001,12 +8698,14 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.2 es-object-atoms: 1.1.2 + optional: true object.groupby@1.0.3: dependencies: call-bind: 1.0.9 define-properties: 1.2.1 es-abstract: 1.24.2 + optional: true object.values@1.2.1: dependencies: @@ -9014,6 +8713,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.2 + optional: true obug@2.1.1: {} @@ -9045,6 +8745,7 @@ snapshots: get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 + optional: true p-limit@3.1.0: dependencies: @@ -9128,7 +8829,8 @@ snapshots: path-data-parser: 0.1.0 points-on-curve: 0.2.0 - possible-typed-array-names@1.1.0: {} + possible-typed-array-names@1.1.0: + optional: true postcss-html@1.8.1: dependencies: @@ -9189,12 +8891,6 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.1: - dependencies: - fast-diff: 1.3.0 - - prettier@3.8.3: {} - pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -9249,6 +8945,7 @@ snapshots: get-intrinsic: 1.3.0 get-proto: 1.0.1 which-builtin-type: 1.2.1 + optional: true regenerator-runtime@0.9.6: {} @@ -9257,8 +8954,6 @@ snapshots: '@eslint-community/regexpp': 4.12.2 refa: 0.12.1 - regexp-tree@0.1.27: {} - regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.9 @@ -9267,6 +8962,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 set-function-name: 2.0.2 + optional: true regjsparser@0.13.1: dependencies: @@ -9326,6 +9022,7 @@ snapshots: object-keys: 1.1.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + optional: true restore-cursor@1.0.1: dependencies: @@ -9398,6 +9095,7 @@ snapshots: get-intrinsic: 1.3.0 has-symbols: 1.1.0 isarray: 2.0.5 + optional: true safe-buffer@5.2.1: {} @@ -9405,12 +9103,14 @@ snapshots: dependencies: es-errors: 1.3.0 isarray: 2.0.5 + optional: true safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-regex: 1.2.1 + optional: true safer-buffer@2.1.2: {} @@ -9426,10 +9126,13 @@ snapshots: refa: 0.12.1 regexp-ast-analysis: 0.7.1 - semver@6.3.1: {} + semver@6.3.1: + optional: true semver@7.8.1: {} + semver@7.8.4: {} + seroval-plugins@1.5.4(seroval@1.5.4): dependencies: seroval: 1.5.4 @@ -9444,6 +9147,7 @@ snapshots: get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 + optional: true set-function-name@2.0.2: dependencies: @@ -9451,12 +9155,14 @@ snapshots: es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + optional: true set-proto@1.0.0: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.1.2 + optional: true shebang-command@2.0.0: dependencies: @@ -9468,6 +9174,7 @@ snapshots: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 + optional: true side-channel-map@1.0.1: dependencies: @@ -9475,6 +9182,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 object-inspect: 1.13.4 + optional: true side-channel-weakmap@1.0.2: dependencies: @@ -9483,6 +9191,7 @@ snapshots: get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-map: 1.0.1 + optional: true side-channel@1.1.0: dependencies: @@ -9491,6 +9200,7 @@ snapshots: side-channel-list: 1.0.1 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + optional: true siginfo@2.0.0: {} @@ -9557,6 +9267,7 @@ snapshots: dependencies: es-errors: 1.3.0 internal-slot: 1.1.0 + optional: true string-width@1.0.2: dependencies: @@ -9580,12 +9291,6 @@ snapshots: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 - string.prototype.includes@2.0.1: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.9 @@ -9595,6 +9300,7 @@ snapshots: es-abstract: 1.24.2 es-object-atoms: 1.1.2 has-property-descriptors: 1.0.2 + optional: true string.prototype.trimend@1.0.9: dependencies: @@ -9602,12 +9308,14 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.2 + optional: true string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.9 define-properties: 1.2.1 es-object-atoms: 1.1.2 + optional: true strip-ansi@3.0.1: dependencies: @@ -9621,7 +9329,8 @@ snapshots: dependencies: ansi-regex: 6.2.2 - strip-bom@3.0.0: {} + strip-bom@3.0.0: + optional: true strip-indent@4.1.1: {} @@ -9717,8 +9426,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svg-element-attributes@1.3.1: {} - svg-tags@1.0.0: {} svgo@4.0.1: @@ -9749,10 +9456,6 @@ snapshots: transitivePeerDependencies: - encoding - synckit@0.11.13: - dependencies: - '@pkgr/core': 0.3.6 - table@6.9.0: dependencies: ajv: 8.20.0 @@ -9844,10 +9547,6 @@ snapshots: tributejs@5.1.3: {} - ts-api-utils@2.5.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - ts-api-utils@2.5.0(typescript@6.0.3): dependencies: typescript: 6.0.3 @@ -9862,6 +9561,7 @@ snapshots: json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + optional: true tslib@2.8.1: {} @@ -9882,6 +9582,7 @@ snapshots: call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 + optional: true typed-array-byte-length@1.0.3: dependencies: @@ -9890,6 +9591,7 @@ snapshots: gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 + optional: true typed-array-byte-offset@1.0.4: dependencies: @@ -9900,6 +9602,7 @@ snapshots: has-proto: 1.2.0 is-typed-array: 1.1.15 reflect.getprototypeof: 1.0.10 + optional: true typed-array-length@1.0.8: dependencies: @@ -9909,31 +9612,19 @@ snapshots: is-typed-array: 1.1.15 possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + optional: true - typescript-eslint@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3): + typescript-eslint@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.61.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3) - eslint: 10.4.1(jiti@2.7.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - typescript-eslint@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.61.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.4.1(jiti@2.7.0) + '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - typescript@5.9.3: {} - typescript@6.0.3: {} typo-js@1.3.2: {} @@ -9948,6 +9639,7 @@ snapshots: has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + optional: true undici-types@7.24.6: {} @@ -10078,15 +9770,15 @@ snapshots: chart.js: 4.5.1 vue: 3.5.37(typescript@6.0.3) - vue-eslint-parser@10.4.0(eslint@10.4.1(jiti@2.7.0)): + vue-eslint-parser@10.4.0(eslint@10.5.0(jiti@2.7.0)): dependencies: debug: 4.4.3 - eslint: 10.4.1(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 espree: 11.2.0 esquery: 1.7.0 - semver: 7.8.1 + semver: 7.8.4 transitivePeerDependencies: - supports-color @@ -10139,6 +9831,7 @@ snapshots: is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 + optional: true which-builtin-type@1.2.1: dependencies: @@ -10155,6 +9848,7 @@ snapshots: which-boxed-primitive: 1.1.1 which-collection: 1.0.2 which-typed-array: 1.1.21 + optional: true which-collection@1.0.2: dependencies: @@ -10162,6 +9856,7 @@ snapshots: is-set: 2.0.3 is-weakmap: 2.0.2 is-weakset: 2.0.4 + optional: true which-typed-array@1.1.21: dependencies: @@ -10172,6 +9867,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2 + optional: true which@1.3.1: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c16cfb76cb..8f1c49389b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,10 +3,6 @@ dedupePeerDependents: false updateNotifier: false minimumReleaseAge: 0 -peerDependencyRules: - allowedVersions: - eslint-plugin-github>eslint: '>=9' - allowBuilds: '@scarf/scarf': false core-js: false diff --git a/tailwind.config.ts b/tailwind.config.ts index 199433d0cf..f597121743 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -90,7 +90,7 @@ export default { '8xl': '96px', '9xl': '128px', ...Object.fromEntries(Array.from({length: 100}, (_, i) => { - return [`${i}`, `${i === 0 ? '0' : `${i}px`}`]; + return [String(i), i === 0 ? '0' : `${i}px`]; })), }, extend: { diff --git a/tools/ci-tools.ts b/tools/ci-tools.ts index 4562643247..b872c35187 100644 --- a/tools/ci-tools.ts +++ b/tools/ci-tools.ts @@ -83,7 +83,7 @@ async function setPrLabels(): Promise { Accept: 'application/vnd.github+json', Authorization: `Bearer ${env.GITHUB_TOKEN}`, 'X-GitHub-Api-Version': '2022-11-28', - ...(body ? {'Content-Type': 'application/json'} : {}), + ...(Boolean(body) && {'Content-Type': 'application/json'}), }, body: body ? JSON.stringify(body) : undefined, }); diff --git a/tools/eslint-rules/unescaped-html-literal.ts b/tools/eslint-rules/unescaped-html-literal.ts index 3cbd82f7fe..87c40f0518 100644 --- a/tools/eslint-rules/unescaped-html-literal.ts +++ b/tools/eslint-rules/unescaped-html-literal.ts @@ -12,30 +12,28 @@ const rule: JSRuleDefinition = { }, }, - create(context) { - return { - Literal(node) { - if (typeof node.value !== 'string' || !htmlOpenTag.test(node.value)) return; + create: (context) => ({ + Literal(node) { + if (typeof node.value !== 'string' || !htmlOpenTag.test(node.value)) return; - context.report({ - node, - messageId: 'unescapedHtmlLiteral', - }); - }, - TemplateLiteral(node) { - const templateStart = node.quasis[0]?.value.raw; - if (!templateStart || !htmlOpenTag.test(templateStart)) return; + context.report({ + node, + messageId: 'unescapedHtmlLiteral', + }); + }, + TemplateLiteral(node) { + const templateStart = node.quasis[0]?.value.raw; + if (!templateStart || !htmlOpenTag.test(templateStart)) return; - const parent = node.parent; - if (parent?.type === 'TaggedTemplateExpression' && parent.tag.type === 'Identifier' && parent.tag.name === 'html') return; + const parent = node.parent; + if (parent?.type === 'TaggedTemplateExpression' && parent.tag.type === 'Identifier' && parent.tag.name === 'html') return; - context.report({ - node, - messageId: 'unescapedHtmlLiteral', - }); - }, - }; - }, + context.report({ + node, + messageId: 'unescapedHtmlLiteral', + }); + }, + }), }; export default rule; diff --git a/tools/generate-images.ts b/tools/generate-images.ts index 6e6ac15486..b123dcf4cd 100755 --- a/tools/generate-images.ts +++ b/tools/generate-images.ts @@ -7,7 +7,7 @@ import {argv, exit} from 'node:process'; async function generate(svg: string, path: string, {size, bg}: {size: number, bg?: boolean}) { const outputFile = new URL(path, import.meta.url); - if (String(outputFile).endsWith('.svg')) { + if (outputFile.href.endsWith('.svg')) { const {data} = optimize(svg, { plugins: [ 'preset-default', diff --git a/tools/generate-svg.ts b/tools/generate-svg.ts index c18eacc86f..004ed52042 100755 --- a/tools/generate-svg.ts +++ b/tools/generate-svg.ts @@ -92,7 +92,7 @@ async function processMaterialFileIcons() { } // Use VSCode's "Language ID" mapping from its extensions - for (const [_, langIdExtMap] of Object.entries(vscodeExtensions)) { + for (const langIdExtMap of Object.values(vscodeExtensions)) { for (const [langId, names] of Object.entries(langIdExtMap)) { for (const name of names) { const nameLower = name.toLowerCase(); diff --git a/types.d.ts b/types.d.ts index d6325f5cbd..5737cc9acb 100644 --- a/types.d.ts +++ b/types.d.ts @@ -1,21 +1,9 @@ -declare module 'eslint-plugin-no-use-extend-native' { - import type {Eslint} from 'eslint'; - const plugin: Eslint.Plugin; - export = plugin; -} - declare module 'eslint-plugin-array-func' { import type {Eslint} from 'eslint'; const plugin: Eslint.Plugin; export = plugin; } -declare module 'eslint-plugin-github' { - import type {Eslint} from 'eslint'; - const plugin: Eslint.Plugin; - export = plugin; -} - declare module '*.svg' { const value: string; export default value; diff --git a/vite.config.ts b/vite.config.ts index e077fed6ae..85d8626914 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -56,7 +56,7 @@ const commonRolldownOptions: Rolldown.RolldownOptions = { checks: { pluginTimings: false, }, - ...(env.CI ? {plugins: [failOnWarningsPlugin()]} : {}), + ...(env.CI && {plugins: [failOnWarningsPlugin()]}), }; function commonViteOpts({build, ...other}: InlineConfig): InlineConfig { diff --git a/web_src/js/components/ActionRunView.ts b/web_src/js/components/ActionRunView.ts index 582ae0431f..f6e3977086 100644 --- a/web_src/js/components/ActionRunView.ts +++ b/web_src/js/components/ActionRunView.ts @@ -47,9 +47,9 @@ export type LogLineCommand = { export function parseLogLineCommand(line: LogLine): LogLineCommand | null { // TODO: in the future it can be refactored to be a general parser that can parse arguments, drop the "prefix match" - for (const prefix of Object.keys(LogLinePrefixCommandMap)) { + for (const [prefix, commandName] of Object.entries(LogLinePrefixCommandMap)) { if (line.message.startsWith(prefix)) { - return {name: LogLinePrefixCommandMap[prefix], prefix}; + return {name: commandName, prefix}; } } // Handle ::cmd:: and ::cmd args:: format (runner may pass these through raw) diff --git a/web_src/js/components/ViewFileTreeStore.ts b/web_src/js/components/ViewFileTreeStore.ts index 4237f7e323..6e120d2509 100644 --- a/web_src/js/components/ViewFileTreeStore.ts +++ b/web_src/js/components/ViewFileTreeStore.ts @@ -57,9 +57,7 @@ export function createViewFileTreeStore(props: {repoLink: string, treePath: stri await store.loadViewContent(url); }, - buildTreePathWebUrl(treePath: string) { - return `${props.repoLink}/src/${props.currentRefNameSubURL}/${pathEscapeSegments(treePath)}`; - }, + buildTreePathWebUrl: (treePath: string) => `${props.repoLink}/src/${props.currentRefNameSubURL}/${pathEscapeSegments(treePath)}`, }); return store; } diff --git a/web_src/js/components/WorkflowGraph.utils.ts b/web_src/js/components/WorkflowGraph.utils.ts index 71ef7e6fc9..3cacceb24d 100644 --- a/web_src/js/components/WorkflowGraph.utils.ts +++ b/web_src/js/components/WorkflowGraph.utils.ts @@ -166,7 +166,7 @@ function buildDirectNeedsMap(jobs: ActionsJob[]): Map { const reducedNeedsByJobId = new Map(); for (const [jobId, needs] of directNeedsByJobId) { reducedNeedsByJobId.set(jobId, needs.filter((need) => { - return !needs.some((other) => other !== need && canReach(need, other)); + return needs.every((other) => other === need || !canReach(need, other)); })); } return reducedNeedsByJobId; diff --git a/web_src/js/features/admin/config.test.ts b/web_src/js/features/admin/config.test.ts index b8468610ca..fc8b161496 100644 --- a/web_src/js/features/admin/config.test.ts +++ b/web_src/js/features/admin/config.test.ts @@ -30,9 +30,9 @@ test('ConfigFormValueMapper', () => { const formData = mapper.collectToFormData(); const result: Record = {}; const keys: string[] = [], values: string[] = []; - for (const [key, value] of formData.entries()) { + for (const [key, value] of formData) { if (key === 'key') keys.push(value as string); - if (key === 'value') values.push(value as string); + else if (key === 'value') values.push(value as string); } for (let i = 0; i < keys.length; i++) { result[keys[i]] = values[i]; diff --git a/web_src/js/features/admin/config.ts b/web_src/js/features/admin/config.ts index 96c7dcf84b..3abf28e4ea 100644 --- a/web_src/js/features/admin/config.ts +++ b/web_src/js/features/admin/config.ts @@ -102,9 +102,7 @@ export class ConfigFormValueMapper { } else if (el.matches('[type="datetime-local"]')) { if (valType !== 'timestamp') requireExplicitValueType(el); if (val) el.value = toDatetimeLocalValue(val); - } else if (el.matches('textarea')) { - el.value = String(val ?? el.value); - } else if (el.matches('input') && (el.getAttribute('type') ?? 'text') === 'text') { + } else if (el.matches('textarea') || (el.matches('input') && (el.getAttribute('type') ?? 'text') === 'text')) { el.value = String(val ?? el.value); } else { unsupportedElement(el); @@ -123,9 +121,7 @@ export class ConfigFormValueMapper { } else if (el.matches('[type="datetime-local"]')) { if (valType !== 'timestamp') requireExplicitValueType(el); val = Math.floor(new Date(el.value).getTime() / 1000) ?? 0; // NaN is fine to JSON.stringify, it becomes null. - } else if (el.matches('textarea')) { - val = el.value; - } else if (el.matches('input') && (el.getAttribute('type') ?? 'text') === 'text') { + } else if (el.matches('textarea') || (el.matches('input') && (el.getAttribute('type') ?? 'text') === 'text')) { val = el.value; } else { unsupportedElement(el); @@ -178,7 +174,7 @@ export class ConfigFormValueMapper { collectToFormData(): FormData { const namedElems: Array = []; - queryElems(this.form, '[name]', (el) => namedElems.push(el as GeneralFormFieldElement)); + queryElems(this.form, '[name]', (el) => { namedElems.push(el as GeneralFormFieldElement) }); // first, process the config options with sub values, for example: // merge "foo.bar.Enabled", "foo.bar.Message" to "foo.bar" diff --git a/web_src/js/features/admin/users.ts b/web_src/js/features/admin/users.ts index 16276773e1..fec4aa0d5f 100644 --- a/web_src/js/features/admin/users.ts +++ b/web_src/js/features/admin/users.ts @@ -5,14 +5,14 @@ export function initAdminUserListSearchForm(): void { const form = document.querySelector('#user-list-search-form'); if (!form) return; - for (const button of form.querySelectorAll(`button[name=sort][value="${searchForm.SortType}"]`)) { + for (const button of form.querySelectorAll(`button[name=sort][value="${CSS.escape(searchForm.SortType)}"]`)) { button.classList.add('active'); } if (searchForm.StatusFilterMap) { for (const [k, v] of Object.entries(searchForm.StatusFilterMap)) { if (!v) continue; - for (const input of form.querySelectorAll(`input[name="status_filter[${k}]"][value="${v}"]`)) { + for (const input of form.querySelectorAll(`input[name="status_filter[${CSS.escape(k)}]"][value="${CSS.escape(v)}"]`)) { input.checked = true; } } diff --git a/web_src/js/features/common-button.ts b/web_src/js/features/common-button.ts index cc26103aa3..a00ed4ee8b 100644 --- a/web_src/js/features/common-button.ts +++ b/web_src/js/features/common-button.ts @@ -87,10 +87,10 @@ function onShowModalClick(el: HTMLElement, e: MouseEvent) { const [attrTargetName, attrTargetProp] = attrTargetCombo.split('.'); // try to find target by: "#target" -> "[name=target]" -> ".target" -> " tag", and then try the modal itself const attrTarget = elModal.querySelector(`#${attrTargetName}`) || - elModal.querySelector(`[name=${attrTargetName}]`) || + elModal.querySelector(`[name=${CSS.escape(attrTargetName)}]`) || elModal.querySelector(`.${attrTargetName}`) || - elModal.querySelector(`${attrTargetName}`) || - (elModal.matches(`${attrTargetName}`) || elModal.matches(`#${attrTargetName}`) || elModal.matches(`.${attrTargetName}`) ? elModal : null); + elModal.querySelector(attrTargetName) || + (elModal.matches(attrTargetName) || elModal.matches(`#${attrTargetName}`) || elModal.matches(`.${attrTargetName}`) ? elModal : null); if (!attrTarget) { if (!window.config.runModeIsProd) throw new Error(`attr target "${attrTargetCombo}" not found for modal`); continue; diff --git a/web_src/js/features/common-fetch-action.ts b/web_src/js/features/common-fetch-action.ts index 3481d240f2..b58aa7a9a0 100644 --- a/web_src/js/features/common-fetch-action.ts +++ b/web_src/js/features/common-fetch-action.ts @@ -114,7 +114,7 @@ function buildFetchActionUrl(el: HTMLElement, opt: FetchActionOpts) { const u = new URL(url, window.location.href); if (name && !u.searchParams.has(name)) { u.searchParams.set(name, val); - url = u.toString(); + url = u.href; } } return url; diff --git a/web_src/js/features/common-form.ts b/web_src/js/features/common-form.ts index 67bcd55f52..793d47c8e2 100644 --- a/web_src/js/features/common-form.ts +++ b/web_src/js/features/common-form.ts @@ -16,17 +16,13 @@ export function initGlobalEnterQuickSubmit() { document.addEventListener('keydown', (e) => { if (e.isComposing) return; if (e.key !== 'Enter') return; + const el = e.target as HTMLElement; const hasCtrlOrMeta = ((e.ctrlKey || e.metaKey) && !e.altKey); - if (hasCtrlOrMeta && (e.target as HTMLElement).matches('textarea')) { - if (handleGlobalEnterQuickSubmit(e.target as HTMLElement)) { - e.preventDefault(); - } - } else if ((e.target as HTMLElement).matches('input') && !(e.target as HTMLElement).closest('form')) { - // input in a normal form could handle Enter key by default, so we only handle the input outside a form - // eslint-disable-next-line unicorn/no-lonely-if - if (handleGlobalEnterQuickSubmit(e.target as HTMLElement)) { - e.preventDefault(); - } + const isCtrlEnterInTextarea = hasCtrlOrMeta && el.matches('textarea'); + // an input in a normal form could handle Enter key by default, so we only handle the input outside a form + const isEnterInBareInput = el.matches('input') && !el.closest('form'); + if ((isCtrlEnterInTextarea || isEnterInBareInput) && handleGlobalEnterQuickSubmit(el)) { + e.preventDefault(); } }); } diff --git a/web_src/js/features/common-issue-list.ts b/web_src/js/features/common-issue-list.ts index 069113801f..eec27a2d22 100644 --- a/web_src/js/features/common-issue-list.ts +++ b/web_src/js/features/common-issue-list.ts @@ -35,7 +35,7 @@ export function initCommonIssueListQuickGoto() { const repoLink = elGotoButton.getAttribute('data-repo-link') || ''; elGotoButton.addEventListener('click', () => { - window.location.href = elGotoButton.getAttribute('data-issue-goto-link')!; + window.location.assign(elGotoButton.getAttribute('data-issue-goto-link')!); }); const onInput = async () => { diff --git a/web_src/js/features/dropzone.ts b/web_src/js/features/dropzone.ts index 63271c303b..2b9333263f 100644 --- a/web_src/js/features/dropzone.ts +++ b/web_src/js/features/dropzone.ts @@ -110,8 +110,8 @@ export async function initDropzone(dropzoneEl: HTMLElement) { }); dzInst.on('submit', () => { - for (const fileUuid of Object.keys(fileUuidDict)) { - fileUuidDict[fileUuid].submitted = true; + for (const value of Object.values(fileUuidDict)) { + value.submitted = true; } }); diff --git a/web_src/js/features/heatmap.ts b/web_src/js/features/heatmap.ts index 341e014bfc..4102ed6726 100644 --- a/web_src/js/features/heatmap.ts +++ b/web_src/js/features/heatmap.ts @@ -24,8 +24,8 @@ export async function initHeatmap() { heatmap[dateStr] = (heatmap[dateStr] || 0) + contributions; } - const values = Object.keys(heatmap).map((v) => { - return {date: new Date(v), count: heatmap[v]}; + const values = Object.entries(heatmap).map(([dateStr, count]) => { + return {date: new Date(dateStr), count}; }); const totalFormatted = totalContributions.toLocaleString(); diff --git a/web_src/js/features/imagediff.ts b/web_src/js/features/imagediff.ts index 6311478e4a..462a1a3cee 100644 --- a/web_src/js/features/imagediff.ts +++ b/web_src/js/features/imagediff.ts @@ -291,7 +291,7 @@ class ImageDiff { function updateOpacity() { if (ctx.imageAfter) { - (ctx.imageAfter.parentNode as HTMLElement).style.opacity = `${Number(rangeInput.value) / 100}`; + (ctx.imageAfter.parentNode as HTMLElement).style.opacity = String(Number(rangeInput.value) / 100); } } diff --git a/web_src/js/features/install.ts b/web_src/js/features/install.ts index f316cd532d..1154ccc27c 100644 --- a/web_src/js/features/install.ts +++ b/web_src/js/features/install.ts @@ -95,7 +95,7 @@ function initPostInstall() { if (tid && resp.status === 200) { clearInterval(tid); tid = null; - window.location.href = targetUrl; + window.location.assign(targetUrl); } } catch {} }, 1000); diff --git a/web_src/js/features/notification.ts b/web_src/js/features/notification.ts index ba0ca5203c..da04e247c3 100644 --- a/web_src/js/features/notification.ts +++ b/web_src/js/features/notification.ts @@ -10,7 +10,7 @@ async function receiveUpdateCount(event: MessageEvent<{type: string, data: strin const data = JSON.parse(event.data.data); for (const count of document.querySelectorAll('.notification_count')) { count.classList.toggle('tw-hidden', data.Count === 0); - count.textContent = `${data.Count}`; + count.textContent = String(data.Count); } await updateNotificationTable(); } catch (error) { @@ -112,7 +112,7 @@ async function updateNotificationCount(): Promise { toggleElem('.notification_count', data.new !== 0); for (const el of document.querySelectorAll('.notification_count')) { - el.textContent = `${data.new}`; + el.textContent = String(data.new); } return data.new as number; diff --git a/web_src/js/features/repo-code.ts b/web_src/js/features/repo-code.ts index 64574cc4c0..972c8c27f8 100644 --- a/web_src/js/features/repo-code.ts +++ b/web_src/js/features/repo-code.ts @@ -31,9 +31,9 @@ function selectRange(range: string): Element | null { const updateViewGitBlameFragment = function (anchor: string) { if (!viewGitBlame) return; let href = viewGitBlame.getAttribute('href')!; - href = `${href.replace(/#L\d+$|#L\d+-L\d+$/, '')}`; + href = href.replace(/#L\d+$|#L\d+-L\d+$/, ''); if (anchor.length !== 0) { - href = `${href}#${anchor}`; + href += `#${anchor}`; } viewGitBlame.setAttribute('href', href); }; diff --git a/web_src/js/features/repo-commit.ts b/web_src/js/features/repo-commit.ts index 6103766202..b673ea285b 100644 --- a/web_src/js/features/repo-commit.ts +++ b/web_src/js/features/repo-commit.ts @@ -45,8 +45,8 @@ export function initCommitFileHistoryFollowRename() { registerGlobalInitFunc('initCommitHistoryFollowRename', (el: HTMLInputElement) => { el.addEventListener('change', () => { const url = new URL(window.location.toString()); - url.searchParams.set('follow-rename', `${el.checked}`); - window.location.assign(url.toString()); + url.searchParams.set('follow-rename', String(el.checked)); + window.location.assign(url.href); }); }); } diff --git a/web_src/js/features/repo-common.ts b/web_src/js/features/repo-common.ts index 50d0db3673..c3b26fd06a 100644 --- a/web_src/js/features/repo-common.ts +++ b/web_src/js/features/repo-common.ts @@ -23,7 +23,7 @@ async function onDownloadArchive(e: Event) { if (data.complete) break; await sleep(Math.min((tryCount + 1) * 750, 2000)); } - window.location.href = el.href; // the archive is ready, start real downloading + window.location.assign(el.href); // the archive is ready, start real downloading } catch (e) { console.error(e); showErrorToast(`Failed to download the archive: ${errorMessage(e)}`, {duration: 2500}); diff --git a/web_src/js/features/repo-diff.ts b/web_src/js/features/repo-diff.ts index f866df3526..89af812b67 100644 --- a/web_src/js/features/repo-diff.ts +++ b/web_src/js/features/repo-diff.ts @@ -129,7 +129,7 @@ function initRepoDiffConversationNav() { const navIndex = isPrevious ? previousIndex : nextIndex; const elNavConversation = elAllConversations[navIndex]; const anchor = elNavConversation.querySelector('.comment')!.id; - window.location.href = `#${anchor}`; + window.location.assign(`#${anchor}`); }); } @@ -245,7 +245,7 @@ async function onLocationHashChange() { const issueCommentPrefix = '#issuecomment-'; if (currentHash.startsWith(issueCommentPrefix)) { const commentId = currentHash.substring(issueCommentPrefix.length); - const expandButton = document.querySelector(`.code-expander-button[data-hidden-comment-ids*=",${commentId},"]`); + const expandButton = document.querySelector(`.code-expander-button[data-hidden-comment-ids*=",${CSS.escape(commentId)},"]`); if (expandButton) { // avoid infinite loop, do not re-click the button if already clicked const attrAutoLoadClicked = 'data-auto-load-clicked'; diff --git a/web_src/js/features/repo-graph.ts b/web_src/js/features/repo-graph.ts index 2177368b9f..742ecfc47b 100644 --- a/web_src/js/features/repo-graph.ts +++ b/web_src/js/features/repo-graph.ts @@ -42,7 +42,7 @@ export function initRepoGraphGit() { elGraphBody.classList.add('is-loading'); try { - const resp = await GET(ajaxUrl.toString()); + const resp = await GET(ajaxUrl.href); elGraphBody.innerHTML = await resp.text(); } finally { elGraphBody.classList.remove('is-loading'); @@ -51,7 +51,7 @@ export function initRepoGraphGit() { const dropdownSelected = params.getAll('branch'); if (params.has('hide-pr-refs') && params.get('hide-pr-refs') === 'true') { - dropdownSelected.splice(0, 0, '...flow-hide-pr-refs'); + dropdownSelected.unshift('...flow-hide-pr-refs'); } const $dropdown = fomanticQuery('#flow-select-refs-dropdown'); diff --git a/web_src/js/features/repo-home.ts b/web_src/js/features/repo-home.ts index 8bc7af6195..29bad895e6 100644 --- a/web_src/js/features/repo-home.ts +++ b/web_src/js/features/repo-home.ts @@ -96,10 +96,7 @@ export function initRepoTopicBar() { }; const query = stripTags(this.urlData.query.trim()); let found_query = false; - const current_topics = []; - for (const el of queryElemChildren(topicDropdown, 'a.ui.label.visible')) { - current_topics.push(el.getAttribute('data-value')); - } + const current_topics = Array.from(queryElemChildren(topicDropdown, 'a.ui.label.visible'), (el) => el.getAttribute('data-value')); if (res.topics) { let found = false; diff --git a/web_src/js/features/repo-issue-content.ts b/web_src/js/features/repo-issue-content.ts index eda5f4c8ce..ebd21c2c51 100644 --- a/web_src/js/features/repo-issue-content.ts +++ b/web_src/js/features/repo-issue-content.ts @@ -148,7 +148,7 @@ export async function initRepoIssueContentHistory() { if (resp.editedHistoryCountMap[0] && elIssueDescription) { showContentHistoryMenu(issueBaseUrl, elIssueDescription, '0'); } - for (const [commentId, _editedCount] of Object.entries(resp.editedHistoryCountMap)) { + for (const commentId of Object.keys(resp.editedHistoryCountMap)) { if (commentId === '0') continue; const elIssueComment = document.querySelector(`#issuecomment-${commentId}`); if (elIssueComment) showContentHistoryMenu(issueBaseUrl, elIssueComment, commentId); diff --git a/web_src/js/features/repo-issue-list.ts b/web_src/js/features/repo-issue-list.ts index 046c1beee5..088e96fde2 100644 --- a/web_src/js/features/repo-issue-list.ts +++ b/web_src/js/features/repo-issue-list.ts @@ -58,10 +58,7 @@ function initRepoIssueListCheckboxes() { const url = el.getAttribute('data-url')!; let action = el.getAttribute('data-action')!; let elementId = el.getAttribute('data-element-id')!; - const issueIDList: string[] = []; - for (const el of document.querySelectorAll('.issue-checkbox:checked')) { - issueIDList.push(el.getAttribute('data-issue-id')!); - } + const issueIDList: string[] = Array.from(document.querySelectorAll('.issue-checkbox:checked'), (el) => (el.getAttribute('data-issue-id')!)); const issueIDs = issueIDList.join(','); if (!issueIDs) return; @@ -109,7 +106,7 @@ function initDropdownUserRemoteSearch(el: Element) { fullTextSearch: true, selectOnKeydown: false, action: (_text: string, value: string) => { - window.location.href = actionJumpUrl.replace('{username}', encodeURIComponent(value)); + window.location.assign(actionJumpUrl.replace('{username}', encodeURIComponent(value))); }, }); @@ -192,7 +189,7 @@ function initPinRemoveButton() { // Delete the tooltip el._tippy.destroy(); // Remove the Card - el.closest(`div.issue-card[data-issue-id="${id}"]`)!.remove(); + el.closest(`div.issue-card[data-issue-id="${CSS.escape(String(id))}"]`)!.remove(); } }); } diff --git a/web_src/js/features/repo-issue.ts b/web_src/js/features/repo-issue.ts index 07058c06d4..69ca3f4f6b 100644 --- a/web_src/js/features/repo-issue.ts +++ b/web_src/js/features/repo-issue.ts @@ -28,7 +28,7 @@ function initRepoIssueLabelFilter(elDropdown: HTMLElement) { const queryLabels = url.searchParams.get('labels') || ''; const selectedLabelIds = new Set(); for (const id of queryLabels ? queryLabels.split(',') : []) { - selectedLabelIds.add(`${Math.abs(parseInt(id))}`); // "labels" contains negative ids, which are excluded + selectedLabelIds.add(String(Math.abs(parseInt(id)))); // "labels" contains negative ids, which are excluded } const excludeLabel = (e: MouseEvent | KeyboardEvent, item: Element) => { @@ -130,9 +130,9 @@ export function initRepoIssueCommentDelete() { // on the Conversation page, there is no parent "tr", so no need to do anything for "add-code-comment" if (lineType) { if (lineType === 'same') { - document.querySelector(`[data-path="${path}"] .add-code-comment[data-idx="${idx}"]`)!.classList.remove('tw-invisible'); + document.querySelector(`[data-path="${CSS.escape(String(path))}"] .add-code-comment[data-idx="${CSS.escape(String(idx))}"]`)!.classList.remove('tw-invisible'); } else { - document.querySelector(`[data-path="${path}"] .add-code-comment[data-side="${side}"][data-idx="${idx}"]`)!.classList.remove('tw-invisible'); + document.querySelector(`[data-path="${CSS.escape(String(path))}"] .add-code-comment[data-side="${CSS.escape(String(side))}"][data-idx="${CSS.escape(String(idx))}"]`)!.classList.remove('tw-invisible'); } } conversationHolder.remove(); diff --git a/web_src/js/features/repo-projects.ts b/web_src/js/features/repo-projects.ts index 64a2e966c9..25846f67c6 100644 --- a/web_src/js/features/repo-projects.ts +++ b/web_src/js/features/repo-projects.ts @@ -120,11 +120,11 @@ function initRepoProjectColumnEdit(writableProjectBoard: Element): void { } // update the newly saved column title and color in the project board (to avoid reload) - const elEditButton = writableProjectBoard.querySelector(`.show-project-column-modal-edit[${attrDataColumnId}="${columnId}"]`)!; + const elEditButton = writableProjectBoard.querySelector(`.show-project-column-modal-edit[${CSS.escape(attrDataColumnId)}="${CSS.escape(columnId)}"]`)!; elEditButton.setAttribute(attrDataColumnTitle, elColumnTitle.value); elEditButton.setAttribute(attrDataColumnColor, elColumnColor.value); - const elBoardColumn = writableProjectBoard.querySelector(`.project-column[data-id="${columnId}"]`)!; + const elBoardColumn = writableProjectBoard.querySelector(`.project-column[data-id="${CSS.escape(columnId)}"]`)!; const elBoardColumnTitle = elBoardColumn.querySelector(`.project-column-title-text`)!; elBoardColumnTitle.textContent = elColumnTitle.value; if (elColumnColor.value) { diff --git a/web_src/js/features/repo-release.ts b/web_src/js/features/repo-release.ts index 702dcd3482..690911d9ed 100644 --- a/web_src/js/features/repo-release.ts +++ b/web_src/js/features/repo-release.ts @@ -12,7 +12,7 @@ export function initRepoReleaseNew() { registerGlobalEventFunc('click', 'onReleaseEditAttachmentDelete', (el) => { const uuid = el.getAttribute('data-uuid')!; const id = el.getAttribute('data-id')!; - document.querySelector(`input[name='attachment-del-${uuid}']`)!.value = 'true'; + document.querySelector(`input[name='attachment-del-${CSS.escape(uuid)}']`)!.value = 'true'; hideElem(`#attachment-${id}`); }); registerGlobalInitFunc('initReleaseEditForm', (elForm: HTMLFormElement) => { diff --git a/web_src/js/features/user-auth-webauthn.ts b/web_src/js/features/user-auth-webauthn.ts index f30f4a7f5f..9d0791cc30 100644 --- a/web_src/js/features/user-auth-webauthn.ts +++ b/web_src/js/features/user-auth-webauthn.ts @@ -79,7 +79,7 @@ async function loginPasskey() { } const reply = await res.json(); - window.location.href = reply?.redirect ?? `${appSubUrl}/`; + window.location.assign(reply?.redirect ?? `${appSubUrl}/`); } catch (err) { webAuthnError('general', errorMessage(err)); } @@ -151,7 +151,7 @@ async function verifyAssertion(assertedCredential: any) { // TODO: Credential ty } const reply = await res.json(); - window.location.href = reply?.redirect ?? `${appSubUrl}/`; + window.location.assign(reply?.redirect ?? `${appSubUrl}/`); } async function webauthnRegistered(newCredential: any) { // TODO: Credential type does not work @@ -188,7 +188,7 @@ function webAuthnError(errorType: ErrorType, message:string = '') { if (errorType === 'general') { elErrorMsg.textContent = message || 'unknown error'; } else { - const elTypedError = document.querySelector(`#webauthn-error [data-webauthn-error-msg=${errorType}]`); + const elTypedError = document.querySelector(`#webauthn-error [data-webauthn-error-msg=${CSS.escape(errorType)}]`); if (elTypedError) { elErrorMsg.textContent = `${elTypedError.textContent}${message ? ` ${message}` : ''}`; } else { diff --git a/web_src/js/markup/html2markdown.ts b/web_src/js/markup/html2markdown.ts index 9331f6b29a..4c8f51f00e 100644 --- a/web_src/js/markup/html2markdown.ts +++ b/web_src/js/markup/html2markdown.ts @@ -18,15 +18,9 @@ function prepareProcessors(ctx:ProcessorContext): Processors { const level = parseInt(el.tagName.slice(1)); el.textContent = `${'#'.repeat(level)} ${el.textContent.trim()}`; }, - STRONG(el: HTMLElement) { - return `**${el.textContent}**`; - }, - EM(el: HTMLElement) { - return `_${el.textContent}_`; - }, - DEL(el: HTMLElement) { - return `~~${el.textContent}~~`; - }, + STRONG: (el: HTMLElement) => `**${el.textContent}**`, + EM: (el: HTMLElement) => `_${el.textContent}_`, + DEL: (el: HTMLElement) => `~~${el.textContent}~~`, A(el: HTMLElement) { const text = el.textContent || 'link'; const href = el.getAttribute('href'); @@ -62,9 +56,7 @@ function prepareProcessors(ctx:ProcessorContext): Processors { el.textContent = `${' '.repeat(nestingIdentLevel * 4)}${bullet}${el.textContent}${ctx.elementIsLast ? '' : '\n'}`; return el; }, - INPUT(el: HTMLElement) { - return (el as HTMLInputElement).checked ? '[x] ' : '[ ] '; - }, + INPUT: (el: HTMLElement) => (el as HTMLInputElement).checked ? '[x] ' : '[ ] ', CODE(el: HTMLElement) { const text = el.textContent; if (el.parentNode && (el.parentNode as HTMLElement).tagName === 'PRE') { @@ -86,8 +78,8 @@ function prepareProcessors(ctx:ProcessorContext): Processors { function processElement(ctx :ProcessorContext, processors: Processors, el: HTMLElement): string | void { if (el.hasAttribute('data-markdown-generated-content')) return el.textContent; - if (el.tagName === 'A' && el.children.length === 1 && el.children[0].tagName === 'IMG') { - return processElement(ctx, processors, el.children[0] as HTMLElement); + if (el.tagName === 'A' && el.children.length === 1 && el.firstElementChild!.tagName === 'IMG') { + return processElement(ctx, processors, el.firstElementChild as HTMLElement); } const isListContainer = el.tagName === 'OL' || el.tagName === 'UL'; diff --git a/web_src/js/markup/render-iframe.test.ts b/web_src/js/markup/render-iframe.test.ts index bdbe523cdf..def2a2a8e2 100644 --- a/web_src/js/markup/render-iframe.test.ts +++ b/web_src/js/markup/render-iframe.test.ts @@ -29,7 +29,6 @@ describe('navigateToIframeLink', () => { test('unsafe links', () => { const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined); - window.location.href = 'http://localhost:3000/'; // eslint-disable-next-line no-script-url navigateToIframeLink('javascript:void(0);', '_blank'); diff --git a/web_src/js/markup/render-iframe.ts b/web_src/js/markup/render-iframe.ts index 6a191ac5c6..31c5a734ae 100644 --- a/web_src/js/markup/render-iframe.ts +++ b/web_src/js/markup/render-iframe.ts @@ -4,7 +4,7 @@ import {isDarkTheme} from '../utils.ts'; function safeRenderIframeLink(link: any): string | null { try { - const url = new URL(`${link}`, window.location.href); + const url = new URL(link, window.location.href); if (url.protocol !== 'http:' && url.protocol !== 'https:') { console.error(`Unsupported link protocol: ${link}`); return null; diff --git a/web_src/js/modules/codeeditor/main.ts b/web_src/js/modules/codeeditor/main.ts index 8feea2b475..25eef4837c 100644 --- a/web_src/js/modules/codeeditor/main.ts +++ b/web_src/js/modules/codeeditor/main.ts @@ -203,9 +203,7 @@ export async function createCodeEditor(textarea: HTMLTextAreaElement, filenameIn }, }), cm.language.foldGutter({ - markerDOM(open: boolean) { - return createElementFromHTML(svg(open ? 'octicon-chevron-down' : 'octicon-chevron-right', 13)); - }, + markerDOM: (open: boolean) => createElementFromHTML(svg(open ? 'octicon-chevron-down' : 'octicon-chevron-right', 13)), }), cm.view.highlightActiveLineGutter(), cm.view.highlightSpecialChars(), diff --git a/web_src/js/modules/errors.ts b/web_src/js/modules/errors.ts index 4b6504dc99..0163fd8b52 100644 --- a/web_src/js/modules/errors.ts +++ b/web_src/js/modules/errors.ts @@ -20,11 +20,11 @@ export function showGlobalErrorMessage(msg: string, msgType: Intent = 'error', d } // compact the message to a data attribute to avoid too many duplicated messages const msgCompact = `${msgType}-${msg.trim()}`.replace(/[^-\w\u{80}-\u{10FFFF}]+/gu, ''); - let msgContainer = parentContainer.querySelector(`.js-global-error[data-global-error-msg-compact="${msgCompact}"]`); + let msgContainer = parentContainer.querySelector(`.js-global-error[data-global-error-msg-compact="${CSS.escape(msgCompact)}"]`); if (!msgContainer) { const el = document.createElement('div'); el.innerHTML = html`
`; - msgContainer = el.childNodes[0] as HTMLDivElement; + msgContainer = el.firstElementChild as HTMLDivElement; } // merge duplicated messages into "the message (count)" format @@ -51,8 +51,7 @@ export function isGiteaError(filename: string, stack: string): boolean { if (extensionRe.test(filename) || extensionRe.test(stack)) return false; const assetBaseUrl = new URL(`${window.config.assetUrlPrefix}/`, window.location.origin).href; if (filename && !filename.startsWith(assetBaseUrl) && !filename.startsWith(window.location.origin)) return false; - if (stack && !stack.includes(assetBaseUrl)) return false; - return true; + return !stack || stack.includes(assetBaseUrl); } export function processWindowErrorEvent({error, reason, message, type, filename, lineno, colno}: ErrorEvent & PromiseRejectionEvent) { diff --git a/web_src/js/modules/fomantic/dropdown.ts b/web_src/js/modules/fomantic/dropdown.ts index a12b56d23d..93bc89728c 100644 --- a/web_src/js/modules/fomantic/dropdown.ts +++ b/web_src/js/modules/fomantic/dropdown.ts @@ -253,22 +253,22 @@ function attachDomEvents(dropdown: HTMLElement, focusable: HTMLElement, menu: HT dropdown.addEventListener('mousedown', () => { ignoreClickPreVisible += isMenuVisible() ? 1 : 0; ignoreClickPreEvents++; - }, true); + }, {capture: true}); dropdown.addEventListener('focus', () => { ignoreClickPreVisible += isMenuVisible() ? 1 : 0; ignoreClickPreEvents++; deferredRefreshAriaActiveItem(); - }, true); + }, {capture: true}); dropdown.addEventListener('blur', () => { ignoreClickPreVisible = ignoreClickPreEvents = 0; deferredRefreshAriaActiveItem(100); - }, true); + }, {capture: true}); dropdown.addEventListener('mouseup', () => { setTimeout(() => { ignoreClickPreVisible = ignoreClickPreEvents = 0; deferredRefreshAriaActiveItem(100); }, 0); - }, true); + }, {capture: true}); dropdown.addEventListener('click', (e: MouseEvent) => { if (isMenuVisible() && ignoreClickPreVisible !== 2 && // dropdown is switch from invisible to visible @@ -277,7 +277,7 @@ function attachDomEvents(dropdown: HTMLElement, focusable: HTMLElement, menu: HT e.stopPropagation(); // if the dropdown menu has been opened by focus, do not trigger the next click event again } ignoreClickPreEvents = ignoreClickPreVisible = 0; - }, true); + }, {capture: true}); } // Although Fomantic Dropdown supports "hideDividers", it doesn't really work with our "scoped dividers" diff --git a/web_src/js/modules/fomantic/tab.ts b/web_src/js/modules/fomantic/tab.ts index a58dd80bba..7da95520bd 100644 --- a/web_src/js/modules/fomantic/tab.ts +++ b/web_src/js/modules/fomantic/tab.ts @@ -8,7 +8,7 @@ export function initTabSwitcher(tabItemContainer: Element) { for (const elItem of tabItems) { const tabName = elItem.getAttribute('data-tab')!; elItem.addEventListener('click', () => { - const elPanel = document.querySelector(`.ui.tab[data-tab="${tabName}"]`)!; + const elPanel = document.querySelector(`.ui.tab[data-tab="${CSS.escape(tabName)}"]`)!; queryElemSiblings(elPanel, '.ui.tab', (el) => el.classList.remove('active')); queryElemSiblings(elItem, '.item[data-tab]', (el) => el.classList.remove('active')); elItem.classList.add('active'); diff --git a/web_src/js/modules/tippy.ts b/web_src/js/modules/tippy.ts index c2ca9ab51b..a7df1c0485 100644 --- a/web_src/js/modules/tippy.ts +++ b/web_src/js/modules/tippy.ts @@ -89,7 +89,7 @@ function attachTooltip(target: Element, content: Content | null = null): Instanc allowHTML: target.getAttribute('data-tooltip-render') === 'html', placement: target.getAttribute('data-tooltip-placement') as Placement || 'top-start', followCursor: target.getAttribute('data-tooltip-follow-cursor') as Props['followCursor'] || false, - ...(target.getAttribute('data-tooltip-interactive') === 'true' ? {interactive: true, aria: {content: 'describedby', expanded: false}} : {}), + ...((target.getAttribute('data-tooltip-interactive') === 'true') && {interactive: true, aria: {content: 'describedby', expanded: false}}), }; if (!target._tippy) { diff --git a/web_src/js/modules/toast.ts b/web_src/js/modules/toast.ts index ca72ab48ce..a6cfef6848 100644 --- a/web_src/js/modules/toast.ts +++ b/web_src/js/modules/toast.ts @@ -45,7 +45,7 @@ type ToastifyElement = HTMLElement & {_giteaToastifyInstance?: Toast}; /** See https://github.com/apvarun/toastify-js#api for options */ function showToast(message: string, level: Intent, {gravity, position, duration, useHtmlBody, preventDuplicates = true, ...other}: ToastOpts = {}): Toast | null { const parent = document.querySelector('.ui.dimmer.active') ?? document.body; - const duplicateKey = preventDuplicates ? (preventDuplicates === true ? `${level}-${message}` : preventDuplicates) : ''; + const duplicateKey = preventDuplicates ? (typeof preventDuplicates === 'string' ? preventDuplicates : `${level}-${message}`) : ''; // prevent showing duplicate toasts with the same level and message, and give visual feedback for end users if (preventDuplicates) { diff --git a/web_src/js/modules/worker.ts b/web_src/js/modules/worker.ts index 64c32fbe81..eb951d94e9 100644 --- a/web_src/js/modules/worker.ts +++ b/web_src/js/modules/worker.ts @@ -50,7 +50,7 @@ export class UserEventsSharedWorker { // * in this case, the logout fetch call already completes and has sent the "logout" message to the worker // * there can be a data-race between the fetch call's redirection and the "logout" message from the worker // * the fetch call's logout redirection should always win over the worker message, because it might have a custom location - setTimeout(() => { window.location.href = `${appSubUrl}/` }, 1000); + setTimeout(() => { window.location.assign(`${appSubUrl}/`) }, 1000); } else if (event.data.type === 'close') { this.sharedWorker.port.postMessage({type: 'close'}); this.sharedWorker.port.close(); diff --git a/web_src/js/render/plugins/inplace-pdf-viewer.ts b/web_src/js/render/plugins/inplace-pdf-viewer.ts index 7447f38ec4..7eb193bda7 100644 --- a/web_src/js/render/plugins/inplace-pdf-viewer.ts +++ b/web_src/js/render/plugins/inplace-pdf-viewer.ts @@ -4,9 +4,7 @@ export function newInplacePluginPdfViewer(): InplaceRenderPlugin { return { name: 'pdf-viewer', - canHandle(filename: string, _mimeType: string): boolean { - return filename.toLowerCase().endsWith('.pdf'); - }, + canHandle: (filename: string, _mimeType: string): boolean => filename.toLowerCase().endsWith('.pdf'), async render(container: HTMLElement, fileUrl: string): Promise { const PDFObject = await import('pdfobject'); diff --git a/web_src/js/utils/dom.ts b/web_src/js/utils/dom.ts index b18f33f33d..03ab783142 100644 --- a/web_src/js/utils/dom.ts +++ b/web_src/js/utils/dom.ts @@ -9,8 +9,8 @@ type ElementsCallback = (el: T) => Promisable; type ElementsCallbackWithArgs = (el: Element, ...args: any[]) => Promisable; function elementsCall(el: ElementArg, func: ElementsCallbackWithArgs, ...args: any[]): ArrayLikeIterable { - if (typeof el === 'string' || el instanceof String) { - el = document.querySelectorAll(el as string); + if (typeof el === 'string') { + el = document.querySelectorAll(el); } if (el instanceof Node) { func(el, ...args); diff --git a/web_src/js/utils/match.ts b/web_src/js/utils/match.ts index 41333d9fa4..ac8ff16c56 100644 --- a/web_src/js/utils/match.ts +++ b/web_src/js/utils/match.ts @@ -8,7 +8,7 @@ import type {Issue, Mention} from '../types.ts'; const maxMatches = 6; function sortAndReduce(map: Map): T[] { - const sortedMap = new Map(Array.from(map.entries()).sort((a, b) => a[1] - b[1])); + const sortedMap = new Map(Array.from(map).sort((a, b) => a[1] - b[1])); return Array.from(sortedMap.keys()).slice(0, maxMatches); } diff --git a/web_src/js/utils/testhelper.ts b/web_src/js/utils/testhelper.ts index 8da77d8134..56ec639c33 100644 --- a/web_src/js/utils/testhelper.ts +++ b/web_src/js/utils/testhelper.ts @@ -10,11 +10,11 @@ export function dedent(str: string) { const match = str.match(/^[ \t]*(?=\S)/gm); if (!match) return str; - let minIndent = Number.POSITIVE_INFINITY; + let minIndent = Infinity; for (const indent of match) { minIndent = Math.min(minIndent, indent.length); } - if (minIndent === 0 || minIndent === Number.POSITIVE_INFINITY) { + if (minIndent === 0 || minIndent === Infinity) { return str; } diff --git a/web_src/js/utils/time.ts b/web_src/js/utils/time.ts index cc005a1304..07b23f3b1b 100644 --- a/web_src/js/utils/time.ts +++ b/web_src/js/utils/time.ts @@ -37,7 +37,7 @@ export function firstStartDateAfterDate(inputDate: Date): number { } const dayOfWeek = inputDate.getUTCDay(); const daysUntilSunday = 7 - dayOfWeek; - const resultDate = new Date(inputDate.getTime()); + const resultDate = new Date(inputDate); resultDate.setUTCDate(resultDate.getUTCDate() + daysUntilSunday); return resultDate.valueOf(); } diff --git a/web_src/js/webcomponents/overflow-menu.ts b/web_src/js/webcomponents/overflow-menu.ts index b20d11e243..51409a3324 100644 --- a/web_src/js/webcomponents/overflow-menu.ts +++ b/web_src/js/webcomponents/overflow-menu.ts @@ -21,7 +21,7 @@ window.customElements.define('overflow-menu', class extends HTMLElement { this.popup.style.display = ''; this.button!.setAttribute('aria-expanded', 'true'); setTimeout(() => this.popup.focus(), 0); - document.addEventListener('click', this.onClickOutside, true); + document.addEventListener('click', this.onClickOutside, {capture: true}); } hidePopup() { @@ -125,7 +125,7 @@ window.customElements.define('overflow-menu', class extends HTMLElement { const itemRight = item.offsetLeft + item.offsetWidth; if (menuRight - itemRight < 38) { // roughly the width of .overflow-menu-button with some extra space const onlyLastItem = idx === menuItems.length - 1 && this.overflowItems.length === 0; - const lastItemFit = onlyLastItem && menuRight - itemRight > 0; + const lastItemFit = onlyLastItem && menuRight > itemRight; const moveToPopup = !onlyLastItem || !lastItemFit; if (moveToPopup) this.overflowItems.push(item); }