diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 2b3e54410..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,5 +0,0 @@ -Fix #000 - -## Proposed Changes - - diff --git a/.github/renovate.json b/.github/renovate.json index 66be8d19e..3ff33ecfb 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -17,6 +17,7 @@ "workarounds:all" ], "labels": ["Type: Maintenance", ":blue_heart:"], + "rebaseWhen": "behind-base-branch", "packageRules": [ { "major": { diff --git a/.github/workflows/build-node.yml b/.github/workflows/build.yml similarity index 80% rename from .github/workflows/build-node.yml rename to .github/workflows/build.yml index d670bbf54..0c5d026b2 100644 --- a/.github/workflows/build-node.yml +++ b/.github/workflows/build.yml @@ -6,9 +6,9 @@ on: workflow_call: jobs: - build_node: + build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - - run: pnpm run build:node + - run: pnpm run build diff --git a/.github/workflows/lint-markdown.yml b/.github/workflows/lint-markdown.yml index cfbd02ab2..61f9a5101 100644 --- a/.github/workflows/lint-markdown.yml +++ b/.github/workflows/lint-markdown.yml @@ -11,4 +11,4 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - - run: pnpm run lint:md + - run: pnpm run lint:md-full diff --git a/.github/workflows/lint-yaml.yml b/.github/workflows/lint-yaml.yml new file mode 100644 index 000000000..325f541d6 --- /dev/null +++ b/.github/workflows/lint-yaml.yml @@ -0,0 +1,14 @@ +name: Lint Yaml + +on: + pull_request: + workflow_dispatch: + workflow_call: + +jobs: + lint_yaml: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/prepare + - run: pnpm run lint:yaml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b3fdfd5c5..c900db003 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,9 +30,11 @@ jobs: uses: ./.github/workflows/lint-packages.yml lint_spelling: uses: ./.github/workflows/lint-spelling.yml - test: + lint_yaml: + uses: ./.github/workflows/lint-yaml.yml + test_js: uses: ./.github/workflows/test-js.yml - type_check: + typecheck: uses: ./.github/workflows/typecheck.yml release: @@ -42,10 +44,11 @@ jobs: - lint_knip_dev - lint_knip_prod - lint_markdown - - lint_spelling - lint_packages - - test - - type_check + - lint_spelling + - lint_yaml + - test_js + - typecheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index fc300fd4a..aac6f6101 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -18,5 +18,7 @@ jobs: - uses: actions/checkout@v4 - uses: micnncim/action-label-syncer@v1 + with: + manifest: .github/labels.yml env: GITHUB_TOKEN: ${{ github.token }} diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc index d09f8b15d..949598496 100644 --- a/.markdownlint-cli2.jsonc +++ b/.markdownlint-cli2.jsonc @@ -2,5 +2,302 @@ "$schema": "node_modules/markdownlint-cli2/schema/markdownlint-cli2-config-schema.json", "gitignore": true, "globs": ["**/*.md"], - "ignores": ["node_modules", "coverage", "lib", "CHANGELOG.md"], + "ignores": ["node_modules", "coverage", "dist", "CHANGELOG.md"], + "config": { + "default": false, + "extends": "markdownlint/style/prettier", + + // MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md001.md + "MD001": true, + + // MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md003.md + "MD003": { + // Heading style + "style": "atx", + }, + + // MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md004.md + "MD004": { + // List style + "style": "dash", + }, + + // MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md005.md + "MD005": true, + + // MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md007.md + "MD007": { + // Spaces for indent + "indent": 2, + // Whether to indent the first level of the list + "start_indented": false, + // Spaces for first level indent (when start_indented is set) + "start_indent": 2, + }, + + // MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md009.md + "MD009": { + // Spaces for line break - 0 to disable + "br_spaces": 0, + // Allow spaces for empty lines in list items + "list_item_empty_lines": false, + // Include unnecessary breaks + "strict": false, + }, + + // MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md010.md + "MD010": { + // Include code blocks + "code_blocks": true, + // Fenced code languages to ignore + "ignore_code_languages": [], + // Number of spaces for each hard tab + "spaces_per_tab": 2, + }, + + // MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md011.md + "MD011": true, + + // MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md012.md + "MD012": { + // Consecutive blank lines + "maximum": 1, + }, + + // MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md + "MD013": { + // Number of characters + "line_length": 120, + // Number of characters for headings + "heading_line_length": 120, + // Number of characters for code blocks + "code_block_line_length": 120, + // Include code blocks + "code_blocks": true, + // Include tables + "tables": false, + // Include headings + "headings": true, + // Strict length checking + "strict": false, + // Stern length checking + "stern": false, + }, + + // MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md014.md + // "MD014": true, + + // MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md018.md + "MD018": true, + + // MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md019.md + "MD019": true, + + // MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md020.md + "MD020": true, + + // MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md021.md + "MD021": true, + + // MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md022.md + "MD022": { + // Blank lines above heading + "lines_above": 1, + // Blank lines below heading + "lines_below": 1, + }, + + // MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md023.md + "MD023": true, + + // MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md024.md + "MD024": { + // Only check sibling headings + "siblings_only": true, + }, + + // MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md025.md + "MD025": { + // Heading level + "level": 1, + // RegExp for matching title in front matter + "front_matter_title": "^\\s*title\\s*[:=]", + }, + + // MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md026.md + "MD026": { + // Punctuation characters + "punctuation": ".,;:!。,;:!", + }, + + // MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md027.md + "MD027": true, + + // MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md028.md + "MD028": true, + + // MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md029.md + "MD029": { + // List style + "style": "one_or_ordered", + }, + + // MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md030.md + "MD030": { + // Spaces for single-line unordered list items + "ul_single": 1, + // Spaces for single-line ordered list items + "ol_single": 1, + // Spaces for multi-line unordered list items + "ul_multi": 1, + // Spaces for multi-line ordered list items + "ol_multi": 1, + }, + + // MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md031.md + "MD031": { + // Include list items + "list_items": true, + }, + + // MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md032.md + "MD032": true, + + // MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md + // "MD033": { + // // Allowed elements + // "allowed_elements": ["details", "summary", "sub", "sup", "img"] + // }, + + // MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md034.md + "MD034": true, + + // MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md035.md + "MD035": { + // Horizontal rule style + "style": "---", + }, + + // MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md036.md + "MD036": { + // Punctuation characters + "punctuation": ".,;:!?。,;:!?", + }, + + // MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md037.md + "MD037": true, + + // MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md038.md + "MD038": true, + + // MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md039.md + "MD039": true, + + // MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md040.md + "MD040": { + // List of languages + "allowed_languages": [], + // Require language only + "language_only": false, + }, + + // MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md041.md + // "MD041": { + // // Heading level + // "level": 1, + // // RegExp for matching title in front matter + // "front_matter_title": "^\\s*title\\s*[:=]" + // }, + + // MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md042.md + "MD042": true, + + // MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md043.md + // "MD043": { + // // List of headings + // "headings": [], + // // Match case of headings + // "match_case": false + // }, + + // MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md044.md + // "MD044": { + // // List of proper names + // "names": [], + // // Include code blocks + // "code_blocks": true, + // // Include HTML elements + // "html_elements": true + // }, + + // MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md045.md + "MD045": true, + + // MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md046.md + "MD046": { + // Block style + "style": "fenced", + }, + + // MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md047.md + "MD047": true, + + // MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md048.md + "MD048": { + // Code fence style + "style": "backtick", + }, + + // MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md049.md + "MD049": { + // Emphasis style + "style": "underscore", + }, + + // MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md050.md + "MD050": { + // Strong style + "style": "asterisk", + }, + + // MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md051.md + "MD051": true, + + // MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md052.md + "MD052": { + // Include shortcut syntax + "shortcut_syntax": false, + }, + + // MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md053.md + "MD053": { + // Ignored definitions + "ignored_definitions": ["//"], + }, + + // MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md054.md + "MD054": { + // Allow autolinks + "autolink": true, + // Allow inline links and images + "inline": true, + // Allow full reference links and images + "full": true, + // Allow collapsed reference links and images + "collapsed": true, + // Allow shortcut reference links and images + "shortcut": true, + // Allow URLs as inline links + "url_inline": true, + }, + + // MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md055.md + "MD055": { + // Table pipe style + "style": "leading_and_trailing", + }, + + // MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md056.md + "MD056": true, + }, } diff --git a/.markdownlint.json b/.markdownlint.json deleted file mode 100644 index d8e6c721a..000000000 --- a/.markdownlint.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "$schema": "node_modules/markdownlint-cli2/schema/markdownlint-config-schema.json", - - "default": false, - "extends": "markdownlint/style/prettier", - - // MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md001.md - "MD001": true, - - // MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md003.md - "MD003": { - // Heading style - "style": "atx" - }, - - // MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md004.md - "MD004": { - // List style - "style": "dash" - }, - - // MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md005.md - "MD005": true, - - // MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md007.md - "MD007": { - // Spaces for indent - "indent": 2, - // Whether to indent the first level of the list - "start_indented": false, - // Spaces for first level indent (when start_indented is set) - "start_indent": 2 - }, - - // MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md009.md - "MD009": { - // Spaces for line break - 0 to disable - "br_spaces": 0, - // Allow spaces for empty lines in list items - "list_item_empty_lines": false, - // Include unnecessary breaks - "strict": false - }, - - // MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md010.md - "MD010": { - // Include code blocks - "code_blocks": true, - // Fenced code languages to ignore - "ignore_code_languages": [], - // Number of spaces for each hard tab - "spaces_per_tab": 2 - }, - - // MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md011.md - "MD011": true, - - // MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md012.md - "MD012": { - // Consecutive blank lines - "maximum": 1 - }, - - // MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md - "MD013": { - // Number of characters - "line_length": 120, - // Number of characters for headings - "heading_line_length": 120, - // Number of characters for code blocks - "code_block_line_length": 120, - // Include code blocks - "code_blocks": true, - // Include tables - "tables": false, - // Include headings - "headings": true, - // Strict length checking - "strict": false, - // Stern length checking - "stern": false - }, - - // MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md014.md - // "MD014": true, - - // MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md018.md - "MD018": true, - - // MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md019.md - "MD019": true, - - // MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md020.md - "MD020": true, - - // MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md021.md - "MD021": true, - - // MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md022.md - "MD022": { - // Blank lines above heading - "lines_above": 1, - // Blank lines below heading - "lines_below": 1 - }, - - // MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md023.md - "MD023": true, - - // MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md024.md - "MD024": { - // Only check sibling headings - "siblings_only": true - }, - - // MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md025.md - "MD025": { - // Heading level - "level": 1, - // RegExp for matching title in front matter - "front_matter_title": "^\\s*title\\s*[:=]" - }, - - // MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md026.md - "MD026": { - // Punctuation characters - "punctuation": ".,;:!。,;:!" - }, - - // MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md027.md - "MD027": true, - - // MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md028.md - "MD028": true, - - // MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md029.md - "MD029": { - // List style - "style": "one_or_ordered" - }, - - // MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md030.md - "MD030": { - // Spaces for single-line unordered list items - "ul_single": 1, - // Spaces for single-line ordered list items - "ol_single": 1, - // Spaces for multi-line unordered list items - "ul_multi": 1, - // Spaces for multi-line ordered list items - "ol_multi": 1 - }, - - // MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md031.md - "MD031": { - // Include list items - "list_items": true - }, - - // MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md032.md - "MD032": true, - - // MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md - // "MD033": { - // // Allowed elements - // "allowed_elements": ["details", "summary", "sub", "sup", "img"] - // }, - - // MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md034.md - "MD034": true, - - // MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md035.md - "MD035": { - // Horizontal rule style - "style": "---" - }, - - // MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md036.md - "MD036": { - // Punctuation characters - "punctuation": ".,;:!?。,;:!?" - }, - - // MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md037.md - "MD037": true, - - // MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md038.md - "MD038": true, - - // MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md039.md - "MD039": true, - - // MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md040.md - "MD040": { - // List of languages - "allowed_languages": [], - // Require language only - "language_only": false - }, - - // MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md041.md - // "MD041": { - // // Heading level - // "level": 1, - // // RegExp for matching title in front matter - // "front_matter_title": "^\\s*title\\s*[:=]" - // }, - - // MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md042.md - "MD042": true, - - // MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md043.md - // "MD043": { - // // List of headings - // "headings": [], - // // Match case of headings - // "match_case": false - // }, - - // MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md044.md - // "MD044": { - // // List of proper names - // "names": [], - // // Include code blocks - // "code_blocks": true, - // // Include HTML elements - // "html_elements": true - // }, - - // MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md045.md - "MD045": true, - - // MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md046.md - "MD046": { - // Block style - "style": "fenced" - }, - - // MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md047.md - "MD047": true, - - // MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md048.md - "MD048": { - // Code fence style - "style": "backtick" - }, - - // MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md049.md - "MD049": { - // Emphasis style - "style": "underscore" - }, - - // MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md050.md - "MD050": { - // Strong style - "style": "asterisk" - }, - - // MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md051.md - "MD051": true, - - // MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md052.md - "MD052": { - // Include shortcut syntax - "shortcut_syntax": false - }, - - // MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md053.md - "MD053": { - // Ignored definitions - "ignored_definitions": ["//"] - }, - - // MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md054.md - "MD054": { - // Allow autolinks - "autolink": true, - // Allow inline links and images - "inline": true, - // Allow full reference links and images - "full": true, - // Allow collapsed reference links and images - "collapsed": true, - // Allow shortcut reference links and images - "shortcut": true, - // Allow URLs as inline links - "url_inline": true - }, - - // MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md055.md - "MD055": { - // Table pipe style - "style": "leading_and_trailing" - }, - - // MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md056.md - "MD056": true -} diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index e4da7d2ef..000000000 --- a/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -/build/ -/coverage*/ -/lib/ -/node_modules/ -/CHANGELOG.md -/pnpm-lock.yaml diff --git a/.prettierrc.yml b/.prettierrc.yml deleted file mode 100644 index ca544b678..000000000 --- a/.prettierrc.yml +++ /dev/null @@ -1,14 +0,0 @@ -"$schema": http://json.schemastore.org/prettierrc - -plugins: - - prettier-plugin-packagejson - -trailingComma: "all" - -overrides: - - files: "*.md" - options: - embeddedLanguageFormatting: "off" - - files: ".nvmrc" - options: - parser: "yaml" diff --git a/.vscode/settings.json b/.vscode/settings.json index e78a8dea9..a68a60440 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,42 +1,47 @@ { + // Disable the default formatter, use eslint instead + "prettier.enable": false, + "editor.formatOnSave": false, "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" + "source.fixAll": "explicit" }, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": false, - "editor.rulers": [80], - "eslint.probe": [ - "html", + "files.trimTrailingWhitespace": true, + + // Silent the stylistic rules in you IDE, but still auto fix them + "eslint.rules.customizations": [ + { "rule": "style/*", "severity": "off" }, + { "rule": "*-indent", "severity": "off" }, + { "rule": "*-spacing", "severity": "off" }, + { "rule": "*-spaces", "severity": "off" }, + { "rule": "*-order", "severity": "off" }, + { "rule": "*-dangle", "severity": "off" }, + { "rule": "*-newline", "severity": "off" }, + { "rule": "*quotes", "severity": "off" }, + { "rule": "*semi", "severity": "off" } + ], + + // Enable eslint for all supported languages + "eslint.validate": [ "javascript", "javascriptreact", - "json", - "jsonc", - "markdown", - "toml", "typescript", "typescriptreact", "vue", + "html", + "markdown", + "json", + "jsonc", "yaml" ], - "files.associations": { - ".markdownlint.json": "jsonc", - ".markdownlintignore": "ignore" - }, - "files.exclude": { - "coverage": true, - "cz-adapter/index.js": true - }, - "files.trimTrailingWhitespace": true, - "search.exclude": { - "**/.git/": true, - "**/.nyc_output/": true, - ".vscode/": true, - "build/": true, - "lib/": true, - "pnpm-lock.yaml": true - }, - "typescript.tsdk": "./node_modules/typescript/lib", - "[markdown]": { - "editor.rulers": [120] - } + + "editor.rulers": [120], + "typescript.tsdk": "node_modules/typescript/lib", + "json.schemas": [ + { + "fileMatch": ["**/*.jsonc", "**/tsconfig.json", "**/tsconfig.*.json", ".vscode/*.json"], + "schema": { + "allowTrailingCommas": true + } + } + ] } diff --git a/cspell.config.yml b/cspell.config.yml index 2a51c1228..eb5a3fe89 100644 --- a/cspell.config.yml +++ b/cspell.config.yml @@ -60,6 +60,7 @@ overrides: - filename: "**/*.yml" ignoreRegExpList: - /^\s*(?:[a-z0-9]|-|_|\"|')+:/ui # ignore keys + - /@[a-z0-9-]+\/[a-z0-9-]+/u # scoped packages - filename: ".github/(actions|workflows)/*.yml" ignoreRegExpList: diff --git a/eslint-doc-generator.config.ts b/eslint-doc-generator.config.ts index 98676284b..99c9248f9 100644 --- a/eslint-doc-generator.config.ts +++ b/eslint-doc-generator.config.ts @@ -1,5 +1,5 @@ import type { GenerateOptions } from "eslint-doc-generator"; -import { format, resolveConfig } from "prettier"; +import { format } from "prettier"; export default { configEmoji: [["lite", "☑️"]], @@ -7,7 +7,7 @@ export default { ruleDocSectionInclude: ["Rule Details"], ruleListSplit: "meta.docs.category", postprocess: (doc) => - resolveConfig(import.meta.url).then((options) => - format(doc, { ...options, parser: "markdown" }), - ), + format(doc, { + parser: "markdown", + }), } satisfies GenerateOptions; diff --git a/eslint.config.js b/eslint.config.js index 6f1fa7b29..ecf413325 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -5,9 +5,7 @@ import pluginEslint from "eslint-plugin-eslint-plugin"; import glob from "fast-glob"; import { tsImport } from "tsx/esm/api"; -const local = await tsImport("./src/index.ts", import.meta.url).then( - (r) => r.default, -); +const local = await tsImport("./src/index.ts", import.meta.url).then((r) => r.default); const configs = await rsEslint( { @@ -123,6 +121,17 @@ const configs = await rsEslint( "jsdoc/require-jsdoc": "off", }, }, + { + files: ["**/*.md", "**/*.md/*"], + rules: { + "format/prettier": [ + "error", + { + embeddedLanguageFormatting: "off", + }, + ], + }, + }, ); // Use our local version of the plugin. diff --git a/knip.jsonc b/knip.jsonc index 2d9debc14..e7c08de0f 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -1,16 +1,8 @@ { "$schema": "node_modules/knip/schema-jsonc.json", - "entry": ["src/index.ts!", "tests/**/*.test.ts"], + "entry": ["src/index.ts!"], "project": ["src/**/*.ts!", "tests/**/*.{js,ts}"], "ignore": ["lib/**", "tests/fixture/file.ts"], - "ignoreDependencies": [ - // Unknown reason for issue. - "@vitest/coverage-v8", - - // Lint staged - "tsc-files", - - // Eslint - "@eslint/compat", - ], + "ignoreDependencies": ["@eslint/compat", "tsc-files"], + "exclude": ["exports", "nsExports", "types", "nsTypes"], } diff --git a/package.json b/package.json index ead961fbc..4cb543e6a 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,10 @@ { "type": "ko-fi", "url": "https://ko-fi.com/rebeccastevens" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/eslint-plugin-functional" } ], "license": "MIT", @@ -30,17 +34,24 @@ "name": "Rebecca Stevens", "email": "rebecca.stevens@outlook.co.nz" }, - "contributors": ["Jonas Kello"], + "contributors": [ + "Jonas Kello" + ], "type": "module", "exports": { "types": "./lib/index.d.ts", "default": "./lib/index.js" }, - "files": ["lib/", "package.json", "LICENSE", "README.md"], + "files": [ + "lib/", + "package.json", + "LICENSE", + "README.md" + ], "scripts": { "build": "pnpm run build:node && pnpm run build:docs", "build:docs": "eslint-doc-generator", - "build:node": "rimraf lib && rollup -c rollup.config.ts --configPlugin rollup-plugin-ts", + "build:node": "rimraf lib && rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript", "lint": "eslint && pnpm run lint:md && pnpm lint:eslint-docs && pnpm run lint:spelling && pnpm run lint:knip && pnpm run lint:packages", "lint-fix": "pnpm run build && eslint --fix && pnpm run lint:md-fix && pnpm run lint:packages-fix", "lint:eslint-docs": "eslint-doc-generator --check", @@ -48,15 +59,15 @@ "lint:js": "eslint \"**/*.?([cm])[jt]s?(x)\"", "lint:js-fix": "eslint \"**/*.?([cm])[jt]s?(x)\" --fix", "lint:knip": "pnpm run lint:knip:development && pnpm run lint:knip:production", - "lint:knip:development": "knip --exclude exports,nsExports,types,nsTypes", - "lint:knip:production": "knip --production --strict --exclude exports,nsExports,types,nsTypes", + "lint:knip:development": "knip", + "lint:knip:production": "knip --production", "lint:md": "markdownlint-cli2", "lint:md-fix": "markdownlint-cli2 --fix", "lint:md-full": "pnpm run lint:md && eslint \"**/*.md\"", "lint:md-full-fix": "pnpm run lint:md-fix && eslint \"**/*.md\" --fix", "lint:packages": "pnpm dedupe --check", "lint:packages-fix": "pnpm dedupe", - "lint:spelling": "cspell \"**\" \".github/**/*\"", + "lint:spelling": "cspell lint --no-progress --show-suggestions --show-context --dot \"**\" \".github/**/*\"", "lint:yaml": "eslint \"**/*.y?(a)ml\"", "lint:yaml-fix": "eslint \"**/*.y?(a)ml\" --fix", "prepare": "husky", @@ -68,79 +79,82 @@ "typecheck": "tsc -p tsconfig.build.json --noEmit", "verify": "pnpm run lint && pnpm run typecheck && pnpm run test:js-run" }, - "overrides": { + "resolutions": { + "dts-bundle-generator": "9.2.1", "eslint-plugin-functional": "link:." }, "dependencies": { - "@typescript-eslint/utils": "^8.0.0", - "deepmerge-ts": "^7.1.0", + "@typescript-eslint/utils": "^8.10.0", + "deepmerge-ts": "^7.1.3", "escape-string-regexp": "^5.0.0", "is-immutable-type": "^5.0.0", "ts-api-utils": "^1.3.0", "ts-declaration-location": "^1.0.4" }, "devDependencies": { - "@babel/eslint-parser": "7.25.1", - "@cspell/dict-cryptocurrencies": "5.0.0", - "@eslint/compat": "1.1.1", - "@rebeccastevens/eslint-config": "3.0.6", + "@babel/eslint-parser": "7.25.8", + "@cspell/dict-cryptocurrencies": "5.0.3", + "@eslint/compat": "1.2.1", + "@rebeccastevens/eslint-config": "3.3.2", + "@rollup/plugin-replace": "6.0.1", + "@rollup/plugin-typescript": "12.1.1", "@semantic-release/changelog": "6.0.3", "@semantic-release/commit-analyzer": "13.0.0", "@semantic-release/git": "10.0.1", "@semantic-release/github": "11.0.0", "@semantic-release/npm": "12.0.1", "@semantic-release/release-notes-generator": "14.0.1", - "@stylistic/eslint-plugin": "2.8.0", + "@stylistic/eslint-plugin": "2.9.0", "@types/dedent": "0.7.2", "@types/node": "18.19.43", - "@typescript-eslint/eslint-plugin": "8.8.0", - "@typescript-eslint/parser": "8.8.0", - "@vitest/coverage-v8": "2.1.1", - "cspell": "8.14.4", - "deassert": "1.0.2", + "@typescript-eslint/eslint-plugin": "8.10.0", + "@typescript-eslint/parser": "8.10.0", + "@vitest/coverage-v8": "2.1.3", + "@vitest/eslint-plugin": "1.1.7", + "cspell": "8.15.4", "dedent": "1.5.3", - "eslint": "9.11.1", + "eslint": "9.13.0", "eslint-config-prettier": "9.1.0", "eslint-doc-generator": "1.7.1", - "eslint-flat-config-utils": "0.3.0", - "eslint-import-resolver-typescript": "3.6.1", + "eslint-flat-config-utils": "0.4.0", + "eslint-import-resolver-typescript": "3.6.3", "eslint-merge-processors": "0.1.0", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-eslint-plugin": "6.2.0", "eslint-plugin-format": "0.1.2", - "eslint-plugin-functional": "link:.", - "eslint-plugin-import-x": "4.1.1", - "eslint-plugin-jsdoc": "50.2.2", + "eslint-plugin-functional": "7.0.3", + "eslint-plugin-import-x": "4.3.1", + "eslint-plugin-jsdoc": "50.4.3", "eslint-plugin-jsonc": "2.16.0", "eslint-plugin-markdown": "5.1.0", - "eslint-plugin-n": "17.10.2", - "eslint-plugin-no-only-tests": "3.1.0", + "eslint-plugin-n": "17.11.1", + "eslint-plugin-no-only-tests": "3.3.0", "eslint-plugin-optimize-regex": "1.2.1", + "eslint-plugin-prettier": "5.2.1", "eslint-plugin-promise": "7.1.0", "eslint-plugin-regexp": "2.6.0", - "eslint-plugin-sonarjs": "2.0.2", - "eslint-plugin-unicorn": "55.0.0", - "eslint-plugin-vitest": "0.5.4", + "eslint-plugin-sonarjs": "2.0.4", + "eslint-plugin-unicorn": "56.0.0", "eslint-plugin-yml": "1.14.0", - "eslint-vitest-rule-tester": "0.3.3", + "eslint-vitest-rule-tester": "0.6.1", "fast-glob": "3.3.2", - "husky": "9.1.4", + "husky": "9.1.6", "jsonc-eslint-parser": "2.4.0", - "knip": "5.27.1", - "lint-staged": "15.2.8", - "markdownlint-cli2": "0.13.0", + "knip": "5.33.3", + "lint-staged": "15.2.10", + "markdownlint-cli2": "0.14.0", "prettier": "3.3.3", - "prettier-plugin-packagejson": "2.5.1", "rimraf": "6.0.1", - "rollup": "4.20.0", - "rollup-plugin-ts": "3.4.5", - "semantic-release": "24.1.2", + "rollup": "4.24.0", + "rollup-plugin-deassert": "1.3.0", + "rollup-plugin-dts-bundle-generator": "1.4.0", + "semantic-release": "24.1.3", "semantic-release-replace-plugin": "1.2.7", "tsc-files": "1.1.4", - "tsx": "4.16.5", - "typescript": "5.5.4", + "tsx": "4.19.1", + "typescript": "5.6.3", "vite-tsconfig-paths": "5.0.1", - "vitest": "2.1.1", + "vitest": "2.1.3", "yaml-eslint-parser": "1.2.3" }, "peerDependencies": { @@ -152,13 +166,8 @@ "optional": true } }, - "packageManager": "pnpm@9.7.0", + "packageManager": "pnpm@9.12.2", "engines": { "node": ">=v18.18.0" - }, - "pnpm": { - "patchedDependencies": { - "eslint-vitest-rule-tester@0.3.3": "patches/eslint-vitest-rule-tester@0.3.3.patch" - } } } diff --git a/patches/eslint-vitest-rule-tester@0.3.3.patch b/patches/eslint-vitest-rule-tester@0.3.3.patch deleted file mode 100644 index 9ceece7f5..000000000 --- a/patches/eslint-vitest-rule-tester@0.3.3.patch +++ /dev/null @@ -1,209 +0,0 @@ -diff --git a/dist/index.d.mts b/dist/index.d.mts -index f982c4d7c06d00d8f1e9f7515951582be0cc1f59..7245940c64de19f60428239bcccca0658bb64a7b 100644 ---- a/dist/index.d.mts -+++ b/dist/index.d.mts -@@ -93,6 +93,12 @@ interface RuleTesterBehaviorOptions { - */ - verifyFixChanges?: boolean; - } -+interface DefaultFilenames { -+ js: string; -+ jsx: string; -+ ts: string; -+ tsx: string; -+} - interface RuleTesterInitOptions extends CompatConfigOptions, RuleTesterBehaviorOptions { - /** - * The rule to test -@@ -106,6 +112,11 @@ interface RuleTesterInitOptions extends CompatConfigOptions, RuleTesterBehaviorO - * Additional flat configs to be merged with the rule config - */ - configs?: Linter.FlatConfig | Linter.FlatConfig[]; -+ /** -+ * The default filenames to use for type-aware tests. -+ * @default { js: 'file.js', jsx: 'react.jsx', ts: 'file.ts', tsx: 'react.tsx' } -+ */ -+ defaultFilenames?: Partial; - } - interface TestCasesOptions { - valid?: (ValidTestCase | string)[]; -@@ -116,8 +127,10 @@ interface TestCasesOptions { - onResult?: (_case: NormalizedTestCase, result: Linter.FixReport) => void | Promise; - } - --declare function normalizeTestCase(c: TestCase, type?: 'valid' | 'invalid'): NormalizedTestCase; -+declare function normalizeTestCase(c: TestCase, languageOptions: Linter.FlatConfig['languageOptions'], defaultFilenames: DefaultFilenames, type?: 'valid' | 'invalid'): NormalizedTestCase; - declare function normalizeCaseError(error: TestCaseError | string, rule?: RuleModule): Partial; -+declare function isUsingTypeScriptParser(languageOptions: Linter.FlatConfig['languageOptions']): boolean; -+declare function isUsingTypeScriptTypings(languageOptions: Linter.FlatConfig['languageOptions']): any; - - declare function createRuleTester(options: RuleTesterInitOptions): RuleTester; - -@@ -132,4 +145,4 @@ declare function runClassic(ruleName: string, rule: RuleModule, cases: TestCases - - declare function pickFlatConfigFromOptions(options: CompatConfigOptions): Linter.FlatConfig | undefined; - --export { type CompatConfigOptions, type InvalidTestCase, type InvalidTestCaseBase, type NormalizedTestCase, type RuleModule, type RuleTester, type RuleTesterBehaviorOptions, type RuleTesterInitOptions, type TestCase, type TestCaseError, type TestCasesOptions, type TestExecutionResult, type ValidTestCase, type ValidTestCaseBase, createRuleTester, normalizeCaseError, normalizeTestCase, pickFlatConfigFromOptions, run, runClassic }; -+export { type CompatConfigOptions, type DefaultFilenames, type InvalidTestCase, type InvalidTestCaseBase, type NormalizedTestCase, type RuleModule, type RuleTester, type RuleTesterBehaviorOptions, type RuleTesterInitOptions, type TestCase, type TestCaseError, type TestCasesOptions, type TestExecutionResult, type ValidTestCase, type ValidTestCaseBase, createRuleTester, isUsingTypeScriptParser, isUsingTypeScriptTypings, normalizeCaseError, normalizeTestCase, pickFlatConfigFromOptions, run, runClassic }; -diff --git a/dist/index.d.ts b/dist/index.d.ts -index f982c4d7c06d00d8f1e9f7515951582be0cc1f59..7245940c64de19f60428239bcccca0658bb64a7b 100644 ---- a/dist/index.d.ts -+++ b/dist/index.d.ts -@@ -93,6 +93,12 @@ interface RuleTesterBehaviorOptions { - */ - verifyFixChanges?: boolean; - } -+interface DefaultFilenames { -+ js: string; -+ jsx: string; -+ ts: string; -+ tsx: string; -+} - interface RuleTesterInitOptions extends CompatConfigOptions, RuleTesterBehaviorOptions { - /** - * The rule to test -@@ -106,6 +112,11 @@ interface RuleTesterInitOptions extends CompatConfigOptions, RuleTesterBehaviorO - * Additional flat configs to be merged with the rule config - */ - configs?: Linter.FlatConfig | Linter.FlatConfig[]; -+ /** -+ * The default filenames to use for type-aware tests. -+ * @default { js: 'file.js', jsx: 'react.jsx', ts: 'file.ts', tsx: 'react.tsx' } -+ */ -+ defaultFilenames?: Partial; - } - interface TestCasesOptions { - valid?: (ValidTestCase | string)[]; -@@ -116,8 +127,10 @@ interface TestCasesOptions { - onResult?: (_case: NormalizedTestCase, result: Linter.FixReport) => void | Promise; - } - --declare function normalizeTestCase(c: TestCase, type?: 'valid' | 'invalid'): NormalizedTestCase; -+declare function normalizeTestCase(c: TestCase, languageOptions: Linter.FlatConfig['languageOptions'], defaultFilenames: DefaultFilenames, type?: 'valid' | 'invalid'): NormalizedTestCase; - declare function normalizeCaseError(error: TestCaseError | string, rule?: RuleModule): Partial; -+declare function isUsingTypeScriptParser(languageOptions: Linter.FlatConfig['languageOptions']): boolean; -+declare function isUsingTypeScriptTypings(languageOptions: Linter.FlatConfig['languageOptions']): any; - - declare function createRuleTester(options: RuleTesterInitOptions): RuleTester; - -@@ -132,4 +145,4 @@ declare function runClassic(ruleName: string, rule: RuleModule, cases: TestCases - - declare function pickFlatConfigFromOptions(options: CompatConfigOptions): Linter.FlatConfig | undefined; - --export { type CompatConfigOptions, type InvalidTestCase, type InvalidTestCaseBase, type NormalizedTestCase, type RuleModule, type RuleTester, type RuleTesterBehaviorOptions, type RuleTesterInitOptions, type TestCase, type TestCaseError, type TestCasesOptions, type TestExecutionResult, type ValidTestCase, type ValidTestCaseBase, createRuleTester, normalizeCaseError, normalizeTestCase, pickFlatConfigFromOptions, run, runClassic }; -+export { type CompatConfigOptions, type DefaultFilenames, type InvalidTestCase, type InvalidTestCaseBase, type NormalizedTestCase, type RuleModule, type RuleTester, type RuleTesterBehaviorOptions, type RuleTesterInitOptions, type TestCase, type TestCaseError, type TestCasesOptions, type TestExecutionResult, type ValidTestCase, type ValidTestCaseBase, createRuleTester, isUsingTypeScriptParser, isUsingTypeScriptTypings, normalizeCaseError, normalizeTestCase, pickFlatConfigFromOptions, run, runClassic }; -diff --git a/dist/index.mjs b/dist/index.mjs -index b10c991352ad54b17a05f8e41fe6d4b5e1f77ea1..b426a2540622b4bfd31d70598f971a280fe53ec5 100644 ---- a/dist/index.mjs -+++ b/dist/index.mjs -@@ -1,4 +1,6 @@ --import { objectPick, toArray } from '@antfu/utils'; -+import path from 'node:path'; -+import process from 'node:process'; -+import { objectPick, deepMerge, toArray } from '@antfu/utils'; - export { unindent as $, unindent } from '@antfu/utils'; - import { Linter } from 'eslint'; - import { expect, describe, it } from 'vitest'; -@@ -17,10 +19,21 @@ function interpolate(text, data) { - ); - } - --function normalizeTestCase(c, type) { -+function normalizeTestCase(c, languageOptions, defaultFilenames, type) { - const obj = typeof c === "string" ? { code: c } : { ...c }; - const normalized = obj; - normalized.type || (normalized.type = type || ("errors" in obj || "output" in obj ? "invalid" : "valid")); -+ if (isUsingTypeScriptParser(languageOptions)) { -+ normalized.filename || (normalized.filename = getDefaultTypeScriptFilename(languageOptions, defaultFilenames)); -+ normalized.parserOptions = { -+ ecmaVersion: "latest", -+ sourceType: "module", -+ disallowAutomaticSingleRunInference: true, -+ ...normalized.parserOptions -+ }; -+ } else { -+ normalized.filename || (normalized.filename = getDefaultJavaScriptFilename(languageOptions, defaultFilenames)); -+ } - return normalized; - } - function normalizeCaseError(error, rule) { -@@ -46,6 +59,20 @@ function normalizeCaseError(error, rule) { - } - return clone; - } -+function getDefaultJavaScriptFilename(languageOptions, defaultFilenames) { -+ return languageOptions?.parserOptions?.ecmaFeatures?.jsx ? defaultFilenames.jsx : defaultFilenames.js; -+} -+function getDefaultTypeScriptFilename(languageOptions, defaultFilenames) { -+ const rootPath = (isUsingTypeScriptTypings(languageOptions) ? languageOptions?.parserOptions?.tsconfigRootDir : void 0) ?? process.cwd(); -+ const filename = languageOptions?.parserOptions?.ecmaFeatures?.jsx ? defaultFilenames.tsx : defaultFilenames.ts; -+ return path.join(rootPath, filename); -+} -+function isUsingTypeScriptParser(languageOptions) { -+ return languageOptions?.parser?.meta?.name === "typescript-eslint/parser"; -+} -+function isUsingTypeScriptTypings(languageOptions) { -+ return languageOptions?.parserOptions?.program || languageOptions?.parserOptions?.project || languageOptions?.parserOptions?.projectService; -+} - - const BOM = "\uFEFF"; - function compareMessagesByFixRange(a, b) { -@@ -139,15 +166,32 @@ function pickFlatConfigFromOptions(options) { - } - - function createRuleTester(options) { -- const linter = new Linter({ configType: "flat" }); -+ const languageOptions = deepMerge( -+ options.languageOptions ?? { -+ parser: options.parser, -+ parserOptions: options.parserOptions -+ }, -+ ...toArray(options.configs).map((c) => c.languageOptions).filter((c) => c !== void 0) -+ ); -+ const linter = new Linter({ -+ configType: "flat", -+ cwd: isUsingTypeScriptParser(options) ? languageOptions?.parserOptions?.tsconfigRootDir : void 0 -+ }); - const defaultConfigs = toArray(options.configs); - { - const inlineConfig = pickFlatConfigFromOptions(options); - if (inlineConfig) - defaultConfigs.unshift(inlineConfig); - } -+ const defaultFilenames = { -+ js: "file.js", -+ ts: "file.ts", -+ jsx: "react.jsx", -+ tsx: "react.tsx", -+ ...options.defaultFilenames -+ }; - function each(c) { -- const testcase = normalizeTestCase(c); -+ const testcase = normalizeTestCase(c, languageOptions, defaultFilenames); - const { - recursive = 10, - verifyAfterFix = true, -@@ -260,7 +304,7 @@ ${result.output} - if (cases.valid?.length) { - describe("valid", () => { - for (const c of cases.valid) { -- const _case = normalizeTestCase(c, "valid"); -+ const _case = normalizeTestCase(c, languageOptions, defaultFilenames, "valid"); - let run2 = it; - if (_case.only) - run2 = it.only; -@@ -276,7 +320,7 @@ ${result.output} - if (cases.invalid?.length) { - describe("invalid", () => { - for (const c of cases.invalid) { -- const _case = normalizeTestCase(c, "invalid"); -+ const _case = normalizeTestCase(c, languageOptions, defaultFilenames, "invalid"); - let run2 = it; - if (_case.only) - run2 = it.only; -@@ -312,4 +356,4 @@ function runClassic(ruleName, rule, cases, options) { - return tester.run(cases); - } - --export { createRuleTester, normalizeCaseError, normalizeTestCase, pickFlatConfigFromOptions, run, runClassic }; -+export { createRuleTester, isUsingTypeScriptParser, isUsingTypeScriptTypings, normalizeCaseError, normalizeTestCase, pickFlatConfigFromOptions, run, runClassic }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db552e83c..ab96fbea9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,67 +4,72 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -patchedDependencies: - eslint-vitest-rule-tester@0.3.3: - hash: wjur6dtc3pi5ag5ibkjvm56goy - path: patches/eslint-vitest-rule-tester@0.3.3.patch +overrides: + dts-bundle-generator: 9.2.1 + eslint-plugin-functional: link:. importers: .: dependencies: '@typescript-eslint/utils': - specifier: ^8.0.0 - version: 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + specifier: ^8.10.0 + version: 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) deepmerge-ts: - specifier: ^7.1.0 - version: 7.1.0 + specifier: ^7.1.3 + version: 7.1.3 escape-string-regexp: specifier: ^5.0.0 version: 5.0.0 is-immutable-type: specifier: ^5.0.0 - version: 5.0.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + version: 5.0.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) ts-api-utils: specifier: ^1.3.0 - version: 1.3.0(typescript@5.5.4) + version: 1.3.0(typescript@5.6.3) ts-declaration-location: specifier: ^1.0.4 - version: 1.0.4(typescript@5.5.4) + version: 1.0.4(typescript@5.6.3) devDependencies: '@babel/eslint-parser': - specifier: 7.25.1 - version: 7.25.1(@babel/core@7.24.3)(eslint@9.11.1(jiti@1.21.6)) + specifier: 7.25.8 + version: 7.25.8(@babel/core@7.25.2)(eslint@9.13.0(jiti@2.3.3)) '@cspell/dict-cryptocurrencies': - specifier: 5.0.0 - version: 5.0.0 + specifier: 5.0.3 + version: 5.0.3 '@eslint/compat': - specifier: 1.1.1 - version: 1.1.1 + specifier: 1.2.1 + version: 1.2.1(eslint@9.13.0(jiti@2.3.3)) '@rebeccastevens/eslint-config': - specifier: 3.0.6 - version: 3.0.6(dxw2hww66xx3mqp5zfphxtwxla) + specifier: 3.3.2 + version: 3.3.2(i5co6to775frwzdx4xn5wbyc4i) + '@rollup/plugin-replace': + specifier: 6.0.1 + version: 6.0.1(rollup@4.24.0) + '@rollup/plugin-typescript': + specifier: 12.1.1 + version: 12.1.1(rollup@4.24.0)(tslib@2.6.3)(typescript@5.6.3) '@semantic-release/changelog': specifier: 6.0.3 - version: 6.0.3(semantic-release@24.1.2(typescript@5.5.4)) + version: 6.0.3(semantic-release@24.1.3(typescript@5.6.3)) '@semantic-release/commit-analyzer': specifier: 13.0.0 - version: 13.0.0(semantic-release@24.1.2(typescript@5.5.4)) + version: 13.0.0(semantic-release@24.1.3(typescript@5.6.3)) '@semantic-release/git': specifier: 10.0.1 - version: 10.0.1(semantic-release@24.1.2(typescript@5.5.4)) + version: 10.0.1(semantic-release@24.1.3(typescript@5.6.3)) '@semantic-release/github': specifier: 11.0.0 - version: 11.0.0(semantic-release@24.1.2(typescript@5.5.4)) + version: 11.0.0(semantic-release@24.1.3(typescript@5.6.3)) '@semantic-release/npm': specifier: 12.0.1 - version: 12.0.1(semantic-release@24.1.2(typescript@5.5.4)) + version: 12.0.1(semantic-release@24.1.3(typescript@5.6.3)) '@semantic-release/release-notes-generator': specifier: 14.0.1 - version: 14.0.1(semantic-release@24.1.2(typescript@5.5.4)) + version: 14.0.1(semantic-release@24.1.3(typescript@5.6.3)) '@stylistic/eslint-plugin': - specifier: 2.8.0 - version: 2.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + specifier: 2.9.0 + version: 2.9.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) '@types/dedent': specifier: 0.7.2 version: 0.7.2 @@ -72,149 +77,149 @@ importers: specifier: 18.19.43 version: 18.19.43 '@typescript-eslint/eslint-plugin': - specifier: 8.8.0 - version: 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + specifier: 8.10.0 + version: 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) '@typescript-eslint/parser': - specifier: 8.8.0 - version: 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + specifier: 8.10.0 + version: 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) '@vitest/coverage-v8': - specifier: 2.1.1 - version: 2.1.1(vitest@2.1.1(@types/node@18.19.43)) + specifier: 2.1.3 + version: 2.1.3(vitest@2.1.3(@types/node@18.19.43)) + '@vitest/eslint-plugin': + specifier: 1.1.7 + version: 1.1.7(@typescript-eslint/utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)(vitest@2.1.3(@types/node@18.19.43)) cspell: - specifier: 8.14.4 - version: 8.14.4 - deassert: - specifier: 1.0.2 - version: 1.0.2(rollup@4.20.0) + specifier: 8.15.4 + version: 8.15.4 dedent: specifier: 1.5.3 version: 1.5.3 eslint: - specifier: 9.11.1 - version: 9.11.1(jiti@1.21.6) + specifier: 9.13.0 + version: 9.13.0(jiti@2.3.3) eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@9.11.1(jiti@1.21.6)) + version: 9.1.0(eslint@9.13.0(jiti@2.3.3)) eslint-doc-generator: specifier: 1.7.1 - version: 1.7.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + version: 1.7.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) eslint-flat-config-utils: - specifier: 0.3.0 - version: 0.3.0 + specifier: 0.4.0 + version: 0.4.0 eslint-import-resolver-typescript: - specifier: 3.6.1 - version: 3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)) + specifier: 3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)) eslint-merge-processors: specifier: 0.1.0 - version: 0.1.0(eslint@9.11.1(jiti@1.21.6)) + version: 0.1.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-eslint-comments: specifier: 3.2.0 - version: 3.2.0(eslint@9.11.1(jiti@1.21.6)) + version: 3.2.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-eslint-plugin: specifier: 6.2.0 - version: 6.2.0(eslint@9.11.1(jiti@1.21.6)) + version: 6.2.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-format: specifier: 0.1.2 - version: 0.1.2(eslint@9.11.1(jiti@1.21.6)) + version: 0.1.2(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-functional: - specifier: link:. + specifier: 'link:' version: 'link:' eslint-plugin-import-x: - specifier: 4.1.1 - version: 4.1.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + specifier: 4.3.1 + version: 4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) eslint-plugin-jsdoc: - specifier: 50.2.2 - version: 50.2.2(eslint@9.11.1(jiti@1.21.6)) + specifier: 50.4.3 + version: 50.4.3(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-jsonc: specifier: 2.16.0 - version: 2.16.0(eslint@9.11.1(jiti@1.21.6)) + version: 2.16.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-markdown: specifier: 5.1.0 - version: 5.1.0(eslint@9.11.1(jiti@1.21.6)) + version: 5.1.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-n: - specifier: 17.10.2 - version: 17.10.2(eslint@9.11.1(jiti@1.21.6)) + specifier: 17.11.1 + version: 17.11.1(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-no-only-tests: - specifier: 3.1.0 - version: 3.1.0 + specifier: 3.3.0 + version: 3.3.0 eslint-plugin-optimize-regex: specifier: 1.2.1 version: 1.2.1 + eslint-plugin-prettier: + specifier: 5.2.1 + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3))(prettier@3.3.3) eslint-plugin-promise: specifier: 7.1.0 - version: 7.1.0(eslint@9.11.1(jiti@1.21.6)) + version: 7.1.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-regexp: specifier: 2.6.0 - version: 2.6.0(eslint@9.11.1(jiti@1.21.6)) + version: 2.6.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-sonarjs: - specifier: 2.0.2 - version: 2.0.2(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) + specifier: 2.0.4 + version: 2.0.4(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-unicorn: - specifier: 55.0.0 - version: 55.0.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-vitest: - specifier: 0.5.4 - version: 0.5.4(@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)(vitest@2.1.1(@types/node@18.19.43)) + specifier: 56.0.0 + version: 56.0.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-yml: specifier: 1.14.0 - version: 1.14.0(eslint@9.11.1(jiti@1.21.6)) + version: 1.14.0(eslint@9.13.0(jiti@2.3.3)) eslint-vitest-rule-tester: - specifier: 0.3.3 - version: 0.3.3(patch_hash=wjur6dtc3pi5ag5ibkjvm56goy)(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)(vitest@2.1.1(@types/node@18.19.43)) + specifier: 0.6.1 + version: 0.6.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)(vitest@2.1.3(@types/node@18.19.43)) fast-glob: specifier: 3.3.2 version: 3.3.2 husky: - specifier: 9.1.4 - version: 9.1.4 + specifier: 9.1.6 + version: 9.1.6 jsonc-eslint-parser: specifier: 2.4.0 version: 2.4.0 knip: - specifier: 5.27.1 - version: 5.27.1(@types/node@18.19.43)(typescript@5.5.4) + specifier: 5.33.3 + version: 5.33.3(@types/node@18.19.43)(typescript@5.6.3) lint-staged: - specifier: 15.2.8 - version: 15.2.8 + specifier: 15.2.10 + version: 15.2.10 markdownlint-cli2: - specifier: 0.13.0 - version: 0.13.0 + specifier: 0.14.0 + version: 0.14.0 prettier: specifier: 3.3.3 version: 3.3.3 - prettier-plugin-packagejson: - specifier: 2.5.1 - version: 2.5.1(prettier@3.3.3) rimraf: specifier: 6.0.1 version: 6.0.1 rollup: - specifier: 4.20.0 - version: 4.20.0 - rollup-plugin-ts: - specifier: 3.4.5 - version: 3.4.5(@babel/core@7.24.3)(@babel/preset-env@7.24.3(@babel/core@7.24.3))(@babel/runtime@7.25.6)(rollup@4.20.0)(typescript@5.5.4) + specifier: 4.24.0 + version: 4.24.0 + rollup-plugin-deassert: + specifier: 1.3.0 + version: 1.3.0(acorn@8.12.1)(rollup@4.24.0) + rollup-plugin-dts-bundle-generator: + specifier: 1.4.0 + version: 1.4.0 semantic-release: - specifier: 24.1.2 - version: 24.1.2(typescript@5.5.4) + specifier: 24.1.3 + version: 24.1.3(typescript@5.6.3) semantic-release-replace-plugin: specifier: 1.2.7 - version: 1.2.7(semantic-release@24.1.2(typescript@5.5.4)) + version: 1.2.7(semantic-release@24.1.3(typescript@5.6.3)) tsc-files: specifier: 1.1.4 - version: 1.1.4(typescript@5.5.4) + version: 1.1.4(typescript@5.6.3) tsx: - specifier: 4.16.5 - version: 4.16.5 + specifier: 4.19.1 + version: 4.19.1 typescript: - specifier: 5.5.4 - version: 5.5.4 + specifier: 5.6.3 + version: 5.6.3 vite-tsconfig-paths: specifier: 5.0.1 - version: 5.0.1(typescript@5.5.4)(vite@5.3.5(@types/node@18.19.43)) + version: 5.0.1(typescript@5.6.3)(vite@5.3.5(@types/node@18.19.43)) vitest: - specifier: 2.1.1 - version: 2.1.1(@types/node@18.19.43) + specifier: 2.1.3 + version: 2.1.3(@types/node@18.19.43) yaml-eslint-parser: specifier: 1.2.3 version: 1.2.3 @@ -225,44 +230,44 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/install-pkg@0.3.3': - resolution: {integrity: sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==} + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + '@babel/code-frame@7.25.7': + resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/compat-data@7.25.8': + resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.3': - resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/eslint-parser@7.24.1': - resolution: {integrity: sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==} + '@babel/eslint-parser@7.25.1': + resolution: {integrity: sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/eslint-parser@7.25.1': - resolution: {integrity: sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==} + '@babel/eslint-parser@7.25.8': + resolution: {integrity: sha512-Po3VLMN7fJtv0nsOjBDSbO1J71UhzShE9MuOSkWEV9IZQXzhZklYtzKZ8ZD/Ij3a0JBv1AG3Ny2L3jvAHQVOGg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/generator@7.25.6': - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + '@babel/generator@7.25.7': + resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + '@babel/helper-annotate-as-pure@7.25.7': + resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': @@ -279,8 +284,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.25.2': - resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + '@babel/helper-create-regexp-features-plugin@7.25.7': + resolution: {integrity: sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -308,8 +313,8 @@ packages: resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + '@babel/helper-plugin-utils@7.25.7': + resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.25.0': @@ -332,12 +337,12 @@ packages: resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.24.8': @@ -352,15 +357,27 @@ packages: resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + '@babel/highlight@7.25.7': + resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.6': - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7': + resolution: {integrity: sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7': + resolution: {integrity: sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} engines: {node: '>=6.9.0'} @@ -379,8 +396,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-decorators@7.24.1': - resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} + '@babel/plugin-proposal-decorators@7.24.7': + resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -577,6 +594,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7': + resolution: {integrity: sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-dynamic-import@7.24.7': resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} @@ -823,14 +846,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.3': - resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} + '@babel/preset-env@7.25.4': + resolution: {integrity: sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-flow@7.24.1': - resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} + '@babel/preset-flow@7.24.7': + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -840,29 +863,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-react@7.24.1': - resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} + '@babel/preset-react@7.24.7': + resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.25.6': resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + '@babel/template@7.25.7': + resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.6': - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + '@babel/traverse@7.25.7': + resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.6': - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + '@babel/types@7.25.8': + resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -880,206 +900,206 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@cspell/cspell-bundled-dicts@8.14.4': - resolution: {integrity: sha512-JHZOpCJzN6fPBapBOvoeMxZbr0ZA11ZAkwcqM4w0lKoacbi6TwK8GIYf66hHvwLmMeav75TNXWE6aPTvBLMMqA==} + '@cspell/cspell-bundled-dicts@8.15.4': + resolution: {integrity: sha512-t5b2JwGeUmzmjl319mCuaeKGxTvmzLLRmrpdHr+ZZGRO4nf7L48Lbe9A6uwNUvsZe0cXohiNXsrrsuzRVXswVA==} engines: {node: '>=18'} - '@cspell/cspell-json-reporter@8.14.4': - resolution: {integrity: sha512-gJ6tQbGCNLyHS2iIimMg77as5MMAFv3sxU7W6tjLlZp8htiNZS7fS976g24WbT/hscsTT9Dd0sNHkpo8K3nvVw==} + '@cspell/cspell-json-reporter@8.15.4': + resolution: {integrity: sha512-solraYhZG4l++NeVCOtpc8DMvwHc46TmJt8DQbgvKtk6wOjTEcFrwKfA6Ei9YKbvyebJlpWMenO3goOll0loYg==} engines: {node: '>=18'} - '@cspell/cspell-pipe@8.14.4': - resolution: {integrity: sha512-CLLdouqfrQ4rqdQdPu0Oo+HHCU/oLYoEsK1nNPb28cZTFxnn0cuSPKB6AMPBJmMwdfJ6fMD0BCKNbEe1UNLHcw==} + '@cspell/cspell-pipe@8.15.4': + resolution: {integrity: sha512-WfCmZVFC6mX6vYlf02hWwelcSBTbDQgc5YqY+1miuMk+OHSUAHSACjZId6/a4IAID94xScvFfj7jgrdejUVvIQ==} engines: {node: '>=18'} - '@cspell/cspell-resolver@8.14.4': - resolution: {integrity: sha512-s3uZyymJ04yn8+zlTp7Pt1WRSlAel6XVo+iZRxls3LSvIP819KK64DoyjCD2Uon0Vg9P/K7aAPt8GcxDcnJtgA==} + '@cspell/cspell-resolver@8.15.4': + resolution: {integrity: sha512-Zr428o+uUTqywrdKyjluJVnDPVAJEqZ1chQLKIrHggUah1cgs5aQ7rZ+0Rv5euYMlC2idZnP7IL6TDaIib80oA==} engines: {node: '>=18'} - '@cspell/cspell-service-bus@8.14.4': - resolution: {integrity: sha512-i3UG+ep63akNsDXZrtGgICNF3MLBHtvKe/VOIH6+L+NYaAaVHqqQvOY9MdUwt1HXh8ElzfwfoRp36wc5aAvt6g==} + '@cspell/cspell-service-bus@8.15.4': + resolution: {integrity: sha512-pXYofnV/V9Y3LZdfFGbmhdxPX/ABjiD3wFjGHt5YhIU9hjVVuvjFlgY7pH2AvRjs4F8xKXv1ReWl44BJOL9gLA==} engines: {node: '>=18'} - '@cspell/cspell-types@8.14.4': - resolution: {integrity: sha512-VXwikqdHgjOVperVVCn2DOe8W3rPIswwZtMHfRYnagpzZo/TOntIjkXPJSfTtl/cFyx5DnCBsDH8ytKGlMeHkw==} + '@cspell/cspell-types@8.15.4': + resolution: {integrity: sha512-1hDtgYDQVW11zgtrr12EmGW45Deoi7IjZOhzPFLb+3WkhZ46ggWdbrRalWwBolQPDDo6+B2Q6WXz5hdND+Tpwg==} engines: {node: '>=18'} - '@cspell/dict-ada@4.0.2': - resolution: {integrity: sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==} + '@cspell/dict-ada@4.0.5': + resolution: {integrity: sha512-6/RtZ/a+lhFVmrx/B7bfP7rzC4yjEYe8o74EybXcvu4Oue6J4Ey2WSYj96iuodloj1LWrkNCQyX5h4Pmcj0Iag==} - '@cspell/dict-aws@4.0.4': - resolution: {integrity: sha512-6AWI/Kkf+RcX/J81VX8+GKLeTgHWEr/OMhGk3dHQzWK66RaqDJCGDqi7494ghZKcBB7dGa3U5jcKw2FZHL/u3w==} + '@cspell/dict-aws@4.0.7': + resolution: {integrity: sha512-PoaPpa2NXtSkhGIMIKhsJUXB6UbtTt6Ao3x9JdU9kn7fRZkwD4RjHDGqulucIOz7KeEX/dNRafap6oK9xHe4RA==} - '@cspell/dict-bash@4.1.4': - resolution: {integrity: sha512-W/AHoQcJYn3Vn/tUiXX2+6D/bhfzdDshwcbQWv9TdiNlXP9P6UJjDKWbxyA5ogJCsR2D0X9Kx11oV8E58siGKQ==} + '@cspell/dict-bash@4.1.8': + resolution: {integrity: sha512-I2CM2pTNthQwW069lKcrVxchJGMVQBzru2ygsHCwgidXRnJL/NTjAPOFTxN58Jc1bf7THWghfEDyKX/oyfc0yg==} - '@cspell/dict-companies@3.1.4': - resolution: {integrity: sha512-y9e0amzEK36EiiKx3VAA+SHQJPpf2Qv5cCt5eTUSggpTkiFkCh6gRKQ97rVlrKh5GJrqinDwYIJtTsxuh2vy2Q==} + '@cspell/dict-companies@3.1.7': + resolution: {integrity: sha512-ncVs/efuAkP1/tLDhWbXukBjgZ5xOUfe03neHMWsE8zvXXc5+Lw6TX5jaJXZLOoES/f4j4AhRE20jsPCF5pm+A==} - '@cspell/dict-cpp@5.1.16': - resolution: {integrity: sha512-32fU5RkuOM55IRcxjByiSoKbjr+C4danDfYjHaQNRWdvjzJzci3fLDGA2wTXiclkgDODxGiV8LCTUwCz+3TNWA==} + '@cspell/dict-cpp@5.1.22': + resolution: {integrity: sha512-g1/8P5/Q+xnIc8Js4UtBg3XOhcFrFlFbG3UWVtyEx49YTf0r9eyDtDt1qMMDBZT91pyCwLcAEbwS+4i5PIfNZw==} - '@cspell/dict-cryptocurrencies@5.0.0': - resolution: {integrity: sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==} + '@cspell/dict-cryptocurrencies@5.0.3': + resolution: {integrity: sha512-bl5q+Mk+T3xOZ12+FG37dB30GDxStza49Rmoax95n37MTLksk9wBo1ICOlPJ6PnDUSyeuv4SIVKgRKMKkJJglA==} - '@cspell/dict-csharp@4.0.2': - resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} + '@cspell/dict-csharp@4.0.5': + resolution: {integrity: sha512-c/sFnNgtRwRJxtC3JHKkyOm+U3/sUrltFeNwml9VsxKBHVmvlg4tk4ar58PdpW9/zTlGUkWi2i85//DN1EsUCA==} - '@cspell/dict-css@4.0.13': - resolution: {integrity: sha512-WfOQkqlAJTo8eIQeztaH0N0P+iF5hsJVKFuhy4jmARPISy8Efcv8QXk2/IVbmjJH0/ZV7dKRdnY5JFVXuVz37g==} + '@cspell/dict-css@4.0.16': + resolution: {integrity: sha512-70qu7L9z/JR6QLyJPk38fNTKitlIHnfunx0wjpWQUQ8/jGADIhMCrz6hInBjqPNdtGpYm8d1dNFyF8taEkOgrQ==} - '@cspell/dict-dart@2.2.1': - resolution: {integrity: sha512-yriKm7QkoPx3JPSSOcw6iX9gOb2N50bOo/wqWviqPYbhpMRh9Xiv6dkUy3+ot+21GuShZazO8X6U5+Vw67XEwg==} + '@cspell/dict-dart@2.2.4': + resolution: {integrity: sha512-of/cVuUIZZK/+iqefGln8G3bVpfyN6ZtH+LyLkHMoR5tEj+2vtilGNk9ngwyR8L4lEqbKuzSkOxgfVjsXf5PsQ==} - '@cspell/dict-data-science@2.0.1': - resolution: {integrity: sha512-xeutkzK0eBe+LFXOFU2kJeAYO6IuFUc1g7iRLr7HeCmlC4rsdGclwGHh61KmttL3+YHQytYStxaRBdGAXWC8Lw==} + '@cspell/dict-data-science@2.0.5': + resolution: {integrity: sha512-nNSILXmhSJox9/QoXICPQgm8q5PbiSQP4afpbkBqPi/u/b3K9MbNH5HvOOa6230gxcGdbZ9Argl2hY/U8siBlg==} - '@cspell/dict-django@4.1.0': - resolution: {integrity: sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==} + '@cspell/dict-django@4.1.3': + resolution: {integrity: sha512-yBspeL3roJlO0a1vKKNaWABURuHdHZ9b1L8d3AukX0AsBy9snSggc8xCavPmSzNfeMDXbH+1lgQiYBd3IW03fg==} - '@cspell/dict-docker@1.1.7': - resolution: {integrity: sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==} + '@cspell/dict-docker@1.1.11': + resolution: {integrity: sha512-s0Yhb16/R+UT1y727ekbR/itWQF3Qz275DR1ahOa66wYtPjHUXmhM3B/LT3aPaX+hD6AWmK23v57SuyfYHUjsw==} - '@cspell/dict-dotnet@5.0.5': - resolution: {integrity: sha512-gjg0L97ee146wX47dnA698cHm85e7EOpf9mVrJD8DmEaqoo/k1oPy2g7c7LgKxK9XnqwoXxhLNnngPrwXOoEtQ==} + '@cspell/dict-dotnet@5.0.8': + resolution: {integrity: sha512-MD8CmMgMEdJAIPl2Py3iqrx3B708MbCIXAuOeZ0Mzzb8YmLmiisY7QEYSZPg08D7xuwARycP0Ki+bb0GAkFSqg==} - '@cspell/dict-elixir@4.0.3': - resolution: {integrity: sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==} + '@cspell/dict-elixir@4.0.6': + resolution: {integrity: sha512-TfqSTxMHZ2jhiqnXlVKM0bUADtCvwKQv2XZL/DI0rx3doG8mEMS8SGPOmiyyGkHpR/pGOq18AFH3BEm4lViHIw==} - '@cspell/dict-en-common-misspellings@2.0.4': - resolution: {integrity: sha512-lvOiRjV/FG4pAGZL3PN2GCVHSTCE92cwhfLGGkOsQtxSmef6WCHfHwp9auafkBlX0yFQSKDfq6/TlpQbjbJBtQ==} + '@cspell/dict-en-common-misspellings@2.0.7': + resolution: {integrity: sha512-qNFo3G4wyabcwnM+hDrMYKN9vNVg/k9QkhqSlSst6pULjdvPyPs1mqz1689xO/v9t8e6sR4IKc3CgUXDMTYOpA==} '@cspell/dict-en-gb@1.1.33': resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} - '@cspell/dict-en_us@4.3.23': - resolution: {integrity: sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==} + '@cspell/dict-en_us@4.3.26': + resolution: {integrity: sha512-hDbHYJsi3UgU1J++B0WLiYhWQdsmve3CH53FIaMRAdhrWOHcuw7h1dYkQXHFEP5lOjaq53KUHp/oh5su6VkIZg==} - '@cspell/dict-filetypes@3.0.4': - resolution: {integrity: sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==} + '@cspell/dict-filetypes@3.0.7': + resolution: {integrity: sha512-/DN0Ujp9/EXvpTcgih9JmBaE8n+G0wtsspyNdvHT5luRfpfol1xm/CIQb6xloCXCiLkWX+EMPeLSiVIZq+24dA==} - '@cspell/dict-flutter@1.0.0': - resolution: {integrity: sha512-W7k1VIc4KeV8BjEBxpA3cqpzbDWjfb7oXkEb0LecBCBp5Z7kcfnjT1YVotTx/U9PGyAOBhDaEdgZACVGNQhayw==} + '@cspell/dict-flutter@1.0.3': + resolution: {integrity: sha512-52C9aUEU22ptpgYh6gQyIdA4MP6NPwzbEqndfgPh3Sra191/kgs7CVqXiO1qbtZa9gnYHUoVApkoxRE7mrXHfg==} - '@cspell/dict-fonts@4.0.0': - resolution: {integrity: sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==} + '@cspell/dict-fonts@4.0.3': + resolution: {integrity: sha512-sPd17kV5qgYXLteuHFPn5mbp/oCHKgitNfsZLFC3W2fWEgZlhg4hK+UGig3KzrYhhvQ8wBnmZrAQm0TFKCKzsA==} - '@cspell/dict-fsharp@1.0.1': - resolution: {integrity: sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==} + '@cspell/dict-fsharp@1.0.4': + resolution: {integrity: sha512-G5wk0o1qyHUNi9nVgdE1h5wl5ylq7pcBjX8vhjHcO4XBq20D5eMoXjwqMo/+szKAqzJ+WV3BgAL50akLKrT9Rw==} - '@cspell/dict-fullstack@3.2.0': - resolution: {integrity: sha512-sIGQwU6G3rLTo+nx0GKyirR5dQSFeTIzFTOrURw51ISf+jKG9a3OmvsVtc2OANfvEAOLOC9Wfd8WYhmsO8KRDQ==} + '@cspell/dict-fullstack@3.2.3': + resolution: {integrity: sha512-62PbndIyQPH11mAv0PyiyT0vbwD0AXEocPpHlCHzfb5v9SspzCCbzQ/LIBiFmyRa+q5LMW35CnSVu6OXdT+LKg==} - '@cspell/dict-gaming-terms@1.0.5': - resolution: {integrity: sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==} + '@cspell/dict-gaming-terms@1.0.8': + resolution: {integrity: sha512-7OL0zTl93WFWhhtpXFrtm9uZXItC3ncAs8d0iQDMMFVNU1rBr6raBNxJskxE5wx2Ant12fgI66ZGVagXfN+yfA==} - '@cspell/dict-git@3.0.0': - resolution: {integrity: sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==} + '@cspell/dict-git@3.0.3': + resolution: {integrity: sha512-LSxB+psZ0qoj83GkyjeEH/ZViyVsGEF/A6BAo8Nqc0w0HjD2qX/QR4sfA6JHUgQ3Yi/ccxdK7xNIo67L2ScW5A==} - '@cspell/dict-golang@6.0.12': - resolution: {integrity: sha512-LEPeoqd+4O+vceHF73S7D7+LYfrAjOvp4Dqzh4MT30ruzlQ77yHRSuYOJtrFN1GK5ntAt/ILSVOKg9sgsz1Llg==} + '@cspell/dict-golang@6.0.16': + resolution: {integrity: sha512-hZOBlgcguv2Hdc93n2zjdAQm1j3grsN9T9WhPnQ1wh2vUDoCLEujg+6gWhjcLb8ECOcwZTWgNyQLWeOxEsAj/w==} - '@cspell/dict-google@1.0.1': - resolution: {integrity: sha512-dQr4M3n95uOhtloNSgB9tYYGXGGEGEykkFyRtfcp5pFuEecYUa0BSgtlGKx9RXVtJtKgR+yFT/a5uQSlt8WjqQ==} + '@cspell/dict-google@1.0.4': + resolution: {integrity: sha512-JThUT9eiguCja1mHHLwYESgxkhk17Gv7P3b1S7ZJzXw86QyVHPrbpVoMpozHk0C9o+Ym764B7gZGKmw9uMGduQ==} - '@cspell/dict-haskell@4.0.1': - resolution: {integrity: sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==} + '@cspell/dict-haskell@4.0.4': + resolution: {integrity: sha512-EwQsedEEnND/vY6tqRfg9y7tsnZdxNqOxLXSXTsFA6JRhUlr8Qs88iUUAfsUzWc4nNmmzQH2UbtT25ooG9x4nA==} - '@cspell/dict-html-symbol-entities@4.0.0': - resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} + '@cspell/dict-html-symbol-entities@4.0.3': + resolution: {integrity: sha512-aABXX7dMLNFdSE8aY844X4+hvfK7977sOWgZXo4MTGAmOzR8524fjbJPswIBK7GaD3+SgFZ2yP2o0CFvXDGF+A==} - '@cspell/dict-html@4.0.5': - resolution: {integrity: sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==} + '@cspell/dict-html@4.0.9': + resolution: {integrity: sha512-BNp7w3m910K4qIVyOBOZxHuFNbVojUY6ES8Y8r7YjYgJkm2lCuQoVwwhPjurnomJ7BPmZTb+3LLJ58XIkgF7JQ==} - '@cspell/dict-java@5.0.7': - resolution: {integrity: sha512-ejQ9iJXYIq7R09BScU2y5OUGrSqwcD+J5mHFOKbduuQ5s/Eh/duz45KOzykeMLI6KHPVxhBKpUPBWIsfewECpQ==} + '@cspell/dict-java@5.0.10': + resolution: {integrity: sha512-pVNcOnmoGiNL8GSVq4WbX/Vs2FGS0Nej+1aEeGuUY9CU14X8yAVCG+oih5ZoLt1jaR8YfR8byUF8wdp4qG4XIw==} - '@cspell/dict-julia@1.0.1': - resolution: {integrity: sha512-4JsCLCRhhLMLiaHpmR7zHFjj1qOauzDI5ZzCNQS31TUMfsOo26jAKDfo0jljFAKgw5M2fEG7sKr8IlPpQAYrmQ==} + '@cspell/dict-julia@1.0.4': + resolution: {integrity: sha512-bFVgNX35MD3kZRbXbJVzdnN7OuEqmQXGpdOi9jzB40TSgBTlJWA4nxeAKV4CPCZxNRUGnLH0p05T/AD7Aom9/w==} - '@cspell/dict-k8s@1.0.6': - resolution: {integrity: sha512-srhVDtwrd799uxMpsPOQqeDJY+gEocgZpoK06EFrb4GRYGhv7lXo9Fb+xQMyQytzOW9dw4DNOEck++nacDuymg==} + '@cspell/dict-k8s@1.0.9': + resolution: {integrity: sha512-Q7GELSQIzo+BERl2ya/nBEnZeQC+zJP19SN1pI6gqDYraM51uYJacbbcWLYYO2Y+5joDjNt/sd/lJtLaQwoSlA==} - '@cspell/dict-latex@4.0.0': - resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} + '@cspell/dict-latex@4.0.3': + resolution: {integrity: sha512-2KXBt9fSpymYHxHfvhUpjUFyzrmN4c4P8mwIzweLyvqntBT3k0YGZJSriOdjfUjwSygrfEwiuPI1EMrvgrOMJw==} - '@cspell/dict-lorem-ipsum@4.0.0': - resolution: {integrity: sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==} + '@cspell/dict-lorem-ipsum@4.0.3': + resolution: {integrity: sha512-WFpDi/PDYHXft6p0eCXuYnn7mzMEQLVeqpO+wHSUd+kz5ADusZ4cpslAA4wUZJstF1/1kMCQCZM6HLZic9bT8A==} - '@cspell/dict-lua@4.0.3': - resolution: {integrity: sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==} + '@cspell/dict-lua@4.0.6': + resolution: {integrity: sha512-Jwvh1jmAd9b+SP9e1GkS2ACbqKKRo9E1f9GdjF/ijmooZuHU0hPyqvnhZzUAxO1egbnNjxS/J2T6iUtjAUK2KQ==} - '@cspell/dict-makefile@1.0.0': - resolution: {integrity: sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==} + '@cspell/dict-makefile@1.0.3': + resolution: {integrity: sha512-R3U0DSpvTs6qdqfyBATnePj9Q/pypkje0Nj26mQJ8TOBQutCRAJbr2ZFAeDjgRx5EAJU/+8txiyVF97fbVRViw==} - '@cspell/dict-monkeyc@1.0.6': - resolution: {integrity: sha512-oO8ZDu/FtZ55aq9Mb67HtaCnsLn59xvhO/t2mLLTHAp667hJFxpp7bCtr2zOrR1NELzFXmKln/2lw/PvxMSvrA==} + '@cspell/dict-monkeyc@1.0.9': + resolution: {integrity: sha512-Jvf6g5xlB4+za3ThvenYKREXTEgzx5gMUSzrAxIiPleVG4hmRb/GBSoSjtkGaibN3XxGx5x809gSTYCA/IHCpA==} - '@cspell/dict-node@5.0.1': - resolution: {integrity: sha512-lax/jGz9h3Dv83v8LHa5G0bf6wm8YVRMzbjJPG/9rp7cAGPtdrga+XANFq+B7bY5+jiSA3zvj10LUFCFjnnCCg==} + '@cspell/dict-node@5.0.4': + resolution: {integrity: sha512-Hz5hiuOvZTd7Cp1IBqUZ7/ChwJeQpD5BJuwCaDn4mPNq4iMcQ1iWBYMThvNVqCEDgKv63X52nT8RAWacss98qg==} - '@cspell/dict-npm@5.1.5': - resolution: {integrity: sha512-oAOGWuJYU3DlO+cAsStKMWN8YEkBue25cRC9EwdiL5Z84nchU20UIoYrLfIQejMlZca+1GyrNeyxRAgn4KiivA==} + '@cspell/dict-npm@5.1.8': + resolution: {integrity: sha512-AJELYXeB4fQdIoNfmuaQxB1Hli3cX6XPsQCjfBxlu0QYXhrjB/IrCLLQAjWIywDqJiWyGUFTz4DqaANm8C/r9Q==} - '@cspell/dict-php@4.0.10': - resolution: {integrity: sha512-NfTZdp6kcZDF1PvgQ6cY0zE4FUO5rSwNmBH/iwCBuaLfJAFQ97rgjxo+D2bic4CFwNjyHutnHPtjJBRANO5XQw==} + '@cspell/dict-php@4.0.13': + resolution: {integrity: sha512-P6sREMZkhElzz/HhXAjahnICYIqB/HSGp1EhZh+Y6IhvC15AzgtDP8B8VYCIsQof6rPF1SQrFwunxOv8H1e2eg==} - '@cspell/dict-powershell@5.0.9': - resolution: {integrity: sha512-Vi0h0rlxS39tgTyUtxI6L3BPHH7MLPkLWCYkNfb/buQuNJYNFdHiF4bqoqVdJ/7ZrfIfNg4i6rzocnwGRn2ruw==} + '@cspell/dict-powershell@5.0.13': + resolution: {integrity: sha512-0qdj0XZIPmb77nRTynKidRJKTU0Fl+10jyLbAhFTuBWKMypVY06EaYFnwhsgsws/7nNX8MTEQuewbl9bWFAbsg==} - '@cspell/dict-public-licenses@2.0.8': - resolution: {integrity: sha512-Sup+tFS7cDV0fgpoKtUqEZ6+fA/H+XUgBiqQ/Fbs6vUE3WCjJHOIVsP+udHuyMH7iBfJ4UFYOYeORcY4EaKdMg==} + '@cspell/dict-public-licenses@2.0.11': + resolution: {integrity: sha512-rR5KjRUSnVKdfs5G+gJ4oIvQvm8+NJ6cHWY2N+GE69/FSGWDOPHxulCzeGnQU/c6WWZMSimG9o49i9r//lUQyA==} - '@cspell/dict-python@4.2.6': - resolution: {integrity: sha512-Hkz399qDGEbfXi9GYa2hDl7GahglI86JmS2F1KP8sfjLXofUgtnknyC5NWc86nzHcP38pZiPqPbTigyDYw5y8A==} + '@cspell/dict-python@4.2.12': + resolution: {integrity: sha512-U25eOFu+RE0aEcF2AsxZmq3Lic7y9zspJ9SzjrC0mfJz+yr3YmSCw4E0blMD3mZoNcf7H/vMshuKIY5AY36U+Q==} - '@cspell/dict-r@2.0.1': - resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} + '@cspell/dict-r@2.0.4': + resolution: {integrity: sha512-cBpRsE/U0d9BRhiNRMLMH1PpWgw+N+1A2jumgt1if9nBGmQw4MUpg2u9I0xlFVhstTIdzXiLXMxP45cABuiUeQ==} - '@cspell/dict-ruby@5.0.3': - resolution: {integrity: sha512-V1xzv9hN6u8r6SM4CkYdsxs4ov8gjXXo0Twfx5kWhLXbEVxTXDMt7ohLTqpy2XlF5mutixZdbHMeFiAww8v+Ug==} + '@cspell/dict-ruby@5.0.7': + resolution: {integrity: sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q==} - '@cspell/dict-rust@4.0.5': - resolution: {integrity: sha512-DIvlPRDemjKQy8rCqftAgGNZxY5Bg+Ps7qAIJjxkSjmMETyDgl0KTVuaJPt7EK4jJt6uCZ4ILy96npsHDPwoXA==} + '@cspell/dict-rust@4.0.9': + resolution: {integrity: sha512-Dhr6TIZsMV92xcikKIWei6p/qswS4M+gTkivpWwz4/1oaVk2nRrxJmCdRoVkJlZkkAc17rjxrS12mpnJZI0iWw==} - '@cspell/dict-scala@5.0.3': - resolution: {integrity: sha512-4yGb4AInT99rqprxVNT9TYb1YSpq58Owzq7zi3ZS5T0u899Y4VsxsBiOgHnQ/4W+ygi+sp+oqef8w8nABR2lkg==} + '@cspell/dict-scala@5.0.6': + resolution: {integrity: sha512-tl0YWAfjUVb4LyyE4JIMVE8DlLzb1ecHRmIWc4eT6nkyDqQgHKzdHsnusxFEFMVLIQomgSg0Zz6hJ5S1E4W4ww==} - '@cspell/dict-software-terms@4.1.3': - resolution: {integrity: sha512-5Wn5JG4IzCboX5pjISdkipsPKGaz1//iuBZdHl4US5x7mO4jOGXLpjzx6ZoPM4PXUlMEFz9NJRCDepAu8fXVtA==} + '@cspell/dict-software-terms@4.1.11': + resolution: {integrity: sha512-77CTHxWFTVw6tVoMN8WBMrlNW2F2FbgATwD/6vcOuiyrJUmh8klN5ZK3m+yyK3ZzsnaW2Bduoc0fw2Ckcm/riQ==} - '@cspell/dict-sql@2.1.5': - resolution: {integrity: sha512-FmxanytHXss7GAWAXmgaxl3icTCW7YxlimyOSPNfm+njqeUDjw3kEv4mFNDDObBJv8Ec5AWCbUDkWIpkE3IpKg==} + '@cspell/dict-sql@2.1.8': + resolution: {integrity: sha512-dJRE4JV1qmXTbbGm6WIcg1knmR6K5RXnQxF4XHs5HA3LAjc/zf77F95i5LC+guOGppVF6Hdl66S2UyxT+SAF3A==} - '@cspell/dict-svelte@1.0.2': - resolution: {integrity: sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==} + '@cspell/dict-svelte@1.0.5': + resolution: {integrity: sha512-sseHlcXOqWE4Ner9sg8KsjxwSJ2yssoJNqFHR9liWVbDV+m7kBiUtn2EB690TihzVsEmDr/0Yxrbb5Bniz70mA==} - '@cspell/dict-swift@2.0.1': - resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} + '@cspell/dict-swift@2.0.4': + resolution: {integrity: sha512-CsFF0IFAbRtYNg0yZcdaYbADF5F3DsM8C4wHnZefQy8YcHP/qjAF/GdGfBFBLx+XSthYuBlo2b2XQVdz3cJZBw==} - '@cspell/dict-terraform@1.0.1': - resolution: {integrity: sha512-29lmUUnZgPh+ieZ5hunick8hzNIpNRtiJh9vAusNskPCrig3RTW6u7F+GG1a8uyslbzSw+Irjf40PTOan1OJJA==} + '@cspell/dict-terraform@1.0.5': + resolution: {integrity: sha512-qH3epPB2d6d5w1l4hR2OsnN8qDQ4P0z6oDB7+YiNH+BoECXv4Z38MIV1H8cxIzD2wkzkt2JTcFYaVW72MDZAlg==} - '@cspell/dict-typescript@3.1.6': - resolution: {integrity: sha512-1beC6O4P/j23VuxX+i0+F7XqPVc3hhiAzGJHEKqnWf5cWAXQtg0xz3xQJ5MvYx2a7iLaSa+lu7+05vG9UHyu9Q==} + '@cspell/dict-typescript@3.1.10': + resolution: {integrity: sha512-7Zek3w4Rh3ZYyhihJ34FdnUBwP3OmRldnEq3hZ+FgQ0PyYZjXv5ztEViRBBxXjiFx1nHozr6pLi74TxToD8xsg==} - '@cspell/dict-vue@3.0.0': - resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} + '@cspell/dict-vue@3.0.3': + resolution: {integrity: sha512-akmYbrgAGumqk1xXALtDJcEcOMYBYMnkjpmGzH13Ozhq1mkPF4VgllFQlm1xYde+BUKNnzMgPEzxrL2qZllgYA==} - '@cspell/dynamic-import@8.14.4': - resolution: {integrity: sha512-GjKsBJvPXp4dYRqsMn7n1zpnKbnpfJnlKLOVeoFBh8fi4n06G50xYr+G25CWX1WT3WFaALAavvVICEUPrVsuqg==} + '@cspell/dynamic-import@8.15.4': + resolution: {integrity: sha512-tr0F6EYN6qtniNvt1Uib+PgYQHeo4dQHXE2Optap+hYTOoQ2VoQ+SwBVjZ+Q2bmSAB0fmOyf0AvgsUtnWIpavw==} engines: {node: '>=18.0'} - '@cspell/filetypes@8.14.4': - resolution: {integrity: sha512-qd68dD7xTA4Mnf/wjIKYz2SkiTBshIM+yszOUtLa06YJm0aocoNQ25FHXyYEQYm9NQXCYnRWWA02sFMGs8Sv/w==} + '@cspell/filetypes@8.15.4': + resolution: {integrity: sha512-sNl6jr3ym/4151EY76qlI/00HHsiLZBqW7Vb1tqCzsgSg3EpL30ddjr74So6Sg2PN26Yf09hvxGTJzXn1R4aYw==} engines: {node: '>=18'} - '@cspell/strong-weak-map@8.14.4': - resolution: {integrity: sha512-Uyfck64TfVU24wAP3BLGQ5EsAfzIZiLfN90NhttpEM7GlOBmbGrEJd4hNOwfpYsE/TT80eGWQVPRTLr5SDbXFA==} + '@cspell/strong-weak-map@8.15.4': + resolution: {integrity: sha512-m5DeQksbhJFqcSYF8Q0Af/WXmXCMAJocCUShkzOXK+uZNXnvhBZN7VyQ9hL+GRzX8JTPEPdVcz2lFyVE5p+LzQ==} engines: {node: '>=18'} - '@cspell/url@8.14.4': - resolution: {integrity: sha512-htHhNF8WrM/NfaLSWuTYw0NqVgFRVHYSyHlRT3i/Yv5xvErld8Gw7C6ldm+0TLjoGlUe6X1VV72JSir7+yLp/Q==} + '@cspell/url@8.15.4': + resolution: {integrity: sha512-K2oZu/oLQPs5suRpLS8uu04O3YMUioSlEU1D66fRoOxzI5NzLt7i7yMg3HQHjChGa09N5bzqmrVdhmQrRZXwGg==} engines: {node: '>=18.0'} '@dprint/formatter@0.3.0': @@ -1091,8 +1111,8 @@ packages: '@dprint/toml@0.6.2': resolution: {integrity: sha512-Mk5unEANsL/L+WHYU3NpDXt1ARU5bNU5k5OZELxaJodDycKG6RoRnSlZXpW6+7UN2PSnETAFVUdKrh937ZwtHA==} - '@es-joy/jsdoccomment@0.48.0': - resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==} + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} engines: {node: '>=16'} '@esbuild/aix-ppc64@0.21.5': @@ -1101,170 +1121,315 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/compat@1.1.1': - resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + '@eslint/compat@1.2.1': + resolution: {integrity: sha512-JbHG2TWuCeNzh87fXo+/46Z1LEo9DBA9T188d0fZgGxAD+cNyS6sx9fdiyxjGPBMyQVRlCutTByZ6a5+YMkF7g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true '@eslint/config-array@0.18.0': resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.6.0': - resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + '@eslint/core@0.7.0': + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.11.1': - resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==} + '@eslint/js@9.13.0': + resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -1275,12 +1440,20 @@ packages: resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@humanfs/core@0.19.0': + resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.5': + resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + engines: {node: '>=18.18.0'} + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.0': - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} '@isaacs/cliui@8.0.2': @@ -1313,13 +1486,6 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jsdevtools/ez-spawn@3.0.4': - resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} - engines: {node: '>=10'} - - '@mdn/browser-compat-data@5.5.43': - resolution: {integrity: sha512-tnAfo9j9tCOyjHB9nTkDcTHtpwMT+oBUSL7sBsGHxpZ/wQ2uRByHawaFcNgqFVogN20V9LsSfsGQ9EB5Px13rg==} - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} @@ -1335,6 +1501,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@octokit/auth-token@5.1.1': resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} engines: {node: '>= 18'} @@ -1403,47 +1573,57 @@ packages: resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} engines: {node: '>=12'} - '@rebeccastevens/eslint-config@3.0.6': - resolution: {integrity: sha512-AtEisDCwTrFTeaAIXvkGolRR9jCD+xXY0MEaVhoNo/ARgApqAw1ZkT0OyOVTBLof3oICFofPqdMhAxA4qPTINw==} + '@rebeccastevens/eslint-config@3.3.2': + resolution: {integrity: sha512-1yq8jHXmsHj4NSiblHE9p3roHFXEWfXzg2UsavkD1FXTS7EQ4p9l9qFFCyjYgK2AzASdbV546/OQTW4BZez18A==} engines: {node: '>=20.0.0'} peerDependencies: + '@eslint-react/eslint-plugin': '*' '@stylistic/eslint-plugin': '*' '@typescript-eslint/eslint-plugin': '*' '@typescript-eslint/parser': '*' '@typescript-eslint/utils': '*' '@unocss/eslint-plugin': '*' + '@vitest/eslint-plugin': '*' eslint: '*' eslint-config-prettier: '*' eslint-flat-config-utils: '*' + eslint-formatting-reporter: '*' eslint-import-resolver-typescript: '*' eslint-merge-processors: '*' eslint-plugin-eslint-comments: '*' eslint-plugin-format: '*' - eslint-plugin-functional: '*' + eslint-plugin-functional: link:/home/rebec/dev/eslint-plugin-functional + eslint-plugin-i18next: '*' eslint-plugin-import-x: '*' eslint-plugin-jsdoc: '*' eslint-plugin-jsonc: '*' + eslint-plugin-jsx-a11y: '*' eslint-plugin-markdown: '*' eslint-plugin-n: '*' eslint-plugin-no-only-tests: '*' eslint-plugin-optimize-regex: '*' eslint-plugin-prettier: '*' eslint-plugin-promise: '*' + eslint-plugin-react-hooks: '*' + eslint-plugin-react-refresh: '*' + eslint-plugin-readable-tailwind: '*' eslint-plugin-regexp: '*' eslint-plugin-sonarjs: '*' + eslint-plugin-tailwindcss: '*' eslint-plugin-toml: '*' eslint-plugin-unicorn: '*' - eslint-plugin-vitest: '*' eslint-plugin-vue: '*' eslint-plugin-yml: '*' eslint-processor-vue-blocks: '*' jsonc-eslint-parser: '*' prettier: '*' - prettier-plugin-packagejson: '*' + sort-package-json: '*' toml-eslint-parser: '*' vue-eslint-parser: '*' yaml-eslint-parser: '*' peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true '@stylistic/eslint-plugin': optional: true '@typescript-eslint/eslint-plugin': @@ -1454,10 +1634,14 @@ packages: optional: true '@unocss/eslint-plugin': optional: true + '@vitest/eslint-plugin': + optional: true eslint-config-prettier: optional: true eslint-flat-config-utils: optional: true + eslint-formatting-reporter: + optional: true eslint-import-resolver-typescript: optional: true eslint-merge-processors: @@ -1468,12 +1652,16 @@ packages: optional: true eslint-plugin-functional: optional: true + eslint-plugin-i18next: + optional: true eslint-plugin-import-x: optional: true eslint-plugin-jsdoc: optional: true eslint-plugin-jsonc: optional: true + eslint-plugin-jsx-a11y: + optional: true eslint-plugin-markdown: optional: true eslint-plugin-n: @@ -1486,16 +1674,22 @@ packages: optional: true eslint-plugin-promise: optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-readable-tailwind: + optional: true eslint-plugin-regexp: optional: true eslint-plugin-sonarjs: optional: true + eslint-plugin-tailwindcss: + optional: true eslint-plugin-toml: optional: true eslint-plugin-unicorn: optional: true - eslint-plugin-vitest: - optional: true eslint-plugin-vue: optional: true eslint-plugin-yml: @@ -1506,7 +1700,7 @@ packages: optional: true prettier: optional: true - prettier-plugin-packagejson: + sort-package-json: optional: true toml-eslint-parser: optional: true @@ -1515,6 +1709,28 @@ packages: yaml-eslint-parser: optional: true + '@rollup/plugin-replace@6.0.1': + resolution: {integrity: sha512-2sPh9b73dj5IxuMmDAsQWVFT7mR+yoHweBaXG2W/R8vQ+IWZlnaI7BR7J6EguVQUp1hd8Z7XuozpDjEKQAAC2Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-typescript@12.1.1': + resolution: {integrity: sha512-t7O653DpfB5MbFrqPe/VcKFFkvRuFNp9qId3xq4Eth5xlyymzxNpye2z8Hrl0RIMuXTSr5GGcFpkdlMeacUiFQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -1524,86 +1740,89 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.20.0': - resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.20.0': - resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.20.0': - resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.20.0': - resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': - resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.20.0': - resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.20.0': - resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.20.0': - resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': - resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.20.0': - resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.20.0': - resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.20.0': - resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.20.0': - resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.20.0': - resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.20.0': - resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.20.0': - resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} cpu: [x64] os: [win32] + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -1671,8 +1890,8 @@ packages: engines: {node: '>=8.10'} hasBin: true - '@stylistic/eslint-plugin@2.8.0': - resolution: {integrity: sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==} + '@stylistic/eslint-plugin@2.9.0': + resolution: {integrity: sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -1680,15 +1899,9 @@ packages: '@types/dedent@0.7.2': resolution: {integrity: sha512-kRiitIeUg1mPV9yH4VUJ/1uk2XjyANfeL8/7rH1tsjvHeO9PJLBHJIYsFWmAvmGj5u8rj+1TZx7PZzW2qLw3Lw==} - '@types/eslint@8.56.11': - resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==} - '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -1701,24 +1914,15 @@ packages: '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.43': resolution: {integrity: sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/object-path@0.11.4': - resolution: {integrity: sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==} - '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/ua-parser-js@0.7.39': - resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} - '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} @@ -1733,8 +1937,8 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.8.0': - resolution: {integrity: sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==} + '@typescript-eslint/eslint-plugin@8.10.0': + resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1744,8 +1948,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.8.0': - resolution: {integrity: sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==} + '@typescript-eslint/parser@8.10.0': + resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1762,12 +1966,8 @@ packages: resolution: {integrity: sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@8.8.0': - resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} + '@typescript-eslint/scope-manager@8.10.0': + resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/type-utils@7.16.1': @@ -1780,8 +1980,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.8.0': - resolution: {integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==} + '@typescript-eslint/type-utils@8.10.0': + resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1797,12 +1997,8 @@ packages: resolution: {integrity: sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@8.8.0': - resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} + '@typescript-eslint/types@8.10.0': + resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -1823,17 +2019,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.8.0': - resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} + '@typescript-eslint/typescript-estree@8.10.0': + resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1853,14 +2040,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/utils@8.8.0': - resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} + '@typescript-eslint/utils@8.10.0': + resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1873,30 +2054,39 @@ packages: resolution: {integrity: sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@8.8.0': - resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} + '@typescript-eslint/visitor-keys@8.10.0': + resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/coverage-v8@2.1.1': - resolution: {integrity: sha512-md/A7A3c42oTT8JUHSqjP5uKTWJejzUW4jalpvs+rZ27gsURsMU8DEb+8Jf8C6Kj2gwfSHJqobDNBuoqlm0cFw==} + '@vitest/coverage-v8@2.1.3': + resolution: {integrity: sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==} peerDependencies: - '@vitest/browser': 2.1.1 - vitest: 2.1.1 + '@vitest/browser': 2.1.3 + vitest: 2.1.3 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@2.1.1': - resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} + '@vitest/eslint-plugin@1.1.7': + resolution: {integrity: sha512-pTWGW3y6lH2ukCuuffpan6kFxG6nIuoesbhMiQxskyQMRcCN5t9SXsKrNHvEw3p8wcCsgJoRqFZVkOTn6TjclA==} + peerDependencies: + '@typescript-eslint/utils': '>= 8.0' + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + + '@vitest/expect@2.1.3': + resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} - '@vitest/mocker@2.1.1': - resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} + '@vitest/mocker@2.1.3': + resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} peerDependencies: - '@vitest/spy': 2.1.1 + '@vitest/spy': 2.1.3 msw: ^2.3.5 vite: ^5.0.0 peerDependenciesMeta: @@ -1905,24 +2095,20 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.1': - resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + '@vitest/pretty-format@2.1.3': + resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} - '@vitest/runner@2.1.1': - resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} + '@vitest/runner@2.1.3': + resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} - '@vitest/snapshot@2.1.1': - resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} + '@vitest/snapshot@2.1.3': + resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} - '@vitest/spy@2.1.1': - resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} + '@vitest/spy@2.1.3': + resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} - '@vitest/utils@2.1.1': - resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} - - '@wessberg/stringutil@1.0.19': - resolution: {integrity: sha512-9AZHVXWlpN8Cn9k5BC/O0Dzb9E9xfEMXzYrNunwvkUTvuK7xgQPVRZpLo+jWCOZ5r8oBa8NIrHuPEu1hzbb6bg==} - engines: {node: '>=8.0.0'} + '@vitest/utils@2.1.3': + resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -1956,10 +2142,6 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -2061,8 +2243,9 @@ packages: resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} - axobject-query@3.1.1: - resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} babel-plugin-polyfill-corejs2@0.4.11: resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} @@ -2102,10 +2285,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist-generator@2.1.0: - resolution: {integrity: sha512-ZFz4mAOgqm0cbwKaZsfJbYDbTXGoPANlte7qRsRJOfjB9KmmISQrXJxAVrnXG8C8v/QHNzXyeJt0Cfcks6zZvQ==} - engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} - browserslist@4.23.3: resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2127,9 +2306,6 @@ packages: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2261,12 +2437,6 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - compatfactory@3.0.0: - resolution: {integrity: sha512-WD5kF7koPwVoyKL8p0LlrmIZtilrD46sQStyzzxzTFinMKN2Dxk1hN+sddLSQU1mGIZvQfU8c+ONSghvvM40jg==} - engines: {node: '>=14.9.0'} - peerDependencies: - typescript: '>=3.x || >= 4.x || >= 5.x' - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2329,50 +2499,46 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - crosspath@2.0.0: - resolution: {integrity: sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA==} - engines: {node: '>=14.9.0'} - crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} - cspell-config-lib@8.14.4: - resolution: {integrity: sha512-cnUeJfniTiebqCaQmIUnbSrPrTH7xzKRQjJDHAEV0WYnOG2MhRXI13OzytdFdhkVBdStmgTzTCJKE7x+kmU2NA==} + cspell-config-lib@8.15.4: + resolution: {integrity: sha512-vUgikQTRkRMTdkZqSs7F2cTdPpX61cTjr/9L/VCkXkbW38ObCr4650ioiF1Wq3zDF3Gy2bc4ECTpD2PZUXX5SA==} engines: {node: '>=18'} - cspell-dictionary@8.14.4: - resolution: {integrity: sha512-pZvQHxpAW5fZAnt3ZKKy3s7M+3CX2t8tCS3uJrpEHIynlCawpG0fPF78rVE5o+g0dON36Lguc/BUuSN4IWKLmQ==} + cspell-dictionary@8.15.4: + resolution: {integrity: sha512-8+p/l9Saac7qyCbqtELneDoT7CwHu9gYmnI8uXMu34/lPGjhVhy10ZeI0+t1djaO2YyASK400YFKq5uP/5KulA==} engines: {node: '>=18'} - cspell-gitignore@8.14.4: - resolution: {integrity: sha512-RwfQEW5hD7CpYwS7m3b0ONG0nTLKP6bL2tvMdl7qtaYkL7ztGdsBTtLD1pmwqUsCbiN5RuaOxhYOYeRcpFRIkQ==} + cspell-gitignore@8.15.4: + resolution: {integrity: sha512-9n5PpQ8gEf8YcvEtoZGZ2Ma6wnqSFkD2GrmyjISy39DfIX/jNLN7GX2wJm6OD2P4FjXer95ypmIb/JWTlfmbTw==} engines: {node: '>=18'} hasBin: true - cspell-glob@8.14.4: - resolution: {integrity: sha512-C/xTS5nujMRMuguibq92qMVP767mtxrur7DcVolCvpzcivm1RB5NtIN0OctQxTyMbnmKeQv1t4epRKQ9A8vWRg==} + cspell-glob@8.15.4: + resolution: {integrity: sha512-TTfRRHRAN+PN9drIz4MAEgKKYnPThBOlPMdFddyuisvU33Do1sPAnqkkOjTEFdi3jAA5KwnSva68SVH6IzzMBQ==} engines: {node: '>=18'} - cspell-grammar@8.14.4: - resolution: {integrity: sha512-yaSKAAJDiamsw3FChbw4HXb2RvTQrDsLelh1+T4MavarOIcAxXrqAJ8ysqm++g+S/ooJz2YO8YWIyzJKxcMf8g==} + cspell-grammar@8.15.4: + resolution: {integrity: sha512-MKiKyYi05mRtXOxPoTv3Ksi0GwYLiK84Uq0C+5PaMrnIjXeed0bsddSFXCT+7ywFJc7PdjhTtz0M/9WWK3UgbA==} engines: {node: '>=18'} hasBin: true - cspell-io@8.14.4: - resolution: {integrity: sha512-o6OTWRyx/Az+PFhr1B0wMAwqG070hFC9g73Fkxd8+rHX0rfRS69QZH7LgSmZytqbZIMxCTDGdsLl33MFGWCbZQ==} + cspell-io@8.15.4: + resolution: {integrity: sha512-rXIEREPTFV9dwwg4EKfvzqlCNOvT6910AYED5YrSt8Y68usRJ9lbqdx0BrDndVCd33bp1o+9JBfHuRiFIQC81g==} engines: {node: '>=18'} - cspell-lib@8.14.4: - resolution: {integrity: sha512-qdkUkKtm+nmgpA4jQbmQTuepDfjHBDWvs3zDuEwVIVFq/h8gnXrRr75gJ3RYdTy+vOOqHPoLLqgxyqkUUrUGXA==} + cspell-lib@8.15.4: + resolution: {integrity: sha512-iLp/625fvCyFFxSyZYLMgqHIKcrhN4hT7Hw5+ySa38Bp/OfA81ANqWHpsDQ0bGsALTRn/DHBpQYj4xCW/aN9tw==} engines: {node: '>=18'} - cspell-trie-lib@8.14.4: - resolution: {integrity: sha512-zu8EJ33CH+FA5lwTRGqS//Q6phO0qtgEmODMR1KPlD7WlrfTFMb3bWFsLo/tiv5hjpsn7CM6dYDAAgBOSkoyhQ==} + cspell-trie-lib@8.15.4: + resolution: {integrity: sha512-sg9klsNHyrfos0Boiio+qy5d6fI9cCNjBqFYrNxvpKpwZ4gEzDzjgEKdZY1C76RD2KoBQ8I1NF5YcGc0+hhhCw==} engines: {node: '>=18'} - cspell@8.14.4: - resolution: {integrity: sha512-R5Awb3i/RKaVVcZzFt8dkN3M6VnifIEDYBcbzbmYjZ/Eq+ASF+QTmI0E9WPhMEcFM1nd7YOyXnETo560yRdoKw==} + cspell@8.15.4: + resolution: {integrity: sha512-hUOxcwmNWuHzVeGHyN5v/T9MkyCE5gi0mvatxsM794B2wOuR1ZORgjZH62P2HY1uBkXe/x5C6ITWrSyh0WgAcg==} engines: {node: '>=18'} hasBin: true @@ -2391,9 +2557,8 @@ packages: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} - deassert@1.0.2: - resolution: {integrity: sha512-cF1/OfxthRQkkC4vOGVT9fs0wuPWIBAPzEk/YI1XSq3JZdgSXmLW1aEegpNLq9VgypeAtmvI8vHiQ31YBK5vvQ==} - hasBin: true + deassert@1.3.2: + resolution: {integrity: sha512-a6f6oYfW7R7zM9RzKoEoeWmJPaRjOllC7E9G3kA+uhnwJlwIQ7QR8aqPQBLpyxz4b+0h0XfsUGc/DrLZvq7ifw==} debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -2435,8 +2600,8 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge-ts@7.1.0: - resolution: {integrity: sha512-q6bNsfNBtgr8ZOQqmZbl94MmYWm+QcDNIkqCxVWiw1vKvf+y/N2dZQKdnDXn4c5Ygt/y63tDof6OCN+2YwWVEg==} + deepmerge-ts@7.1.3: + resolution: {integrity: sha512-qCSH6I0INPxd9Y1VtAiLpnYvz5O//6rCfJXKk0z66Up9/VOSr+1yS8XSKA5IWRxjocFGlzPyaZYe+jxq7OOLtQ==} engines: {node: '>=16.0.0'} deepmerge@4.3.1: @@ -2486,6 +2651,11 @@ packages: resolution: {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dts-bundle-generator@9.2.1: + resolution: {integrity: sha512-sMyIGJcn+FSc4f4VzRgX4muZS2uG91c/DjC++HkpZJyudGedSpGNR5bY9HEkSyyYFay0ERzjoDM7uKgUycaRvw==} + engines: {node: '>=14.0.0'} + hasBin: true + duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} @@ -2579,6 +2749,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -2614,8 +2789,8 @@ packages: peerDependencies: eslint: '>= 7' - eslint-flat-config-utils@0.3.0: - resolution: {integrity: sha512-FaFQLUunAl6YK7aU/pT23DXYVWg/cEHbSfxwAxpCGT6Su8H9RfkmzKLh1G2bba46p6dTlQeA4VTiV5//0SeToQ==} + eslint-flat-config-utils@0.4.0: + resolution: {integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==} eslint-formatting-reporter@0.0.0: resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} @@ -2625,20 +2800,26 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.6.1: - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true eslint-merge-processors@0.1.0: resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} peerDependencies: eslint: '*' - eslint-module-utils@2.8.1: - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2684,14 +2865,14 @@ packages: peerDependencies: eslint: ^8.40.0 || ^9.0.0 - eslint-plugin-import-x@4.1.1: - resolution: {integrity: sha512-dBEM8fACIFNt4H7GoOaRmnH6evJW6JSTJTYYgmRd3vI4geBTjgDM/JyUDKUwIw0HDSyI+u7Vs3vFRXUo/BOAtA==} + eslint-plugin-import-x@4.3.1: + resolution: {integrity: sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + eslint-plugin-import@2.30.0: + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2700,8 +2881,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsdoc@50.2.2: - resolution: {integrity: sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==} + eslint-plugin-jsdoc@50.4.3: + resolution: {integrity: sha512-uWtwFxGRv6B8sU63HZM5dAGDhgsatb+LONwmILZJhdRALLOkCX2HFZhdL/Kw2ls8SQMAVEfK+LmnEfxInRN8HA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -2712,11 +2893,11 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-plugin-jsx-a11y@6.9.0: - resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} + eslint-plugin-jsx-a11y@6.10.0: + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} engines: {node: '>=4.0'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 eslint-plugin-markdown@5.1.0: resolution: {integrity: sha512-SJeyKko1K6GwI0AN6xeCDToXDkfKZfXcexA6B+O2Wr2btUS9GrC+YgwSyVli5DJnctUHjFXcQ2cqTaAmVoLi2A==} @@ -2724,34 +2905,48 @@ packages: peerDependencies: eslint: '>=8' - eslint-plugin-n@17.10.2: - resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==} + eslint-plugin-n@17.11.1: + resolution: {integrity: sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' - eslint-plugin-no-only-tests@3.1.0: - resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} eslint-plugin-optimize-regex@1.2.1: resolution: {integrity: sha512-fUaU7Tj1G/KSTDTABJw4Wp427Rl7RPl9ViYTu1Jrv36fJw4DFhd4elPdXiuYtdPsNsvzn9GcVlKEssGIVjw0UQ==} engines: {node: '>=10'} + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + eslint-plugin-promise@7.1.0: resolution: {integrity: sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.35.0: - resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} + eslint-plugin-react@7.36.1: + resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -2762,30 +2957,17 @@ packages: peerDependencies: eslint: '>=8.44.0' - eslint-plugin-sonarjs@2.0.2: - resolution: {integrity: sha512-0JUYTlUDk/up3mS0rFP9vHCRvhIYNTy06m99IPFeyMDUWL8u0ebz+nFPYn6OWDBTIEfbvQ/Xe0PdjWO8w0WD0Q==} + eslint-plugin-sonarjs@2.0.4: + resolution: {integrity: sha512-XVVAB/t0WSgHitHNajIcIDmviCO8kB9VSsrjy+4WUEVM3eieY9SDHEtCDaOMTjj6XMtcAr8BFDXCFaP005s+tg==} peerDependencies: eslint: ^8.0.0 || ^9.0.0 - eslint-plugin-unicorn@55.0.0: - resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} + eslint-plugin-unicorn@56.0.0: + resolution: {integrity: sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' - eslint-plugin-vitest@0.5.4: - resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} - engines: {node: ^18.0.0 || >= 20.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': '*' - eslint: ^8.57.0 || ^9.0.0 - vitest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - vitest: - optional: true - eslint-plugin-yml@1.14.0: resolution: {integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==} engines: {node: ^14.17.0 || >=16.0.0} @@ -2800,12 +2982,8 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + eslint-scope@8.1.0: + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@2.1.0: @@ -2816,18 +2994,18 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + eslint-visitor-keys@4.1.0: + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-vitest-rule-tester@0.3.3: - resolution: {integrity: sha512-JVKpK8RaPhE0AYOHIUY9GVb/XKTT7oEHWLY4CLZ2fyI8IQXs/qesqCTkLwC42txOxvndZjrp8HW1lShpRPEKww==} + eslint-vitest-rule-tester@0.6.1: + resolution: {integrity: sha512-3RQOsJEoAExM3KHAayvTpRJQOYxTETP89RS9x0QRBK4cvCut0Tyjmb1xVQWY8ibC49M0B+QeSGrVZhtbcxOl4Q==} peerDependencies: eslint: ^9.0.0 vitest: ^1.0.0 || ^2.0.0 - eslint@9.11.1: - resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==} + eslint@9.13.0: + resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2836,8 +3014,8 @@ packages: jiti: optional: true - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + espree@10.2.0: + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@9.6.1: @@ -2916,6 +3094,14 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + figures@2.0.0: resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} engines: {node: '>=4'} @@ -3096,8 +3282,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.9.0: - resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + globals@15.11.0: + resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} engines: {node: '>=18'} globalthis@1.0.4: @@ -3112,10 +3298,6 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - globby@14.0.1: - resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} - engines: {node: '>=18'} - globby@14.0.2: resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} @@ -3174,10 +3356,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - helpertypes@0.0.19: - resolution: {integrity: sha512-J00e55zffgi3yVnUp0UdbMztNkr2PnizEkOe9URNohnrNhW5X0QpegkuLpOmFQInpi93Nb8MCjQRHAiCDF42NQ==} - engines: {node: '>=10.0.0'} - highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -3219,8 +3397,8 @@ packages: resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==} engines: {node: '>=18.18.0'} - husky@9.1.4: - resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} + husky@9.1.6: + resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} engines: {node: '>=18'} hasBin: true @@ -3309,12 +3487,15 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.15.0: - resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} is-data-view@1.0.1: @@ -3384,10 +3565,6 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -3449,10 +3626,6 @@ packages: isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isbot@3.8.0: - resolution: {integrity: sha512-vne1mzQUTR+qsMLeCBL9+/tgnDXRyc2pygLGl/WsgA+EZKIiB5Ehu0CiVTHIIk30zhJ24uGz4M5Ppse37aR0Hg==} - engines: {node: '>=12'} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -3498,8 +3671,8 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@2.3.3: + resolution: {integrity: sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==} hasBin: true js-tokens@4.0.0: @@ -3517,11 +3690,6 @@ packages: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -3558,8 +3726,8 @@ packages: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -3571,8 +3739,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - knip@5.27.1: - resolution: {integrity: sha512-Cz1Mebby5oJNd11bEErhbu3Vnw678nrxTtwJEJjNFJ5f4OuCXGS1Uwc3Ml8B0Uh9JcolT4+5KPlw+sOsB/NBAg==} + knip@5.33.3: + resolution: {integrity: sha512-saUxedVDCa/8p3w445at66vLmYKretzYsX7+elMJ5ROWGzU+1aTRm3EmKELTaho1ue7BlwJB5BxLJROy43+LtQ==} engines: {node: '>=18.6.0'} hasBin: true peerDependencies: @@ -3600,8 +3768,8 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@15.2.8: - resolution: {integrity: sha512-PUWFf2zQzsd9EFU+kM1d7UP+AZDbKFKuj+9JNVTBkhUFhbg4MAt6WfyMMwBfM4lYqd4D2Jwac5iuTu9rVj4zCQ==} + lint-staged@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} engines: {node: '>=18.12.0'} hasBin: true @@ -3680,10 +3848,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} @@ -3701,22 +3865,22 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - markdownlint-cli2-formatter-default@0.0.4: - resolution: {integrity: sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==} + markdownlint-cli2-formatter-default@0.0.5: + resolution: {integrity: sha512-4XKTwQ5m1+Txo2kuQ3Jgpo/KmnG+X90dWt4acufg6HVGadTUG5hzHF/wssp9b5MBYOMCnZ9RMPaU//uHsszF8Q==} peerDependencies: markdownlint-cli2: '>=0.0.4' - markdownlint-cli2@0.13.0: - resolution: {integrity: sha512-Pg4nF7HlopU97ZXtrcVISWp3bdsuc5M0zXyLp2/sJv2zEMlInrau0ZKK482fQURzVezJzWBpNmu4u6vGAhij+g==} + markdownlint-cli2@0.14.0: + resolution: {integrity: sha512-2cqdWy56frU2FTpbuGb83mEWWYuUIYv6xS8RVEoUAuKNw/hXPar2UYGpuzUhlFMngE8Omaz4RBH52MzfRbGshw==} engines: {node: '>=18'} hasBin: true - markdownlint-micromark@0.1.9: - resolution: {integrity: sha512-5hVs/DzAFa8XqYosbEAEg6ok6MF2smDj89ztn9pKkCtdKHVdPQuGMH7frFfYL9mLkvfFe4pTyAMffLbjf3/EyA==} + markdownlint-micromark@0.1.10: + resolution: {integrity: sha512-no5ZfdqAdWGxftCLlySHSgddEjyW4kui4z7amQcGsSKfYC5v/ou+8mIQVyg9KQMeEZLNtz9OPDTj7nnTnoR4FQ==} engines: {node: '>=18'} - markdownlint@0.34.0: - resolution: {integrity: sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==} + markdownlint@0.35.0: + resolution: {integrity: sha512-wgp8yesWjFBL7bycA3hxwHRdsZGJhjhyP1dSxKVKrza0EPFYtn+mHtkVy6dvP1kGSjovyG5B8yNP6Frj0UFUJg==} engines: {node: '>=18'} marked-terminal@7.1.0: @@ -3753,10 +3917,6 @@ packages: micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -3949,10 +4109,6 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object-path@0.11.8: - resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==} - engines: {node: '>= 10.12.0'} - object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} @@ -4055,6 +4211,9 @@ packages: package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@0.2.2: + resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4184,14 +4343,6 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier-plugin-packagejson@2.5.1: - resolution: {integrity: sha512-6i4PW1KxEA+VrokYNGeI/q8qQX3u5DNBc7eLr9GX4OrvWr9DMls1lhbuNopkKG7Li9rTNxerWnYQyjxoUO4ROA==} - peerDependencies: - prettier: '>= 1.16.0' - peerDependenciesMeta: - prettier: - optional: true - prettier@3.3.3: resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} @@ -4262,8 +4413,8 @@ packages: resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} - regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} regenerate@1.4.2: @@ -4287,20 +4438,23 @@ packages: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + regexpu-core@6.1.1: + resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} engines: {node: '>=4'} registry-auth-token@5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + regjsparser@0.10.0: resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + regjsparser@0.11.1: + resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} hasBin: true repeat-string@1.6.1: @@ -4355,37 +4509,22 @@ packages: engines: {node: 20 || >=22} hasBin: true - rollup-plugin-ts@3.4.5: - resolution: {integrity: sha512-9iCstRJpEZXSRQuXitlSZAzcGlrqTbJg1pE4CMbEi6xYldxVncdPyzA2I+j6vnh73wBymZckerS+Q/iEE/M3Ow==} - engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} - peerDependencies: - '@babel/core': '>=7.x' - '@babel/plugin-transform-runtime': '>=7.x' - '@babel/preset-env': '>=7.x' - '@babel/preset-typescript': '>=7.x' - '@babel/runtime': '>=7.x' - '@swc/core': '>=1.x' - '@swc/helpers': '>=0.2' - rollup: '>=1.x || >=2.x || >=3.x' - typescript: '>=3.2.x || >= 4.x || >= 5.x' - peerDependenciesMeta: - '@babel/core': - optional: true - '@babel/plugin-transform-runtime': - optional: true - '@babel/preset-env': - optional: true - '@babel/preset-typescript': - optional: true - '@babel/runtime': - optional: true - '@swc/core': - optional: true - '@swc/helpers': - optional: true + rollup-plugin-deassert@1.3.0: + resolution: {integrity: sha512-bXiXlSfLkgGtsM/bf43MyGNmes+v01aOB/OsbXN1w0Rta80WVXE+aKK0kA4oSNJsUCsH5NmPAT84aTLMyst1dQ==} + peerDependencies: + acorn: ^8.12.1 + rollup: ^4.20.0 + + rollup-plugin-dts-bundle-generator@1.4.0: + resolution: {integrity: sha512-++Vax6N0iFiH6/hqbKvdnVvyz48grMqAos6TqW4wajQE0AgDzbQK0hbsyDgKTTQoz1BjanC0omOJc/RnQoYajQ==} + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + engines: {node: '>=10.0.0'} + hasBin: true - rollup@4.20.0: - resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4413,8 +4552,8 @@ packages: peerDependencies: semantic-release: '>=20.1.0' - semantic-release@24.1.2: - resolution: {integrity: sha512-hvEJ7yI97pzJuLsDZCYzJgmRxF8kiEJvNZhf0oiZQcexw+Ycjy4wbdsn/sVMURgNCu8rwbAXJdBRyIxM4pe32g==} + semantic-release@24.1.3: + resolution: {integrity: sha512-Cb0Pm3Ye15u8k/B+7EnusMUSIIucAIEBD3QDRmmclv53KVyqmg1Lb3XPx0AMNxfJZEI+ZT+M+IXDyTrudK6Rew==} engines: {node: '>=20.8.1'} hasBin: true @@ -4434,11 +4573,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -4714,6 +4848,10 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinyglobby@0.2.9: + resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} + engines: {node: '>=12.0.0'} + tinypool@1.0.0: resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -4744,12 +4882,6 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-clone-node@3.0.0: - resolution: {integrity: sha512-egavvyHbIoelkgh1IC2agNB1uMNjB8VJgh0g/cn0bg2XXTcrtjrGMzEk4OD3Fi2hocICjP3vMa56nkzIzq0FRg==} - engines: {node: '>=14.9.0'} - peerDependencies: - typescript: ^3.x || ^4.x || ^5.x - ts-declaration-location@1.0.4: resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} peerDependencies: @@ -4786,8 +4918,8 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.16.5: - resolution: {integrity: sha512-ArsiAQHEW2iGaqZ8fTA1nX0a+lN5mNTyuGRRO6OW3H/Yno1y9/t1f9YOI1Cfoqz63VAthn++ZYcbDP7jPflc+A==} + tsx@4.19.1: + resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} engines: {node: '>=18.0.0'} hasBin: true @@ -4795,10 +4927,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} @@ -4839,13 +4967,15 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} hasBin: true - ua-parser-js@1.0.38: - resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} @@ -4921,8 +5051,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vite-node@2.1.1: - resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} + vite-node@2.1.3: + resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -4962,15 +5092,15 @@ packages: terser: optional: true - vitest@2.1.1: - resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} + vitest@2.1.3: + resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.1 - '@vitest/ui': 2.1.1 + '@vitest/browser': 2.1.3 + '@vitest/ui': 2.1.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5064,9 +5194,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml-eslint-parser@1.2.3: resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} engines: {node: ^14.17.0 || >=16.0.0} @@ -5076,6 +5203,11 @@ packages: engines: {node: '>= 14'} hasBin: true + yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -5116,31 +5248,32 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/install-pkg@0.3.3': + '@antfu/install-pkg@0.4.1': dependencies: - '@jsdevtools/ez-spawn': 3.0.4 + package-manager-detector: 0.2.2 + tinyexec: 0.3.0 '@antfu/utils@0.7.10': {} - '@babel/code-frame@7.24.7': + '@babel/code-frame@7.25.7': dependencies: - '@babel/highlight': 7.24.7 + '@babel/highlight': 7.25.7 picocolors: 1.0.1 - '@babel/compat-data@7.25.2': {} + '@babel/compat-data@7.25.8': {} - '@babel/core@7.24.3': + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.3) + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 convert-source-map: 2.0.0 debug: 4.3.6 gensync: 1.0.0-beta.2 @@ -5149,73 +5282,73 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.24.1(@babel/core@7.24.3)(eslint@9.11.1(jiti@1.21.6))': + '@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@9.13.0(jiti@2.3.3))': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/eslint-parser@7.25.1(@babel/core@7.24.3)(eslint@9.11.1(jiti@1.21.6))': + '@babel/eslint-parser@7.25.8(@babel/core@7.25.2)(eslint@9.13.0(jiti@2.3.3))': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/generator@7.25.6': + '@babel/generator@7.25.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.8 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + jsesc: 3.0.2 - '@babel/helper-annotate-as-pure@7.24.7': + '@babel/helper-annotate-as-pure@7.25.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.8 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 transitivePeerDependencies: - supports-color '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.25.8 '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.24.3)': + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.3) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/traverse': 7.25.7 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.24.3)': + '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.7 + regexpu-core: 6.1.1 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.3)': + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.7 debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -5224,735 +5357,755 @@ snapshots: '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.24.3)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.8 - '@babel/helper-plugin-utils@7.24.8': {} + '@babel/helper-plugin-utils@7.25.7': {} - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.24.3)': + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.7 '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.6 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.0(@babel/core@7.24.3)': + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.7': {} - '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.7': {} '@babel/helper-validator-option@7.24.8': {} '@babel/helper-wrap-function@7.25.0': dependencies: - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/template': 7.25.7 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 transitivePeerDependencies: - supports-color '@babel/helpers@7.25.0': dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 - '@babel/highlight@7.24.7': + '@babel/highlight@7.25.7': dependencies: - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/parser@7.25.6': + '@babel/parser@7.25.8': + dependencies: + '@babel/types': 7.25.8 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.2)': dependencies: - '@babel/types': 7.25.6 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.24.3)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.3) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.24.3)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.6 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.3)': + '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.3)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-import-assertions@7.25.6(@babel/core@7.24.3)': + '@babel/plugin-syntax-import-assertions@7.25.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.24.3)': + '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.3)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-async-generator-functions@7.25.4(@babel/core@7.24.3)': + '@babel/plugin-transform-async-generator-functions@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.24.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) - '@babel/traverse': 7.25.6 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.24.3)': + '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-class-properties@7.25.4(@babel/core@7.24.3)': + '@babel/plugin-transform-class-properties@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.4(@babel/core@7.24.3)': + '@babel/plugin-transform-classes@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.7 '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.3) - '@babel/traverse': 7.25.6 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/traverse': 7.25.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/template': 7.25.7 + + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.3)': + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.24.3)': + '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.24.3)': + '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.6 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.24.3)': + '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.3)': + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.24.3)': + '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 + '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.3)': + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-private-methods@7.25.4(@babel/core@7.24.3)': + '@babel/plugin-transform-private-methods@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.3)': + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.7 '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.3) - '@babel/types': 7.25.6 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/types': 7.25.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.3)': + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.3)': + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-sets-regex@7.25.4(@babel/core@7.24.3)': + '@babel/plugin-transform-unicode-sets-regex@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/preset-env@7.24.3(@babel/core@7.24.3)': + '@babel/preset-env@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.24.3 + '@babel/compat-data': 7.25.8 + '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.24.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.24.3) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-import-assertions': 7.25.6(@babel/core@7.24.3) - '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.24.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-async-generator-functions': 7.25.4(@babel/core@7.24.3) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.24.3) - '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.24.3) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-classes': 7.25.4(@babel/core@7.24.3) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.3) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.24.3) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.24.3) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.3) - '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.24.3) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.3) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-private-methods': 7.25.4(@babel/core@7.24.3) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-unicode-sets-regex': 7.25.4(@babel/core@7.24.3) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.3) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.24.3) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.3) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.25.6(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.25.4(@babel/core@7.25.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) core-js-compat: 3.38.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.24.1(@babel/core@7.24.3)': + '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.24.3) + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.3)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.6 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/types': 7.25.8 esutils: 2.0.3 - '@babel/preset-react@7.24.1(@babel/core@7.24.3)': + '@babel/preset-react@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.3) - '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.24.3) - '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.24.3) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/regjsgen@0.8.0': {} - '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.25.0': + '@babel/template@7.25.7': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 - '@babel/traverse@7.25.6': + '@babel/traverse@7.25.7': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.6': + '@babel/types@7.25.8': dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 '@bcoe/v8-coverage@0.2.3': {} @@ -5971,195 +6124,195 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@cspell/cspell-bundled-dicts@8.14.4': - dependencies: - '@cspell/dict-ada': 4.0.2 - '@cspell/dict-aws': 4.0.4 - '@cspell/dict-bash': 4.1.4 - '@cspell/dict-companies': 3.1.4 - '@cspell/dict-cpp': 5.1.16 - '@cspell/dict-cryptocurrencies': 5.0.0 - '@cspell/dict-csharp': 4.0.2 - '@cspell/dict-css': 4.0.13 - '@cspell/dict-dart': 2.2.1 - '@cspell/dict-django': 4.1.0 - '@cspell/dict-docker': 1.1.7 - '@cspell/dict-dotnet': 5.0.5 - '@cspell/dict-elixir': 4.0.3 - '@cspell/dict-en-common-misspellings': 2.0.4 + '@cspell/cspell-bundled-dicts@8.15.4': + dependencies: + '@cspell/dict-ada': 4.0.5 + '@cspell/dict-aws': 4.0.7 + '@cspell/dict-bash': 4.1.8 + '@cspell/dict-companies': 3.1.7 + '@cspell/dict-cpp': 5.1.22 + '@cspell/dict-cryptocurrencies': 5.0.3 + '@cspell/dict-csharp': 4.0.5 + '@cspell/dict-css': 4.0.16 + '@cspell/dict-dart': 2.2.4 + '@cspell/dict-django': 4.1.3 + '@cspell/dict-docker': 1.1.11 + '@cspell/dict-dotnet': 5.0.8 + '@cspell/dict-elixir': 4.0.6 + '@cspell/dict-en-common-misspellings': 2.0.7 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.23 - '@cspell/dict-filetypes': 3.0.4 - '@cspell/dict-flutter': 1.0.0 - '@cspell/dict-fonts': 4.0.0 - '@cspell/dict-fsharp': 1.0.1 - '@cspell/dict-fullstack': 3.2.0 - '@cspell/dict-gaming-terms': 1.0.5 - '@cspell/dict-git': 3.0.0 - '@cspell/dict-golang': 6.0.12 - '@cspell/dict-google': 1.0.1 - '@cspell/dict-haskell': 4.0.1 - '@cspell/dict-html': 4.0.5 - '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.7 - '@cspell/dict-julia': 1.0.1 - '@cspell/dict-k8s': 1.0.6 - '@cspell/dict-latex': 4.0.0 - '@cspell/dict-lorem-ipsum': 4.0.0 - '@cspell/dict-lua': 4.0.3 - '@cspell/dict-makefile': 1.0.0 - '@cspell/dict-monkeyc': 1.0.6 - '@cspell/dict-node': 5.0.1 - '@cspell/dict-npm': 5.1.5 - '@cspell/dict-php': 4.0.10 - '@cspell/dict-powershell': 5.0.9 - '@cspell/dict-public-licenses': 2.0.8 - '@cspell/dict-python': 4.2.6 - '@cspell/dict-r': 2.0.1 - '@cspell/dict-ruby': 5.0.3 - '@cspell/dict-rust': 4.0.5 - '@cspell/dict-scala': 5.0.3 - '@cspell/dict-software-terms': 4.1.3 - '@cspell/dict-sql': 2.1.5 - '@cspell/dict-svelte': 1.0.2 - '@cspell/dict-swift': 2.0.1 - '@cspell/dict-terraform': 1.0.1 - '@cspell/dict-typescript': 3.1.6 - '@cspell/dict-vue': 3.0.0 - - '@cspell/cspell-json-reporter@8.14.4': - dependencies: - '@cspell/cspell-types': 8.14.4 - - '@cspell/cspell-pipe@8.14.4': {} - - '@cspell/cspell-resolver@8.14.4': + '@cspell/dict-en_us': 4.3.26 + '@cspell/dict-filetypes': 3.0.7 + '@cspell/dict-flutter': 1.0.3 + '@cspell/dict-fonts': 4.0.3 + '@cspell/dict-fsharp': 1.0.4 + '@cspell/dict-fullstack': 3.2.3 + '@cspell/dict-gaming-terms': 1.0.8 + '@cspell/dict-git': 3.0.3 + '@cspell/dict-golang': 6.0.16 + '@cspell/dict-google': 1.0.4 + '@cspell/dict-haskell': 4.0.4 + '@cspell/dict-html': 4.0.9 + '@cspell/dict-html-symbol-entities': 4.0.3 + '@cspell/dict-java': 5.0.10 + '@cspell/dict-julia': 1.0.4 + '@cspell/dict-k8s': 1.0.9 + '@cspell/dict-latex': 4.0.3 + '@cspell/dict-lorem-ipsum': 4.0.3 + '@cspell/dict-lua': 4.0.6 + '@cspell/dict-makefile': 1.0.3 + '@cspell/dict-monkeyc': 1.0.9 + '@cspell/dict-node': 5.0.4 + '@cspell/dict-npm': 5.1.8 + '@cspell/dict-php': 4.0.13 + '@cspell/dict-powershell': 5.0.13 + '@cspell/dict-public-licenses': 2.0.11 + '@cspell/dict-python': 4.2.12 + '@cspell/dict-r': 2.0.4 + '@cspell/dict-ruby': 5.0.7 + '@cspell/dict-rust': 4.0.9 + '@cspell/dict-scala': 5.0.6 + '@cspell/dict-software-terms': 4.1.11 + '@cspell/dict-sql': 2.1.8 + '@cspell/dict-svelte': 1.0.5 + '@cspell/dict-swift': 2.0.4 + '@cspell/dict-terraform': 1.0.5 + '@cspell/dict-typescript': 3.1.10 + '@cspell/dict-vue': 3.0.3 + + '@cspell/cspell-json-reporter@8.15.4': + dependencies: + '@cspell/cspell-types': 8.15.4 + + '@cspell/cspell-pipe@8.15.4': {} + + '@cspell/cspell-resolver@8.15.4': dependencies: global-directory: 4.0.1 - '@cspell/cspell-service-bus@8.14.4': {} + '@cspell/cspell-service-bus@8.15.4': {} - '@cspell/cspell-types@8.14.4': {} + '@cspell/cspell-types@8.15.4': {} - '@cspell/dict-ada@4.0.2': {} + '@cspell/dict-ada@4.0.5': {} - '@cspell/dict-aws@4.0.4': {} + '@cspell/dict-aws@4.0.7': {} - '@cspell/dict-bash@4.1.4': {} + '@cspell/dict-bash@4.1.8': {} - '@cspell/dict-companies@3.1.4': {} + '@cspell/dict-companies@3.1.7': {} - '@cspell/dict-cpp@5.1.16': {} + '@cspell/dict-cpp@5.1.22': {} - '@cspell/dict-cryptocurrencies@5.0.0': {} + '@cspell/dict-cryptocurrencies@5.0.3': {} - '@cspell/dict-csharp@4.0.2': {} + '@cspell/dict-csharp@4.0.5': {} - '@cspell/dict-css@4.0.13': {} + '@cspell/dict-css@4.0.16': {} - '@cspell/dict-dart@2.2.1': {} + '@cspell/dict-dart@2.2.4': {} - '@cspell/dict-data-science@2.0.1': {} + '@cspell/dict-data-science@2.0.5': {} - '@cspell/dict-django@4.1.0': {} + '@cspell/dict-django@4.1.3': {} - '@cspell/dict-docker@1.1.7': {} + '@cspell/dict-docker@1.1.11': {} - '@cspell/dict-dotnet@5.0.5': {} + '@cspell/dict-dotnet@5.0.8': {} - '@cspell/dict-elixir@4.0.3': {} + '@cspell/dict-elixir@4.0.6': {} - '@cspell/dict-en-common-misspellings@2.0.4': {} + '@cspell/dict-en-common-misspellings@2.0.7': {} '@cspell/dict-en-gb@1.1.33': {} - '@cspell/dict-en_us@4.3.23': {} + '@cspell/dict-en_us@4.3.26': {} - '@cspell/dict-filetypes@3.0.4': {} + '@cspell/dict-filetypes@3.0.7': {} - '@cspell/dict-flutter@1.0.0': {} + '@cspell/dict-flutter@1.0.3': {} - '@cspell/dict-fonts@4.0.0': {} + '@cspell/dict-fonts@4.0.3': {} - '@cspell/dict-fsharp@1.0.1': {} + '@cspell/dict-fsharp@1.0.4': {} - '@cspell/dict-fullstack@3.2.0': {} + '@cspell/dict-fullstack@3.2.3': {} - '@cspell/dict-gaming-terms@1.0.5': {} + '@cspell/dict-gaming-terms@1.0.8': {} - '@cspell/dict-git@3.0.0': {} + '@cspell/dict-git@3.0.3': {} - '@cspell/dict-golang@6.0.12': {} + '@cspell/dict-golang@6.0.16': {} - '@cspell/dict-google@1.0.1': {} + '@cspell/dict-google@1.0.4': {} - '@cspell/dict-haskell@4.0.1': {} + '@cspell/dict-haskell@4.0.4': {} - '@cspell/dict-html-symbol-entities@4.0.0': {} + '@cspell/dict-html-symbol-entities@4.0.3': {} - '@cspell/dict-html@4.0.5': {} + '@cspell/dict-html@4.0.9': {} - '@cspell/dict-java@5.0.7': {} + '@cspell/dict-java@5.0.10': {} - '@cspell/dict-julia@1.0.1': {} + '@cspell/dict-julia@1.0.4': {} - '@cspell/dict-k8s@1.0.6': {} + '@cspell/dict-k8s@1.0.9': {} - '@cspell/dict-latex@4.0.0': {} + '@cspell/dict-latex@4.0.3': {} - '@cspell/dict-lorem-ipsum@4.0.0': {} + '@cspell/dict-lorem-ipsum@4.0.3': {} - '@cspell/dict-lua@4.0.3': {} + '@cspell/dict-lua@4.0.6': {} - '@cspell/dict-makefile@1.0.0': {} + '@cspell/dict-makefile@1.0.3': {} - '@cspell/dict-monkeyc@1.0.6': {} + '@cspell/dict-monkeyc@1.0.9': {} - '@cspell/dict-node@5.0.1': {} + '@cspell/dict-node@5.0.4': {} - '@cspell/dict-npm@5.1.5': {} + '@cspell/dict-npm@5.1.8': {} - '@cspell/dict-php@4.0.10': {} + '@cspell/dict-php@4.0.13': {} - '@cspell/dict-powershell@5.0.9': {} + '@cspell/dict-powershell@5.0.13': {} - '@cspell/dict-public-licenses@2.0.8': {} + '@cspell/dict-public-licenses@2.0.11': {} - '@cspell/dict-python@4.2.6': + '@cspell/dict-python@4.2.12': dependencies: - '@cspell/dict-data-science': 2.0.1 + '@cspell/dict-data-science': 2.0.5 - '@cspell/dict-r@2.0.1': {} + '@cspell/dict-r@2.0.4': {} - '@cspell/dict-ruby@5.0.3': {} + '@cspell/dict-ruby@5.0.7': {} - '@cspell/dict-rust@4.0.5': {} + '@cspell/dict-rust@4.0.9': {} - '@cspell/dict-scala@5.0.3': {} + '@cspell/dict-scala@5.0.6': {} - '@cspell/dict-software-terms@4.1.3': {} + '@cspell/dict-software-terms@4.1.11': {} - '@cspell/dict-sql@2.1.5': {} + '@cspell/dict-sql@2.1.8': {} - '@cspell/dict-svelte@1.0.2': {} + '@cspell/dict-svelte@1.0.5': {} - '@cspell/dict-swift@2.0.1': {} + '@cspell/dict-swift@2.0.4': {} - '@cspell/dict-terraform@1.0.1': {} + '@cspell/dict-terraform@1.0.5': {} - '@cspell/dict-typescript@3.1.6': {} + '@cspell/dict-typescript@3.1.10': {} - '@cspell/dict-vue@3.0.0': {} + '@cspell/dict-vue@3.0.3': {} - '@cspell/dynamic-import@8.14.4': + '@cspell/dynamic-import@8.15.4': dependencies: import-meta-resolve: 4.1.0 - '@cspell/filetypes@8.14.4': {} + '@cspell/filetypes@8.15.4': {} - '@cspell/strong-weak-map@8.14.4': {} + '@cspell/strong-weak-map@8.15.4': {} - '@cspell/url@8.14.4': {} + '@cspell/url@8.15.4': {} '@dprint/formatter@0.3.0': {} @@ -6167,7 +6320,7 @@ snapshots: '@dprint/toml@0.6.2': {} - '@es-joy/jsdoccomment@0.48.0': + '@es-joy/jsdoccomment@0.49.0': dependencies: comment-parser: 1.4.1 esquery: 1.6.0 @@ -6176,82 +6329,154 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.1': + optional: true + '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.1': + optional: true + '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.1': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.1': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.1': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.1': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.1': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.1': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.1': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.1': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.1': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.1': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.1': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.1': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.1': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.1': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.1': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.1': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.1': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.1': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@1.21.6))': + '@esbuild/win32-x64@0.23.1': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0(jiti@2.3.3))': dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.11.1': {} - '@eslint-community/regexpp@4.11.0': {} - - '@eslint/compat@1.1.1': {} + '@eslint/compat@1.2.1(eslint@9.13.0(jiti@2.3.3))': + optionalDependencies: + eslint: 9.13.0(jiti@2.3.3) '@eslint/config-array@0.18.0': dependencies: @@ -6261,13 +6486,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/core@0.6.0': {} + '@eslint/core@0.7.0': {} '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 debug: 4.3.6 - espree: 10.1.0 + espree: 10.2.0 globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 @@ -6277,7 +6502,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.11.1': {} + '@eslint/js@9.13.0': {} '@eslint/object-schema@2.1.4': {} @@ -6285,9 +6510,16 @@ snapshots: dependencies: levn: 0.4.1 + '@humanfs/core@0.19.0': {} + + '@humanfs/node@0.16.5': + dependencies: + '@humanfs/core': 0.19.0 + '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.0': {} + '@humanwhocodes/retry@0.3.1': {} '@isaacs/cliui@8.0.2': dependencies: @@ -6321,15 +6553,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jsdevtools/ez-spawn@3.0.4': - dependencies: - call-me-maybe: 1.0.2 - cross-spawn: 7.0.3 - string-argv: 0.3.2 - type-detect: 4.1.0 - - '@mdn/browser-compat-data@5.5.43': {} - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: eslint-scope: 5.1.1 @@ -6346,6 +6569,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@nolyfill/is-core-module@1.0.39': {} + '@octokit/auth-token@5.1.1': {} '@octokit/core@6.1.2': @@ -6421,111 +6646,132 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@rebeccastevens/eslint-config@3.0.6(dxw2hww66xx3mqp5zfphxtwxla)': + '@rebeccastevens/eslint-config@3.3.2(i5co6to775frwzdx4xn5wbyc4i)': dependencies: - '@antfu/install-pkg': 0.3.3 + '@antfu/install-pkg': 0.4.1 '@clack/prompts': 0.7.0 - eslint: 9.11.1(jiti@1.21.6) - globals: 15.9.0 + eslint: 9.13.0(jiti@2.3.3) + globals: 15.11.0 local-pkg: 0.5.0 optionalDependencies: - '@stylistic/eslint-plugin': 2.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/parser': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - eslint-config-prettier: 9.1.0(eslint@9.11.1(jiti@1.21.6)) - eslint-flat-config-utils: 0.3.0 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)) - eslint-merge-processors: 0.1.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-format: 0.1.2(eslint@9.11.1(jiti@1.21.6)) + '@stylistic/eslint-plugin': 2.9.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@vitest/eslint-plugin': 1.1.7(@typescript-eslint/utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)(vitest@2.1.3(@types/node@18.19.43)) + eslint-config-prettier: 9.1.0(eslint@9.13.0(jiti@2.3.3)) + eslint-flat-config-utils: 0.4.0 + eslint-formatting-reporter: 0.0.0(eslint@9.13.0(jiti@2.3.3)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)) + eslint-merge-processors: 0.1.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-format: 0.1.2(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-functional: 'link:' - eslint-plugin-import-x: 4.1.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - eslint-plugin-jsdoc: 50.2.2(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-jsonc: 2.16.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-markdown: 5.1.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-n: 17.10.2(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-no-only-tests: 3.1.0 + eslint-plugin-import-x: 4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + eslint-plugin-jsdoc: 50.4.3(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-jsonc: 2.16.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-markdown: 5.1.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-n: 17.11.1(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-optimize-regex: 1.2.1 - eslint-plugin-promise: 7.1.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-regexp: 2.6.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-sonarjs: 2.0.2(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-unicorn: 55.0.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)(vitest@2.1.1(@types/node@18.19.43)) - eslint-plugin-yml: 1.14.0(eslint@9.11.1(jiti@1.21.6)) + eslint-plugin-prettier: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3))(prettier@3.3.3) + eslint-plugin-promise: 7.1.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-regexp: 2.6.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-sonarjs: 2.0.4(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-unicorn: 56.0.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-yml: 1.14.0(eslint@9.13.0(jiti@2.3.3)) jsonc-eslint-parser: 2.4.0 prettier: 3.3.3 - prettier-plugin-packagejson: 2.5.1(prettier@3.3.3) - vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@1.21.6)) + sort-package-json: 2.10.0 + vue-eslint-parser: 9.4.3(eslint@9.13.0(jiti@2.3.3)) yaml-eslint-parser: 1.2.3 - '@rollup/pluginutils@5.1.0(rollup@4.20.0)': + '@rollup/plugin-replace@6.0.1(rollup@4.24.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + magic-string: 0.30.11 + optionalDependencies: + rollup: 4.24.0 + + '@rollup/plugin-typescript@12.1.1(rollup@4.24.0)(tslib@2.6.3)(typescript@5.6.3)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + resolve: 1.22.8 + typescript: 5.6.3 + optionalDependencies: + rollup: 4.24.0 + tslib: 2.6.3 + + '@rollup/pluginutils@5.1.0(rollup@4.24.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.20.0 + rollup: 4.24.0 - '@rollup/rollup-android-arm-eabi@4.20.0': + '@rollup/rollup-android-arm-eabi@4.24.0': optional: true - '@rollup/rollup-android-arm64@4.20.0': + '@rollup/rollup-android-arm64@4.24.0': optional: true - '@rollup/rollup-darwin-arm64@4.20.0': + '@rollup/rollup-darwin-arm64@4.24.0': optional: true - '@rollup/rollup-darwin-x64@4.20.0': + '@rollup/rollup-darwin-x64@4.24.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.20.0': + '@rollup/rollup-linux-arm-musleabihf@4.24.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.20.0': + '@rollup/rollup-linux-arm64-gnu@4.24.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.20.0': + '@rollup/rollup-linux-arm64-musl@4.24.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.20.0': + '@rollup/rollup-linux-riscv64-gnu@4.24.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.20.0': + '@rollup/rollup-linux-s390x-gnu@4.24.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.20.0': + '@rollup/rollup-linux-x64-gnu@4.24.0': optional: true - '@rollup/rollup-linux-x64-musl@4.20.0': + '@rollup/rollup-linux-x64-musl@4.24.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.20.0': + '@rollup/rollup-win32-arm64-msvc@4.24.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.20.0': + '@rollup/rollup-win32-ia32-msvc@4.24.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.20.0': + '@rollup/rollup-win32-x64-msvc@4.24.0': optional: true + '@rtsao/scc@1.1.0': {} + '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@24.1.2(typescript@5.5.4))': + '@semantic-release/changelog@6.0.3(semantic-release@24.1.3(typescript@5.6.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.2.0 lodash: 4.17.21 - semantic-release: 24.1.2(typescript@5.5.4) + semantic-release: 24.1.3(typescript@5.6.3) - '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.1.2(typescript@5.5.4))': + '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.1.3(typescript@5.6.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -6535,7 +6781,7 @@ snapshots: import-from-esm: 1.3.4 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 24.1.2(typescript@5.5.4) + semantic-release: 24.1.3(typescript@5.6.3) transitivePeerDependencies: - supports-color @@ -6543,7 +6789,7 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/git@10.0.1(semantic-release@24.1.2(typescript@5.5.4))': + '@semantic-release/git@10.0.1(semantic-release@24.1.3(typescript@5.6.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 @@ -6553,11 +6799,11 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.1.2(typescript@5.5.4) + semantic-release: 24.1.3(typescript@5.6.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@11.0.0(semantic-release@24.1.2(typescript@5.5.4))': + '@semantic-release/github@11.0.0(semantic-release@24.1.3(typescript@5.6.3))': dependencies: '@octokit/core': 6.1.2 '@octokit/plugin-paginate-rest': 11.3.3(@octokit/core@6.1.2) @@ -6574,12 +6820,12 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 24.1.2(typescript@5.5.4) + semantic-release: 24.1.3(typescript@5.6.3) url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@12.0.1(semantic-release@24.1.2(typescript@5.5.4))': + '@semantic-release/npm@12.0.1(semantic-release@24.1.3(typescript@5.6.3))': dependencies: '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 @@ -6592,11 +6838,11 @@ snapshots: rc: 1.2.8 read-pkg: 9.0.1 registry-auth-token: 5.0.2 - semantic-release: 24.1.2(typescript@5.5.4) + semantic-release: 24.1.3(typescript@5.6.3) semver: 7.6.3 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.0.1(semantic-release@24.1.2(typescript@5.5.4))': + '@semantic-release/release-notes-generator@14.0.1(semantic-release@24.1.3(typescript@5.6.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -6608,7 +6854,7 @@ snapshots: into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.1.2(typescript@5.5.4) + semantic-release: 24.1.3(typescript@5.6.3) transitivePeerDependencies: - supports-color @@ -6626,12 +6872,12 @@ snapshots: ignore: 5.3.1 p-map: 4.0.0 - '@stylistic/eslint-plugin@2.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@stylistic/eslint-plugin@2.9.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + eslint: 9.13.0(jiti@2.3.3) + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 estraverse: 5.3.0 picomatch: 4.0.2 transitivePeerDependencies: @@ -6640,18 +6886,11 @@ snapshots: '@types/dedent@0.7.2': {} - '@types/eslint@8.56.11': - dependencies: - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 - '@types/estree@1.0.5': {} - '@types/estree@1.0.6': {} '@types/json-schema@7.0.15': {} @@ -6662,68 +6901,62 @@ snapshots: dependencies: '@types/unist': 2.0.10 - '@types/node@17.0.45': {} - '@types/node@18.19.43': dependencies: undici-types: 5.26.5 '@types/normalize-package-data@2.4.4': {} - '@types/object-path@0.11.4': {} - '@types/semver@7.5.8': {} - '@types/ua-parser-js@0.7.39': {} - '@types/unist@2.0.10': {} - '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2)': dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) '@typescript-eslint/scope-manager': 7.16.1 - '@typescript-eslint/type-utils': 7.16.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 7.16.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/type-utils': 7.16.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2) + '@typescript-eslint/utils': 7.16.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2) '@typescript-eslint/visitor-keys': 7.16.1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.8.0 - eslint: 9.11.1(jiti@1.21.6) + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/type-utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 + eslint: 9.13.0(jiti@2.3.3) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 debug: 4.3.6 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -6737,36 +6970,31 @@ snapshots: '@typescript-eslint/types': 7.16.1 '@typescript-eslint/visitor-keys': 7.16.1 - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - - '@typescript-eslint/scope-manager@8.8.0': + '@typescript-eslint/scope-manager@8.10.0': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 - '@typescript-eslint/type-utils@7.16.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@7.16.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) - '@typescript-eslint/utils': 7.16.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.6.2) + '@typescript-eslint/utils': 7.16.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2) debug: 4.3.6 - eslint: 9.11.1(jiti@1.21.6) - ts-api-utils: 1.3.0(typescript@5.5.4) + eslint: 9.13.0(jiti@2.3.3) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - eslint - supports-color @@ -6775,11 +7003,9 @@ snapshots: '@typescript-eslint/types@7.16.1': {} - '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.10.0': {} - '@typescript-eslint/types@8.8.0': {} - - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 @@ -6787,13 +7013,13 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 - tsutils: 3.21.0(typescript@5.5.4) + tsutils: 3.21.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.16.1(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@7.16.1(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 7.16.1 '@typescript-eslint/visitor-keys': 7.16.1 @@ -6802,86 +7028,60 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.8.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 debug: 4.3.6 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@5.62.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + eslint: 9.13.0(jiti@2.3.3) eslint-scope: 5.1.1 semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.16.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@7.16.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) '@typescript-eslint/scope-manager': 7.16.1 '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.18.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.6.2) + eslint: 9.13.0(jiti@2.3.3) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + eslint: 9.13.0(jiti@2.3.3) transitivePeerDependencies: - supports-color - typescript @@ -6896,17 +7096,12 @@ snapshots: '@typescript-eslint/types': 7.16.1 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/visitor-keys@8.10.0': dependencies: - '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/types': 8.10.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.8.0': - dependencies: - '@typescript-eslint/types': 8.8.0 - eslint-visitor-keys: 3.4.3 - - '@vitest/coverage-v8@2.1.1(vitest@2.1.1(@types/node@18.19.43))': + '@vitest/coverage-v8@2.1.3(vitest@2.1.3(@types/node@18.19.43))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -6920,52 +7115,58 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.1(@types/node@18.19.43) + vitest: 2.1.3(@types/node@18.19.43) transitivePeerDependencies: - supports-color - '@vitest/expect@2.1.1': + '@vitest/eslint-plugin@1.1.7(@typescript-eslint/utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)(vitest@2.1.3(@types/node@18.19.43))': + dependencies: + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + eslint: 9.13.0(jiti@2.3.3) + optionalDependencies: + typescript: 5.6.3 + vitest: 2.1.3(@types/node@18.19.43) + + '@vitest/expect@2.1.3': dependencies: - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.3.5(@types/node@18.19.43))': + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.3.5(@types/node@18.19.43))': dependencies: - '@vitest/spy': 2.1.1 + '@vitest/spy': 2.1.3 estree-walker: 3.0.3 magic-string: 0.30.11 optionalDependencies: vite: 5.3.5(@types/node@18.19.43) - '@vitest/pretty-format@2.1.1': + '@vitest/pretty-format@2.1.3': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.1': + '@vitest/runner@2.1.3': dependencies: - '@vitest/utils': 2.1.1 + '@vitest/utils': 2.1.3 pathe: 1.1.2 - '@vitest/snapshot@2.1.1': + '@vitest/snapshot@2.1.3': dependencies: - '@vitest/pretty-format': 2.1.1 + '@vitest/pretty-format': 2.1.3 magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@2.1.1': + '@vitest/spy@2.1.3': dependencies: tinyspy: 3.0.0 - '@vitest/utils@2.1.1': + '@vitest/utils@2.1.3': dependencies: - '@vitest/pretty-format': 2.1.1 + '@vitest/pretty-format': 2.1.3 loupe: 3.1.1 tinyrainbow: 1.2.0 - '@wessberg/stringutil@1.0.19': {} - acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 @@ -7006,8 +7207,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-colors@4.1.3: {} - ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -7121,31 +7320,29 @@ snapshots: axe-core@4.10.0: {} - axobject-query@3.1.1: - dependencies: - deep-equal: 2.2.3 + axobject-query@4.1.0: {} - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.3): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.24.3 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.3) + '@babel/compat-data': 7.25.8 + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.24.3): + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.2): dependencies: - '@babel/core': 7.24.3 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) core-js-compat: 3.38.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.3): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): dependencies: - '@babel/core': 7.24.3 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.3) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -7170,19 +7367,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist-generator@2.1.0: - dependencies: - '@mdn/browser-compat-data': 5.5.43 - '@types/object-path': 0.11.4 - '@types/semver': 7.5.8 - '@types/ua-parser-js': 0.7.39 - browserslist: 4.23.3 - caniuse-lite: 1.0.30001646 - isbot: 3.8.0 - object-path: 0.11.8 - semver: 7.6.3 - ua-parser-js: 1.0.38 - browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001646 @@ -7204,8 +7388,6 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - call-me-maybe@1.0.2: {} - callsites@3.1.0: {} caniuse-lite@1.0.30001646: {} @@ -7336,11 +7518,6 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - compatfactory@3.0.0(typescript@5.5.4): - dependencies: - helpertypes: 0.0.19 - typescript: 5.5.4 - concat-map@0.0.1: {} confbox@0.1.7: {} @@ -7378,23 +7555,23 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig@8.3.6(typescript@5.5.4): + cosmiconfig@8.3.6(typescript@5.6.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 - cosmiconfig@9.0.0(typescript@5.5.4): + cosmiconfig@9.0.0(typescript@5.6.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 cross-spawn@7.0.3: dependencies: @@ -7402,67 +7579,63 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crosspath@2.0.0: - dependencies: - '@types/node': 17.0.45 - crypto-random-string@4.0.0: dependencies: type-fest: 1.4.0 - cspell-config-lib@8.14.4: + cspell-config-lib@8.15.4: dependencies: - '@cspell/cspell-types': 8.14.4 + '@cspell/cspell-types': 8.15.4 comment-json: 4.2.5 - yaml: 2.5.1 + yaml: 2.6.0 - cspell-dictionary@8.14.4: + cspell-dictionary@8.15.4: dependencies: - '@cspell/cspell-pipe': 8.14.4 - '@cspell/cspell-types': 8.14.4 - cspell-trie-lib: 8.14.4 + '@cspell/cspell-pipe': 8.15.4 + '@cspell/cspell-types': 8.15.4 + cspell-trie-lib: 8.15.4 fast-equals: 5.0.1 - cspell-gitignore@8.14.4: + cspell-gitignore@8.15.4: dependencies: - '@cspell/url': 8.14.4 - cspell-glob: 8.14.4 - cspell-io: 8.14.4 + '@cspell/url': 8.15.4 + cspell-glob: 8.15.4 + cspell-io: 8.15.4 find-up-simple: 1.0.0 - cspell-glob@8.14.4: + cspell-glob@8.15.4: dependencies: - '@cspell/url': 8.14.4 + '@cspell/url': 8.15.4 micromatch: 4.0.8 - cspell-grammar@8.14.4: + cspell-grammar@8.15.4: dependencies: - '@cspell/cspell-pipe': 8.14.4 - '@cspell/cspell-types': 8.14.4 + '@cspell/cspell-pipe': 8.15.4 + '@cspell/cspell-types': 8.15.4 - cspell-io@8.14.4: + cspell-io@8.15.4: dependencies: - '@cspell/cspell-service-bus': 8.14.4 - '@cspell/url': 8.14.4 + '@cspell/cspell-service-bus': 8.15.4 + '@cspell/url': 8.15.4 - cspell-lib@8.14.4: + cspell-lib@8.15.4: dependencies: - '@cspell/cspell-bundled-dicts': 8.14.4 - '@cspell/cspell-pipe': 8.14.4 - '@cspell/cspell-resolver': 8.14.4 - '@cspell/cspell-types': 8.14.4 - '@cspell/dynamic-import': 8.14.4 - '@cspell/filetypes': 8.14.4 - '@cspell/strong-weak-map': 8.14.4 - '@cspell/url': 8.14.4 + '@cspell/cspell-bundled-dicts': 8.15.4 + '@cspell/cspell-pipe': 8.15.4 + '@cspell/cspell-resolver': 8.15.4 + '@cspell/cspell-types': 8.15.4 + '@cspell/dynamic-import': 8.15.4 + '@cspell/filetypes': 8.15.4 + '@cspell/strong-weak-map': 8.15.4 + '@cspell/url': 8.15.4 clear-module: 4.1.2 comment-json: 4.2.5 - cspell-config-lib: 8.14.4 - cspell-dictionary: 8.14.4 - cspell-glob: 8.14.4 - cspell-grammar: 8.14.4 - cspell-io: 8.14.4 - cspell-trie-lib: 8.14.4 + cspell-config-lib: 8.15.4 + cspell-dictionary: 8.15.4 + cspell-glob: 8.15.4 + cspell-grammar: 8.15.4 + cspell-io: 8.15.4 + cspell-trie-lib: 8.15.4 env-paths: 3.0.0 fast-equals: 5.0.1 gensequence: 7.0.0 @@ -7472,33 +7645,32 @@ snapshots: vscode-uri: 3.0.8 xdg-basedir: 5.1.0 - cspell-trie-lib@8.14.4: + cspell-trie-lib@8.15.4: dependencies: - '@cspell/cspell-pipe': 8.14.4 - '@cspell/cspell-types': 8.14.4 + '@cspell/cspell-pipe': 8.15.4 + '@cspell/cspell-types': 8.15.4 gensequence: 7.0.0 - cspell@8.14.4: + cspell@8.15.4: dependencies: - '@cspell/cspell-json-reporter': 8.14.4 - '@cspell/cspell-pipe': 8.14.4 - '@cspell/cspell-types': 8.14.4 - '@cspell/dynamic-import': 8.14.4 - '@cspell/url': 8.14.4 + '@cspell/cspell-json-reporter': 8.15.4 + '@cspell/cspell-pipe': 8.15.4 + '@cspell/cspell-types': 8.15.4 + '@cspell/dynamic-import': 8.15.4 + '@cspell/url': 8.15.4 chalk: 5.3.0 chalk-template: 1.1.0 commander: 12.1.0 - cspell-dictionary: 8.14.4 - cspell-gitignore: 8.14.4 - cspell-glob: 8.14.4 - cspell-io: 8.14.4 - cspell-lib: 8.14.4 - fast-glob: 3.3.2 + cspell-dictionary: 8.15.4 + cspell-gitignore: 8.15.4 + cspell-glob: 8.15.4 + cspell-io: 8.15.4 + cspell-lib: 8.15.4 fast-json-stable-stringify: 2.1.0 file-entry-cache: 9.1.0 get-stdin: 9.0.0 semver: 7.6.3 - strip-ansi: 7.1.0 + tinyglobby: 0.2.9 damerau-levenshtein@1.0.8: {} @@ -7520,14 +7692,11 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.1 - deassert@1.0.2(rollup@4.20.0): + deassert@1.3.2: dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.20.0) acorn: 8.12.1 acorn-walk: 8.3.3 magic-string: 0.30.11 - transitivePeerDependencies: - - rollup debug@3.2.7: dependencies: @@ -7566,7 +7735,7 @@ snapshots: deep-is@0.1.4: {} - deepmerge-ts@7.1.0: {} + deepmerge-ts@7.1.3: {} deepmerge@4.3.1: {} @@ -7587,9 +7756,11 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - detect-indent@7.0.1: {} + detect-indent@7.0.1: + optional: true - detect-newline@4.0.1: {} + detect-newline@4.0.1: + optional: true diff-sequences@29.6.3: {} @@ -7613,6 +7784,11 @@ snapshots: dependencies: type-fest: 2.19.0 + dts-bundle-generator@9.2.1: + dependencies: + typescript: 5.6.3 + yargs: 17.7.2 + duplexer2@0.1.4: dependencies: readable-stream: 2.3.8 @@ -7789,6 +7965,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + escalade@3.1.2: {} escape-string-regexp@1.0.5: {} @@ -7797,25 +8000,25 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.11.1(jiti@1.21.6)): + eslint-compat-utils@0.5.1(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) semver: 7.6.3 - eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@1.21.6)): + eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) - eslint-doc-generator@1.7.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4): + eslint-doc-generator@1.7.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 5.62.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) ajv: 8.17.1 boolean: 3.2.0 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.5.4) + cosmiconfig: 8.3.6(typescript@5.6.3) deepmerge: 4.3.1 dot-prop: 7.2.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) jest-diff: 29.7.0 json-schema-traverse: 1.0.0 markdown-table: 3.0.3 @@ -7825,95 +8028,96 @@ snapshots: - supports-color - typescript - eslint-flat-config-utils@0.3.0: + eslint-flat-config-utils@0.4.0: dependencies: - '@types/eslint': 9.6.1 pathe: 1.1.2 - eslint-formatting-reporter@0.0.0(eslint@9.11.1(jiti@1.21.6)): + eslint-formatting-reporter@0.0.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) prettier-linter-helpers: 1.0.0 eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.15.0 + is-core-module: 2.15.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)): dependencies: + '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.17.1 - eslint: 9.11.1(jiti@1.21.6) - eslint-module-utils: 2.8.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.13.0(jiti@2.3.3) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) fast-glob: 3.3.2 get-tsconfig: 4.7.6 - is-core-module: 2.15.0 + is-bun-module: 1.2.1 is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-import-x: 4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-merge-processors@0.1.0(eslint@9.11.1(jiti@1.21.6)): + eslint-merge-processors@0.1.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) - eslint-module-utils@2.8.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + eslint: 9.13.0(jiti@2.3.3) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)) transitivePeerDependencies: - supports-color eslint-parser-plain@0.1.0: {} - eslint-plugin-es-x@7.8.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-es-x@7.8.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - '@eslint-community/regexpp': 4.11.0 - eslint: 9.11.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) + '@eslint-community/regexpp': 4.11.1 + eslint: 9.13.0(jiti@2.3.3) + eslint-compat-utils: 0.5.1(eslint@9.13.0(jiti@2.3.3)) - eslint-plugin-eslint-comments@3.2.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-eslint-comments@3.2.0(eslint@9.13.0(jiti@2.3.3)): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) ignore: 5.3.1 - eslint-plugin-eslint-plugin@6.2.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-eslint-plugin@6.2.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - eslint: 9.11.1(jiti@1.21.6) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) + eslint: 9.13.0(jiti@2.3.3) estraverse: 5.3.0 - eslint-plugin-format@0.1.2(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-format@0.1.2(eslint@9.13.0(jiti@2.3.3)): dependencies: '@dprint/formatter': 0.3.0 '@dprint/markdown': 0.17.2 '@dprint/toml': 0.6.2 - eslint: 9.11.1(jiti@1.21.6) - eslint-formatting-reporter: 0.0.0(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.13.0(jiti@2.3.3) + eslint-formatting-reporter: 0.0.0(eslint@9.13.0(jiti@2.3.3)) eslint-parser-plain: 0.1.0 prettier: 3.3.3 synckit: 0.9.1 - eslint-plugin-import-x@4.1.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4): + eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3): dependencies: - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) debug: 4.3.6 doctrine: 3.0.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.6 is-glob: 4.0.3 @@ -7925,19 +8129,20 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)): dependencies: + '@rtsao/scc': 1.1.0 array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) hasown: 2.0.2 - is-core-module: 2.15.0 + is-core-module: 2.15.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 @@ -7946,21 +8151,21 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@50.2.2(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-jsdoc@50.4.3(eslint@9.13.0(jiti@2.3.3)): dependencies: - '@es-joy/jsdoccomment': 0.48.0 + '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.6 escape-string-regexp: 4.0.0 - eslint: 9.11.1(jiti@1.21.6) - espree: 10.1.0 + eslint: 9.13.0(jiti@2.3.3) + espree: 10.2.0 esquery: 1.6.0 parse-imports: 2.1.1 semver: 7.6.3 @@ -7969,29 +8174,29 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.16.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-jsonc@2.16.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - eslint: 9.11.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) + eslint: 9.13.0(jiti@2.3.3) + eslint-compat-utils: 0.5.1(eslint@9.13.0(jiti@2.3.3)) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 synckit: 0.6.2 - eslint-plugin-jsx-a11y@6.9.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-jsx-a11y@6.10.0(eslint@9.13.0(jiti@2.3.3)): dependencies: aria-query: 5.1.3 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 axe-core: 4.10.0 - axobject-query: 3.1.1 + axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -8000,40 +8205,50 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - eslint-plugin-markdown@5.1.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-markdown@5.1.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.10.2(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-n@17.11.1(eslint@9.13.0(jiti@2.3.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) enhanced-resolve: 5.17.1 - eslint: 9.11.1(jiti@1.21.6) - eslint-plugin-es-x: 7.8.0(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.13.0(jiti@2.3.3) + eslint-plugin-es-x: 7.8.0(eslint@9.13.0(jiti@2.3.3)) get-tsconfig: 4.7.6 - globals: 15.9.0 + globals: 15.11.0 ignore: 5.3.1 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-no-only-tests@3.1.0: {} + eslint-plugin-no-only-tests@3.3.0: {} eslint-plugin-optimize-regex@1.2.1: dependencies: regexp-tree: 0.1.27 - eslint-plugin-promise@7.1.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3))(prettier@3.3.3): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.1 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 9.1.0(eslint@9.13.0(jiti@2.3.3)) + + eslint-plugin-promise@7.1.0(eslint@9.13.0(jiti@2.3.3)): + dependencies: + eslint: 9.13.0(jiti@2.3.3) - eslint-plugin-react-hooks@4.6.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-react-hooks@4.6.2(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) - eslint-plugin-react@7.35.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-react@7.36.1(eslint@9.13.0(jiti@2.3.3)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -8041,7 +8256,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -8055,59 +8270,59 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-regexp@2.6.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-regexp@2.6.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) + '@eslint-community/regexpp': 4.11.1 comment-parser: 1.4.1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-sonarjs@2.0.2(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): - dependencies: - '@babel/core': 7.24.3 - '@babel/eslint-parser': 7.24.1(@babel/core@7.24.3)(eslint@9.11.1(jiti@1.21.6)) - '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.3) - '@babel/preset-env': 7.24.3(@babel/core@7.24.3) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.3) - '@babel/preset-react': 7.24.1(@babel/core@7.24.3) - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-sonarjs@2.0.4(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)): + dependencies: + '@babel/core': 7.25.2 + '@babel/eslint-parser': 7.25.1(@babel/core@7.25.2)(eslint@9.13.0(jiti@2.3.3)) + '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) + '@babel/preset-env': 7.25.4(@babel/core@7.25.2) + '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) + '@babel/preset-react': 7.24.7(@babel/core@7.25.2) + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2) + '@typescript-eslint/utils': 7.16.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.2) builtin-modules: 3.3.0 bytes: 3.1.2 - eslint: 9.11.1(jiti@1.21.6) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-jsx-a11y: 6.9.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-react: 7.35.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-react-hooks: 4.6.0(eslint@9.11.1(jiti@1.21.6)) - eslint-scope: 8.0.1 + eslint: 9.13.0(jiti@2.3.3) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint-plugin-import@2.30.0)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-react: 7.36.1(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-react-hooks: 4.6.2(eslint@9.13.0(jiti@2.3.3)) + eslint-scope: 8.1.0 functional-red-black-tree: 1.0.1 jsx-ast-utils: 3.3.5 - minimatch: 9.0.5 + minimatch: 10.0.1 scslre: 0.3.0 - semver: 7.6.0 - typescript: 5.5.4 - vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@1.21.6)) + semver: 7.6.3 + typescript: 5.6.2 + vue-eslint-parser: 9.4.3(eslint@9.13.0(jiti@2.3.3)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-unicorn@55.0.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-unicorn@56.0.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@babel/helper-validator-identifier': 7.25.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.38.1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) esquery: 1.6.0 - globals: 15.9.0 + globals: 15.11.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 @@ -8118,22 +8333,11 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)(vitest@2.1.1(@types/node@18.19.43)): - dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - vitest: 2.1.1(@types/node@18.19.43) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-yml@1.14.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-yml@1.14.0(eslint@9.13.0(jiti@2.3.3)): dependencies: debug: 4.3.6 - eslint: 9.11.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.13.0(jiti@2.3.3) + eslint-compat-utils: 0.5.1(eslint@9.13.0(jiti@2.3.3)) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.3 @@ -8150,12 +8354,7 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.0.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@8.0.2: + eslint-scope@8.1.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -8164,31 +8363,31 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.0.0: {} + eslint-visitor-keys@4.1.0: {} - eslint-vitest-rule-tester@0.3.3(patch_hash=wjur6dtc3pi5ag5ibkjvm56goy)(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)(vitest@2.1.1(@types/node@18.19.43)): + eslint-vitest-rule-tester@0.6.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)(vitest@2.1.3(@types/node@18.19.43)): dependencies: '@antfu/utils': 0.7.10 - '@types/eslint': 8.56.11 - '@typescript-eslint/utils': 7.18.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) - vitest: 2.1.1(@types/node@18.19.43) + '@types/eslint': 9.6.1 + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + eslint: 9.13.0(jiti@2.3.3) + vitest: 2.1.3(@types/node@18.19.43) transitivePeerDependencies: - supports-color - typescript - eslint@9.11.1(jiti@1.21.6): + eslint@9.13.0(jiti@2.3.3): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) + '@eslint-community/regexpp': 4.11.1 '@eslint/config-array': 0.18.0 - '@eslint/core': 0.6.0 + '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.11.1 + '@eslint/js': 9.13.0 '@eslint/plugin-kit': 0.2.0 + '@humanfs/node': 0.16.5 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 + '@humanwhocodes/retry': 0.3.1 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -8196,9 +8395,9 @@ snapshots: cross-spawn: 7.0.3 debug: 4.3.6 escape-string-regexp: 4.0.0 - eslint-scope: 8.0.2 - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 + eslint-scope: 8.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -8208,24 +8407,22 @@ snapshots: ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.6 + jiti: 2.3.3 transitivePeerDependencies: - supports-color - espree@10.1.0: + espree@10.2.0: dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 + eslint-visitor-keys: 4.1.0 espree@9.6.1: dependencies: @@ -8320,6 +8517,10 @@ snapshots: dependencies: reusify: 1.0.4 + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + figures@2.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -8454,7 +8655,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - git-hooks-list@3.1.0: {} + git-hooks-list@3.1.0: + optional: true git-log-parser@1.2.1: dependencies: @@ -8507,7 +8709,7 @@ snapshots: globals@14.0.0: {} - globals@15.9.0: {} + globals@15.11.0: {} globalthis@1.0.4: dependencies: @@ -8530,15 +8732,7 @@ snapshots: ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 - - globby@14.0.1: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.1 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 + optional: true globby@14.0.2: dependencies: @@ -8594,8 +8788,6 @@ snapshots: dependencies: function-bind: 1.1.2 - helpertypes@0.0.19: {} - highlight.js@10.7.3: {} hook-std@3.0.0: {} @@ -8632,7 +8824,7 @@ snapshots: human-signals@7.0.0: {} - husky@9.1.4: {} + husky@9.1.6: {} ignore@5.3.1: {} @@ -8716,9 +8908,13 @@ snapshots: dependencies: builtin-modules: 3.3.0 + is-bun-module@1.2.1: + dependencies: + semver: 7.6.3 + is-callable@1.2.7: {} - is-core-module@2.15.0: + is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -8756,13 +8952,13 @@ snapshots: is-hexadecimal@1.0.4: {} - is-immutable-type@5.0.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4): + is-immutable-type@5.0.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3): dependencies: - '@typescript-eslint/type-utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.11.1(jiti@1.21.6) - ts-api-utils: 1.3.0(typescript@5.5.4) - ts-declaration-location: 1.0.4(typescript@5.5.4) - typescript: 5.5.4 + '@typescript-eslint/type-utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + eslint: 9.13.0(jiti@2.3.3) + ts-api-utils: 1.3.0(typescript@5.6.3) + ts-declaration-location: 1.0.4(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -8778,8 +8974,6 @@ snapshots: is-obj@2.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@4.1.0: {} is-regex@1.1.4: @@ -8828,8 +9022,6 @@ snapshots: isarray@2.0.5: {} - isbot@3.8.0: {} - isexe@2.0.0: {} issue-parser@7.0.1: @@ -8892,7 +9084,7 @@ snapshots: jest-get-type@29.6.3: {} - jiti@1.21.6: {} + jiti@2.3.3: {} js-tokens@4.0.0: {} @@ -8904,8 +9096,6 @@ snapshots: jsesc@0.5.0: {} - jsesc@2.5.2: {} - jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -8933,7 +9123,7 @@ snapshots: espree: 9.6.1 semver: 7.6.3 - jsonc-parser@3.2.1: {} + jsonc-parser@3.3.1: {} jsonfile@6.1.0: dependencies: @@ -8952,7 +9142,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - knip@5.27.1(@types/node@18.19.43)(typescript@5.5.4): + knip@5.33.3(@types/node@18.19.43)(typescript@5.6.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 @@ -8960,7 +9150,7 @@ snapshots: easy-table: 1.2.0 enhanced-resolve: 5.17.1 fast-glob: 3.3.2 - jiti: 1.21.6 + jiti: 2.3.3 js-yaml: 4.1.0 minimist: 1.2.8 picocolors: 1.0.1 @@ -8969,7 +9159,7 @@ snapshots: smol-toml: 1.3.0 strip-json-comments: 5.0.1 summary: 2.1.0 - typescript: 5.5.4 + typescript: 5.6.3 zod: 3.22.4 zod-validation-error: 3.0.3(zod@3.22.4) @@ -8992,7 +9182,7 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@15.2.8: + lint-staged@15.2.10: dependencies: chalk: 5.3.0 commander: 12.1.0 @@ -9087,18 +9277,14 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 magicast@0.3.4: dependencies: - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 source-map-js: 1.2.0 make-dir@4.0.0: @@ -9116,25 +9302,25 @@ snapshots: markdown-table@3.0.3: {} - markdownlint-cli2-formatter-default@0.0.4(markdownlint-cli2@0.13.0): + markdownlint-cli2-formatter-default@0.0.5(markdownlint-cli2@0.14.0): dependencies: - markdownlint-cli2: 0.13.0 + markdownlint-cli2: 0.14.0 - markdownlint-cli2@0.13.0: + markdownlint-cli2@0.14.0: dependencies: - globby: 14.0.1 + globby: 14.0.2 js-yaml: 4.1.0 - jsonc-parser: 3.2.1 - markdownlint: 0.34.0 - markdownlint-cli2-formatter-default: 0.0.4(markdownlint-cli2@0.13.0) - micromatch: 4.0.5 + jsonc-parser: 3.3.1 + markdownlint: 0.35.0 + markdownlint-cli2-formatter-default: 0.0.5(markdownlint-cli2@0.14.0) + micromatch: 4.0.8 - markdownlint-micromark@0.1.9: {} + markdownlint-micromark@0.1.10: {} - markdownlint@0.34.0: + markdownlint@0.35.0: dependencies: markdown-it: 14.1.0 - markdownlint-micromark: 0.1.9 + markdownlint-micromark: 0.1.10 marked-terminal@7.1.0(marked@12.0.2): dependencies: @@ -9175,11 +9361,6 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.5: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -9290,8 +9471,6 @@ snapshots: object-keys@1.1.1: {} - object-path@0.11.8: {} - object.assign@4.1.5: dependencies: call-bind: 1.0.7 @@ -9397,6 +9576,8 @@ snapshots: package-json-from-dist@1.0.0: {} + package-manager-detector@0.2.2: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -9426,14 +9607,14 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.25.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-json@8.1.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.25.7 index-to-position: 0.1.2 type-fest: 4.23.0 @@ -9512,13 +9693,6 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-packagejson@2.5.1(prettier@3.3.3): - dependencies: - sort-package-json: 2.10.0 - synckit: 0.9.1 - optionalDependencies: - prettier: 3.3.3 - prettier@3.3.3: {} pretty-format@29.7.0: @@ -9597,7 +9771,7 @@ snapshots: refa@0.12.1: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 reflect.getprototypeof@1.0.6: dependencies: @@ -9609,7 +9783,7 @@ snapshots: globalthis: 1.0.4 which-builtin-type: 1.1.4 - regenerate-unicode-properties@10.1.1: + regenerate-unicode-properties@10.2.0: dependencies: regenerate: 1.4.2 @@ -9623,7 +9797,7 @@ snapshots: regexp-ast-analysis@0.7.1: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 refa: 0.12.1 regexp-tree@0.1.27: {} @@ -9635,12 +9809,12 @@ snapshots: es-errors: 1.3.0 set-function-name: 2.0.2 - regexpu-core@5.3.2: + regexpu-core@6.1.1: dependencies: - '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.11.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 @@ -9648,13 +9822,15 @@ snapshots: dependencies: '@pnpm/npm-conf': 2.2.2 + regjsgen@0.8.0: {} + regjsparser@0.10.0: dependencies: jsesc: 0.5.0 - regjsparser@0.9.1: + regjsparser@0.11.1: dependencies: - jsesc: 0.5.0 + jsesc: 3.0.2 repeat-string@1.6.1: {} @@ -9676,13 +9852,13 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.15.0 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.15.0 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -9700,45 +9876,42 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.0 - rollup-plugin-ts@3.4.5(@babel/core@7.24.3)(@babel/preset-env@7.24.3(@babel/core@7.24.3))(@babel/runtime@7.25.6)(rollup@4.20.0)(typescript@5.5.4): + rollup-plugin-deassert@1.3.0(acorn@8.12.1)(rollup@4.24.0): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.20.0) - '@wessberg/stringutil': 1.0.19 - ansi-colors: 4.1.3 - browserslist: 4.23.3 - browserslist-generator: 2.1.0 - compatfactory: 3.0.0(typescript@5.5.4) - crosspath: 2.0.0 - magic-string: 0.30.11 - rollup: 4.20.0 - ts-clone-node: 3.0.0(typescript@5.5.4) - tslib: 2.6.3 - typescript: 5.5.4 + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + acorn: 8.12.1 + deassert: 1.3.2 + rollup: 4.24.0 + + rollup-plugin-dts-bundle-generator@1.4.0: + dependencies: + dts-bundle-generator: 9.2.1 + rollup: 2.79.2 + + rollup@2.79.2: optionalDependencies: - '@babel/core': 7.24.3 - '@babel/preset-env': 7.24.3(@babel/core@7.24.3) - '@babel/runtime': 7.25.6 + fsevents: 2.3.3 - rollup@4.20.0: + rollup@4.24.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.20.0 - '@rollup/rollup-android-arm64': 4.20.0 - '@rollup/rollup-darwin-arm64': 4.20.0 - '@rollup/rollup-darwin-x64': 4.20.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 - '@rollup/rollup-linux-arm-musleabihf': 4.20.0 - '@rollup/rollup-linux-arm64-gnu': 4.20.0 - '@rollup/rollup-linux-arm64-musl': 4.20.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 - '@rollup/rollup-linux-riscv64-gnu': 4.20.0 - '@rollup/rollup-linux-s390x-gnu': 4.20.0 - '@rollup/rollup-linux-x64-gnu': 4.20.0 - '@rollup/rollup-linux-x64-musl': 4.20.0 - '@rollup/rollup-win32-arm64-msvc': 4.20.0 - '@rollup/rollup-win32-ia32-msvc': 4.20.0 - '@rollup/rollup-win32-x64-msvc': 4.20.0 + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -9762,26 +9935,26 @@ snapshots: scslre@0.3.0: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 refa: 0.12.1 regexp-ast-analysis: 0.7.1 - semantic-release-replace-plugin@1.2.7(semantic-release@24.1.2(typescript@5.5.4)): + semantic-release-replace-plugin@1.2.7(semantic-release@24.1.3(typescript@5.6.3)): dependencies: jest-diff: 29.7.0 lodash-es: 4.17.21 replace-in-file: 7.2.0 - semantic-release: 24.1.2(typescript@5.5.4) + semantic-release: 24.1.3(typescript@5.6.3) - semantic-release@24.1.2(typescript@5.5.4): + semantic-release@24.1.3(typescript@5.6.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.0(semantic-release@24.1.2(typescript@5.5.4)) + '@semantic-release/commit-analyzer': 13.0.0(semantic-release@24.1.3(typescript@5.6.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 11.0.0(semantic-release@24.1.2(typescript@5.5.4)) - '@semantic-release/npm': 12.0.1(semantic-release@24.1.2(typescript@5.5.4)) - '@semantic-release/release-notes-generator': 14.0.1(semantic-release@24.1.2(typescript@5.5.4)) + '@semantic-release/github': 11.0.0(semantic-release@24.1.3(typescript@5.6.3)) + '@semantic-release/npm': 12.0.1(semantic-release@24.1.3(typescript@5.6.3)) + '@semantic-release/release-notes-generator': 14.0.1(semantic-release@24.1.3(typescript@5.6.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.3) debug: 4.3.6 env-ci: 11.0.0 execa: 9.3.0 @@ -9818,10 +9991,6 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - semver@7.6.3: {} set-function-length@1.2.2: @@ -9873,7 +10042,8 @@ snapshots: slash@3.0.0: {} - slash@4.0.0: {} + slash@4.0.0: + optional: true slash@5.1.0: {} @@ -9891,7 +10061,8 @@ snapshots: smol-toml@1.3.0: {} - sort-object-keys@1.1.3: {} + sort-object-keys@1.1.3: + optional: true sort-package-json@2.10.0: dependencies: @@ -9903,6 +10074,7 @@ snapshots: is-plain-obj: 4.1.0 semver: 7.6.3 sort-object-keys: 1.1.3 + optional: true source-map-js@1.2.0: {} @@ -10113,6 +10285,11 @@ snapshots: tinyexec@0.3.0: {} + tinyglobby@0.2.9: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + tinypool@1.0.0: {} tinyrainbow@1.2.0: {} @@ -10127,27 +10304,26 @@ snapshots: traverse@0.6.8: {} - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: - typescript: 5.5.4 + typescript: 5.6.2 - ts-clone-node@3.0.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.6.3): dependencies: - compatfactory: 3.0.0(typescript@5.5.4) - typescript: 5.5.4 + typescript: 5.6.3 - ts-declaration-location@1.0.4(typescript@5.5.4): + ts-declaration-location@1.0.4(typescript@5.6.3): dependencies: minimatch: 10.0.1 - typescript: 5.5.4 + typescript: 5.6.3 - tsc-files@1.1.4(typescript@5.5.4): + tsc-files@1.1.4(typescript@5.6.3): dependencies: - typescript: 5.5.4 + typescript: 5.6.3 - tsconfck@3.1.1(typescript@5.5.4): + tsconfck@3.1.1(typescript@5.6.3): optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 tsconfig-paths@3.15.0: dependencies: @@ -10160,14 +10336,14 @@ snapshots: tslib@2.6.3: {} - tsutils@3.21.0(typescript@5.5.4): + tsutils@3.21.0(typescript@5.6.3): dependencies: tslib: 1.14.1 - typescript: 5.5.4 + typescript: 5.6.3 - tsx@4.16.5: + tsx@4.19.1: dependencies: - esbuild: 0.21.5 + esbuild: 0.23.1 get-tsconfig: 4.7.6 optionalDependencies: fsevents: 2.3.3 @@ -10176,8 +10352,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.1.0: {} - type-fest@0.6.0: {} type-fest@0.8.1: {} @@ -10222,9 +10396,9 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript@5.5.4: {} + typescript@5.6.2: {} - ua-parser-js@1.0.38: {} + typescript@5.6.3: {} uc.micro@2.1.0: {} @@ -10288,7 +10462,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-node@2.1.1(@types/node@18.19.43): + vite-node@2.1.3(@types/node@18.19.43): dependencies: cac: 6.7.14 debug: 4.3.6 @@ -10304,11 +10478,11 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.0.1(typescript@5.5.4)(vite@5.3.5(@types/node@18.19.43)): + vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.3.5(@types/node@18.19.43)): dependencies: debug: 4.3.6 globrex: 0.1.2 - tsconfck: 3.1.1(typescript@5.5.4) + tsconfck: 3.1.1(typescript@5.6.3) optionalDependencies: vite: 5.3.5(@types/node@18.19.43) transitivePeerDependencies: @@ -10319,20 +10493,20 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.40 - rollup: 4.20.0 + rollup: 4.24.0 optionalDependencies: '@types/node': 18.19.43 fsevents: 2.3.3 - vitest@2.1.1(@types/node@18.19.43): + vitest@2.1.3(@types/node@18.19.43): dependencies: - '@vitest/expect': 2.1.1 - '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.3.5(@types/node@18.19.43)) - '@vitest/pretty-format': 2.1.1 - '@vitest/runner': 2.1.1 - '@vitest/snapshot': 2.1.1 - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.3.5(@types/node@18.19.43)) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 chai: 5.1.1 debug: 4.3.6 magic-string: 0.30.11 @@ -10343,7 +10517,7 @@ snapshots: tinypool: 1.0.0 tinyrainbow: 1.2.0 vite: 5.3.5(@types/node@18.19.43) - vite-node: 2.1.1(@types/node@18.19.43) + vite-node: 2.1.3(@types/node@18.19.43) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.43 @@ -10361,10 +10535,10 @@ snapshots: vscode-uri@3.0.8: {} - vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@1.21.6)): + vue-eslint-parser@9.4.3(eslint@9.13.0(jiti@2.3.3)): dependencies: debug: 4.3.6 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.13.0(jiti@2.3.3) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -10458,16 +10632,16 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - yaml-eslint-parser@1.2.3: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 - yaml: 2.5.1 + yaml: 2.6.0 yaml@2.5.1: {} + yaml@2.6.0: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} diff --git a/rollup.config.ts b/rollup.config.ts index da25c914d..53e672b74 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -1,15 +1,22 @@ -import { rollupPlugin as rollupPluginDeassert } from "deassert"; +import rollupPluginReplace from "@rollup/plugin-replace"; +import rollupPluginTypescript from "@rollup/plugin-typescript"; import type { RollupOptions } from "rollup"; -import rollupPluginTs from "rollup-plugin-ts"; +import rollupPluginDeassert from "rollup-plugin-deassert"; +import { generateDtsBundle } from "rollup-plugin-dts-bundle-generator"; -import pkg from "./package.json" assert { type: "json" }; +import pkg from "./package.json" with { type: "json" }; + +type PackageJSON = typeof pkg & { + dependencies?: Record; + peerDependencies?: Record; +}; const externalDependencies = [ - ...Object.keys(pkg.dependencies ?? {}), - ...Object.keys(pkg.peerDependencies ?? {}), + ...Object.keys((pkg as PackageJSON).dependencies ?? {}), + ...Object.keys((pkg as PackageJSON).peerDependencies ?? {}), ]; -const esm = { +export default { input: "src/index.ts", output: { @@ -19,13 +26,26 @@ const esm = { generatedCode: { preset: "es2015", }, + plugins: [ + generateDtsBundle({ + compilation: { + preferredConfigPath: "tsconfig.build.types.json", + }, + outFile: pkg.exports.types, + }) as any, + ], }, plugins: [ - rollupPluginTs({ - transpileOnly: true, + rollupPluginTypescript({ tsconfig: "tsconfig.build.json", }), + rollupPluginReplace({ + values: { + "import.meta.vitest": "undefined", + }, + preventAssignment: true, + }), rollupPluginDeassert({ include: ["**/*.{js,ts}"], }), @@ -39,14 +59,9 @@ const esm = { }, external: (source) => { - if ( - source.startsWith("node:") || - externalDependencies.some((dep) => source.startsWith(dep)) - ) { + if (source.startsWith("node:") || externalDependencies.some((dep) => source.startsWith(dep))) { return true; } return undefined; }, } satisfies RollupOptions; - -export default [esm] as RollupOptions[]; diff --git a/src/configs/all.ts b/src/configs/all.ts index d96fafa1b..b5e435baa 100644 --- a/src/configs/all.ts +++ b/src/configs/all.ts @@ -7,11 +7,6 @@ export default { ...Object.fromEntries( Object.entries(rules) .filter(([, rule]) => rule.meta.deprecated !== true) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), ), -} satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; +} satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/currying.ts b/src/configs/currying.ts index f630eb9bb..e3aa0c431 100644 --- a/src/configs/currying.ts +++ b/src/configs/currying.ts @@ -7,14 +7,7 @@ export default Object.fromEntries( Object.entries(rules) .filter( ([, rule]) => - rule.meta.deprecated !== true && - rule.meta.docs.category === "Currying" && - rule.meta.docs.recommended !== false, + rule.meta.deprecated !== true && rule.meta.docs.category === "Currying" && rule.meta.docs.recommended !== false, ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/disable-type-checked.ts b/src/configs/disable-type-checked.ts index f4aabd3b1..c25c87b39 100644 --- a/src/configs/disable-type-checked.ts +++ b/src/configs/disable-type-checked.ts @@ -7,6 +7,4 @@ export default Object.fromEntries( Object.entries(rules) .filter(([, rule]) => rule.meta.docs.requiresTypeChecking) .map(([name]) => [`${ruleNameScope}/${name}`, "off"]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/external-typescript-recommended.ts b/src/configs/external-typescript-recommended.ts index 96762734a..9622adccc 100644 --- a/src/configs/external-typescript-recommended.ts +++ b/src/configs/external-typescript-recommended.ts @@ -10,6 +10,4 @@ const tsConfig = { export default { ...externalVanillaRecommended, ...tsConfig, -} satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; +} satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/external-vanilla-recommended.ts b/src/configs/external-vanilla-recommended.ts index 56bec7cde..c038e8590 100644 --- a/src/configs/external-vanilla-recommended.ts +++ b/src/configs/external-vanilla-recommended.ts @@ -4,6 +4,4 @@ export default { "prefer-const": "error", "no-param-reassign": "error", "no-var": "error", -} satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; +} satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/lite.ts b/src/configs/lite.ts index 295daee87..96f435e46 100644 --- a/src/configs/lite.ts +++ b/src/configs/lite.ts @@ -42,6 +42,4 @@ const overrides = { export default { ...recommended, ...overrides, -} satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; +} satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/no-exceptions.ts b/src/configs/no-exceptions.ts index 3d150e856..96d8cb11f 100644 --- a/src/configs/no-exceptions.ts +++ b/src/configs/no-exceptions.ts @@ -11,10 +11,5 @@ export default Object.fromEntries( rule.meta.docs.category === "No Exceptions" && rule.meta.docs.recommended !== false, ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/no-mutations.ts b/src/configs/no-mutations.ts index 56697ef40..c43fd18d9 100644 --- a/src/configs/no-mutations.ts +++ b/src/configs/no-mutations.ts @@ -11,10 +11,5 @@ export default Object.fromEntries( rule.meta.docs.category === "No Mutations" && rule.meta.docs.recommended !== false, ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/no-other-paradigms.ts b/src/configs/no-other-paradigms.ts index a0b83136c..d4cf635b1 100644 --- a/src/configs/no-other-paradigms.ts +++ b/src/configs/no-other-paradigms.ts @@ -11,10 +11,5 @@ export default Object.fromEntries( rule.meta.docs.category === "No Other Paradigms" && rule.meta.docs.recommended !== false, ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/no-statements.ts b/src/configs/no-statements.ts index aa7f2f5a9..08b3e4970 100644 --- a/src/configs/no-statements.ts +++ b/src/configs/no-statements.ts @@ -11,10 +11,5 @@ export default Object.fromEntries( rule.meta.docs.category === "No Statements" && rule.meta.docs.recommended !== false, ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/off.ts b/src/configs/off.ts index 8a8229fbb..68144d932 100644 --- a/src/configs/off.ts +++ b/src/configs/off.ts @@ -5,6 +5,4 @@ import { ruleNameScope } from "#/utils/misc"; export default Object.fromEntries( Object.entries(rules).map(([name]) => [`${ruleNameScope}/${name}`, "off"]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/recommended.ts b/src/configs/recommended.ts index bf4c078e3..6bddc5e32 100644 --- a/src/configs/recommended.ts +++ b/src/configs/recommended.ts @@ -21,10 +21,7 @@ const recommended = Object.fromEntries( rule.meta.docs.recommended === "recommended" && rule.meta.docs.category !== "Stylistic", ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), ) satisfies FlatConfig.Config["rules"]; const overrides = { @@ -158,6 +155,4 @@ const overrides = { export default { ...recommended, ...overrides, -} satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; +} satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/strict.ts b/src/configs/strict.ts index 5efa12e66..d3adabe6f 100644 --- a/src/configs/strict.ts +++ b/src/configs/strict.ts @@ -11,10 +11,5 @@ export default Object.fromEntries( rule.meta.docs.recommended !== false && rule.meta.docs.category !== "Stylistic", ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/configs/stylistic.ts b/src/configs/stylistic.ts index f1961de9d..49be7f9d6 100644 --- a/src/configs/stylistic.ts +++ b/src/configs/stylistic.ts @@ -11,10 +11,5 @@ export default Object.fromEntries( rule.meta.docs.category === "Stylistic" && rule.meta.docs.recommended !== false, ) - .map(([name, rule]) => [ - `${ruleNameScope}/${name}`, - rule.meta.docs.recommendedSeverity, - ]), -) satisfies FlatConfig.Config["rules"] as NonNullable< - FlatConfig.Config["rules"] ->; + .map(([name, rule]) => [`${ruleNameScope}/${name}`, rule.meta.docs.recommendedSeverity]), +) satisfies FlatConfig.Config["rules"] as NonNullable; diff --git a/src/options/ignore.ts b/src/options/ignore.ts index e5a2a3e68..54a066d07 100644 --- a/src/options/ignore.ts +++ b/src/options/ignore.ts @@ -24,15 +24,14 @@ export type IgnoreIdentifierPatternOption = Readonly<{ /** * The schema for the option to ignore patterns. */ -export const ignoreIdentifierPatternOptionSchema: JSONSchema4ObjectSchema["properties"] = - { - ignoreIdentifierPattern: { - type: ["string", "array"], - items: { - type: "string", - }, +export const ignoreIdentifierPatternOptionSchema: JSONSchema4ObjectSchema["properties"] = { + ignoreIdentifierPattern: { + type: ["string", "array"], + items: { + type: "string", }, - }; + }, +}; /** * The option to ignore patterns. @@ -44,15 +43,14 @@ export type IgnoreCodePatternOption = Readonly<{ /** * The schema for the option to ignore patterns. */ -export const ignoreCodePatternOptionSchema: JSONSchema4ObjectSchema["properties"] = - { - ignoreCodePattern: { - type: ["string", "array"], - items: { - type: "string", - }, +export const ignoreCodePatternOptionSchema: JSONSchema4ObjectSchema["properties"] = { + ignoreCodePattern: { + type: ["string", "array"], + items: { + type: "string", }, - }; + }, +}; /** * The option to ignore accessor patterns. @@ -64,15 +62,14 @@ export type IgnoreAccessorPatternOption = Readonly<{ /** * The schema for the option to ignore accessor patterns. */ -export const ignoreAccessorPatternOptionSchema: JSONSchema4ObjectSchema["properties"] = - { - ignoreAccessorPattern: { - type: ["string", "array"], - items: { - type: "string", - }, +export const ignoreAccessorPatternOptionSchema: JSONSchema4ObjectSchema["properties"] = { + ignoreAccessorPattern: { + type: ["string", "array"], + items: { + type: "string", }, - }; + }, +}; /** * The option to ignore classes. @@ -84,20 +81,19 @@ export type IgnoreClassesOption = Readonly<{ /** * The schema for the option to ignore classes. */ -export const ignoreClassesOptionSchema: JSONSchema4ObjectSchema["properties"] = - { - ignoreClasses: { - oneOf: [ - { - type: "boolean", - }, - { - type: "string", - enum: ["fieldsOnly"], - }, - ], - }, - }; +export const ignoreClassesOptionSchema: JSONSchema4ObjectSchema["properties"] = { + ignoreClasses: { + oneOf: [ + { + type: "boolean", + }, + { + type: "string", + enum: ["fieldsOnly"], + }, + ], + }, +}; /** * The option to ignore prefix selector. @@ -109,25 +105,21 @@ export type IgnorePrefixSelectorOption = Readonly<{ /** * The schema for the option to ignore prefix selector. */ -export const ignorePrefixSelectorOptionSchema: JSONSchema4ObjectSchema["properties"] = - { - ignorePrefixSelector: { - type: ["string", "array"], - items: { - type: "string", - }, +export const ignorePrefixSelectorOptionSchema: JSONSchema4ObjectSchema["properties"] = { + ignorePrefixSelector: { + type: ["string", "array"], + items: { + type: "string", }, - }; + }, +}; /** * Should the given text be allowed? * * Test using the given pattern(s). */ -function shouldIgnoreViaPattern( - text: string, - pattern: ReadonlyArray | string, -): boolean { +function shouldIgnoreViaPattern(text: string, pattern: ReadonlyArray | string): boolean { const patterns = Array.isArray(pattern) ? pattern : [pattern]; // One or more patterns match? @@ -154,31 +146,13 @@ function accessorPatternMatch( ? accessorPatternMatch(remainingPatternParts, [], allowExtra) : Array.from({ length: textParts.length }) .map((element, index) => index) - .some((offset) => - accessorPatternMatch( - remainingPatternParts, - textParts.slice(offset), - true, - ), - ) + .some((offset) => accessorPatternMatch(remainingPatternParts, textParts.slice(offset), true)) : // Match anything? pattern === "*" - ? textParts.length > 0 && - accessorPatternMatch( - remainingPatternParts, - textParts.slice(1), - allowExtra, - ) + ? textParts.length > 0 && accessorPatternMatch(remainingPatternParts, textParts.slice(1), allowExtra) : // Text matches pattern? - new RegExp( - `^${escapeRegExp(pattern).replaceAll("\\*", ".*")}$`, - "u", - ).test(textParts[0]!) && - accessorPatternMatch( - remainingPatternParts, - textParts.slice(1), - allowExtra, - ); + new RegExp(`^${escapeRegExp(pattern).replaceAll("\\*", ".*")}$`, "u").test(textParts[0]!) && + accessorPatternMatch(remainingPatternParts, textParts.slice(1), allowExtra); } /** @@ -186,16 +160,11 @@ function accessorPatternMatch( * * Test using the given accessor pattern(s). */ -function shouldIgnoreViaAccessorPattern( - text: string, - pattern: ReadonlyArray | string, -): boolean { +function shouldIgnoreViaAccessorPattern(text: string, pattern: ReadonlyArray | string): boolean { const patterns = Array.isArray(pattern) ? pattern : [pattern]; // One or more patterns match? - return patterns.some((p) => - accessorPatternMatch(p.split("."), text.split(".")), - ); + return patterns.some((p) => accessorPatternMatch(p.split("."), text.split("."))); } /** @@ -241,38 +210,24 @@ export function shouldIgnoreClasses( export function shouldIgnorePattern( node: TSESTree.Node, context: Readonly>, - ignoreIdentifierPattern: Readonly< - Partial["ignoreIdentifierPattern"] - >, - ignoreAccessorPattern?: Readonly< - Partial["ignoreAccessorPattern"] - >, - ignoreCodePattern?: Readonly< - Partial["ignoreCodePattern"] - >, + ignoreIdentifierPattern: Readonly["ignoreIdentifierPattern"]>, + ignoreAccessorPattern?: Readonly["ignoreAccessorPattern"]>, + ignoreCodePattern?: Readonly["ignoreCodePattern"]>, ): boolean { const texts = getNodeIdentifierTexts(node, context); if (texts.length === 0) { - return ( - ignoreCodePattern !== undefined && - shouldIgnoreViaPattern(getNodeCode(node, context), ignoreCodePattern) - ); + return ignoreCodePattern !== undefined && shouldIgnoreViaPattern(getNodeCode(node, context), ignoreCodePattern); } return ( // Ignore if ignoreIdentifierPattern is set and a pattern matches. (ignoreIdentifierPattern !== undefined && - texts.every((text) => - shouldIgnoreViaPattern(text, ignoreIdentifierPattern), - )) || + texts.every((text) => shouldIgnoreViaPattern(text, ignoreIdentifierPattern))) || // Ignore if ignoreAccessorPattern is set and an accessor pattern matches. (ignoreAccessorPattern !== undefined && - texts.every((text) => - shouldIgnoreViaAccessorPattern(text, ignoreAccessorPattern), - )) || + texts.every((text) => shouldIgnoreViaAccessorPattern(text, ignoreAccessorPattern))) || // Ignore if ignoreCodePattern is set and a code pattern matches. - (ignoreCodePattern !== undefined && - shouldIgnoreViaPattern(getNodeCode(node, context), ignoreCodePattern)) + (ignoreCodePattern !== undefined && shouldIgnoreViaPattern(getNodeCode(node, context), ignoreCodePattern)) ); } diff --git a/src/options/overrides.ts b/src/options/overrides.ts index 09277b6c2..8ab50bb33 100644 --- a/src/options/overrides.ts +++ b/src/options/overrides.ts @@ -3,17 +3,11 @@ import assert from "node:assert/strict"; import type { TSESTree } from "@typescript-eslint/utils"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; -import typeMatchesSpecifier, { - type TypeDeclarationSpecifier, -} from "ts-declaration-location"; +import typeMatchesSpecifier, { type TypeDeclarationSpecifier } from "ts-declaration-location"; import type { Program, Type, TypeNode } from "typescript"; import { getTypeDataOfNode } from "#/utils/rule"; -import { - type RawTypeSpecifier, - type TypeSpecifier, - typeMatchesPattern, -} from "#/utils/type-specifier"; +import { type RawTypeSpecifier, type TypeSpecifier, typeMatchesPattern } from "#/utils/type-specifier"; /** * Options that can be overridden. @@ -67,23 +61,14 @@ function upgradeRawTypeSpecifier(raw: RawTypeSpecifier): TypeSpecifier { const names = name === undefined ? [] : Array.isArray(name) ? name : [name]; - const patterns = ( - pattern === undefined ? [] : Array.isArray(pattern) ? pattern : [pattern] - ).map((p) => new RegExp(p, "u")); + const patterns = (pattern === undefined ? [] : Array.isArray(pattern) ? pattern : [pattern]).map( + (p) => new RegExp(p, "u"), + ); - const ignoreNames = - ignoreName === undefined - ? [] - : Array.isArray(ignoreName) - ? ignoreName - : [ignoreName]; + const ignoreNames = ignoreName === undefined ? [] : Array.isArray(ignoreName) ? ignoreName : [ignoreName]; const ignorePatterns = ( - ignorePattern === undefined - ? [] - : Array.isArray(ignorePattern) - ? ignorePattern - : [ignorePattern] + ignorePattern === undefined ? [] : Array.isArray(ignorePattern) ? ignorePattern : [ignorePattern] ).map((p) => new RegExp(p, "u")); const include = [...names, ...patterns]; @@ -99,10 +84,7 @@ function upgradeRawTypeSpecifier(raw: RawTypeSpecifier): TypeSpecifier { /** * Get the core options to use, taking into account overrides. */ -export function getCoreOptions< - CoreOptions extends object, - Options extends Readonly>, ->( +export function getCoreOptions>>( node: TSESTree.Node, context: Readonly>, options: Readonly, @@ -131,21 +113,12 @@ export function getCoreOptionsForType< } const found = options.overrides?.find((override) => - (Array.isArray(override.specifiers) - ? override.specifiers - : [override.specifiers] - ).some( + (Array.isArray(override.specifiers) ? override.specifiers : [override.specifiers]).some( (specifier) => typeMatchesSpecifierDeep(program, specifier, type) && (specifier.include === undefined || specifier.include.length === 0 || - typeMatchesPattern( - program, - type, - typeNode, - specifier.include, - specifier.exclude, - )), + typeMatchesPattern(program, type, typeNode, specifier.include, specifier.exclude)), ), ); @@ -162,22 +135,18 @@ export function getCoreOptionsForType< return options; } -function typeMatchesSpecifierDeep( - program: Program, - specifier: TypeDeclarationSpecifier, - type: Type, -) { - const m_stack = [type]; +function typeMatchesSpecifierDeep(program: Program, specifier: TypeDeclarationSpecifier, type: Type) { + const mut_stack = [type]; // eslint-disable-next-line functional/no-loop-statements -- best to do this iteratively. - while (m_stack.length > 0) { - const t = m_stack.pop() ?? assert.fail(); + while (mut_stack.length > 0) { + const t = mut_stack.pop() ?? assert.fail(); if (typeMatchesSpecifier(program, specifier, t)) { return true; } if (t.aliasTypeArguments !== undefined) { - m_stack.push(...t.aliasTypeArguments); + mut_stack.push(...t.aliasTypeArguments); } } diff --git a/src/rules/functional-parameters.ts b/src/rules/functional-parameters.ts index 073f5cb3e..381dddab9 100644 --- a/src/rules/functional-parameters.ts +++ b/src/rules/functional-parameters.ts @@ -1,8 +1,5 @@ import type { TSESTree } from "@typescript-eslint/utils"; -import type { - JSONSchema4, - JSONSchema4ObjectSchema, -} from "@typescript-eslint/utils/json-schema"; +import type { JSONSchema4, JSONSchema4ObjectSchema } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; @@ -19,12 +16,7 @@ import { } from "#/options"; import { ruleNameScope } from "#/utils/misc"; import type { ESFunction } from "#/utils/node-types"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRuleUsingFunction, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRuleUsingFunction } from "#/utils/rule"; import { overridableOptionsSchema } from "#/utils/schemas"; import { getEnclosingFunction, @@ -73,56 +65,50 @@ type CoreOptions = IgnoreIdentifierPatternOption & type RawOptions = [RawOverridableOptions]; type Options = OverridableOptions; -const coreOptionsPropertiesSchema = deepmerge( - ignoreIdentifierPatternOptionSchema, - ignorePrefixSelectorOptionSchema, - { - allowRestParameter: { - type: "boolean", - }, - allowArgumentsKeyword: { - type: "boolean", - }, - enforceParameterCount: { - oneOf: [ - { - type: "boolean", - enum: [false], - }, - { - type: "string", - enum: ["atLeastOne", "exactlyOne"], - }, - { - type: "object", - properties: { - count: { - type: "string", - enum: ["atLeastOne", "exactlyOne"], - }, - ignoreGettersAndSetters: { - type: "boolean", - }, - ignoreLambdaExpression: { - type: "boolean", - }, - ignoreIIFE: { - type: "boolean", - }, +const coreOptionsPropertiesSchema = deepmerge(ignoreIdentifierPatternOptionSchema, ignorePrefixSelectorOptionSchema, { + allowRestParameter: { + type: "boolean", + }, + allowArgumentsKeyword: { + type: "boolean", + }, + enforceParameterCount: { + oneOf: [ + { + type: "boolean", + enum: [false], + }, + { + type: "string", + enum: ["atLeastOne", "exactlyOne"], + }, + { + type: "object", + properties: { + count: { + type: "string", + enum: ["atLeastOne", "exactlyOne"], + }, + ignoreGettersAndSetters: { + type: "boolean", + }, + ignoreLambdaExpression: { + type: "boolean", + }, + ignoreIIFE: { + type: "boolean", }, - additionalProperties: false, }, - ], - }, + additionalProperties: false, + }, + ], }, -) as NonNullable; +}) as NonNullable; /** * The schema for the rule options. */ -const schema: JSONSchema4[] = [ - overridableOptionsSchema(coreOptionsPropertiesSchema), -]; +const schema: JSONSchema4[] = [overridableOptionsSchema(coreOptionsPropertiesSchema)]; /** * The default options for the rule. @@ -144,10 +130,8 @@ const defaultOptions = [ * The possible error messages. */ const errorMessages = { - restParam: - "Unexpected rest parameter. Use a regular parameter of type array instead.", - arguments: - "Unexpected use of `arguments`. Use regular function arguments instead.", + restParam: "Unexpected rest parameter. Use a regular parameter of type array instead.", + arguments: "Unexpected use of `arguments`. Use regular function arguments instead.", paramCountAtLeastOne: "Functions must have at least one parameter.", paramCountExactlyOne: "Functions must have exactly one parameter.", } as const; @@ -175,9 +159,7 @@ function getRestParamViolations( { allowRestParameter }: Readonly, node: ESFunction, ): RuleResult["descriptors"] { - return !allowRestParameter && - node.params.length > 0 && - isRestElement(node.params.at(-1)) + return !allowRestParameter && node.params.length > 0 && isRestElement(node.params.at(-1)) ? [ { node: node.params.at(-1), @@ -200,16 +182,14 @@ function getParamCountViolations( typeof enforceParameterCount === "object" && ((enforceParameterCount.ignoreIIFE && isIIFE(node)) || (enforceParameterCount.ignoreLambdaExpression && isArgument(node)) || - (enforceParameterCount.ignoreGettersAndSetters && - (isGetter(node) || isSetter(node))))) + (enforceParameterCount.ignoreGettersAndSetters && (isGetter(node) || isSetter(node))))) ) { return []; } if ( node.params.length === 0 && (enforceParameterCount === "atLeastOne" || - (typeof enforceParameterCount === "object" && - enforceParameterCount.count === "atLeastOne")) + (typeof enforceParameterCount === "object" && enforceParameterCount.count === "atLeastOne")) ) { return [ { @@ -221,8 +201,7 @@ function getParamCountViolations( if ( node.params.length !== 1 && (enforceParameterCount === "exactlyOne" || - (typeof enforceParameterCount === "object" && - enforceParameterCount.count === "exactlyOne")) + (typeof enforceParameterCount === "object" && enforceParameterCount.count === "exactlyOne")) ) { return [ { @@ -237,9 +216,7 @@ function getParamCountViolations( /** * Add the default options to the given options. */ -function getOptionsWithDefaults( - options: Readonly | null, -): Options | null { +function getOptionsWithDefaults(options: Readonly | null): Options | null { if (options === null) { return null; } @@ -268,9 +245,7 @@ function checkFunction( rawOptions: Readonly, ): RuleResult { const options = upgradeRawOverridableOptions(rawOptions[0]); - const optionsToUse = getOptionsWithDefaults( - getCoreOptions(node, context, options), - ); + const optionsToUse = getOptionsWithDefaults(getCoreOptions(node, context, options)); if (optionsToUse === null) { return { @@ -290,10 +265,7 @@ function checkFunction( return { context, - descriptors: [ - ...getRestParamViolations(optionsToUse, node), - ...getParamCountViolations(optionsToUse, node), - ], + descriptors: [...getRestParamViolations(optionsToUse, node), ...getParamCountViolations(optionsToUse, node)], }; } @@ -315,9 +287,7 @@ function checkIdentifier( const functionNode = getEnclosingFunction(node); const options = upgradeRawOverridableOptions(rawOptions[0]); const optionsToUse = getOptionsWithDefaults( - functionNode === null - ? options - : getCoreOptions(functionNode, context, options), + functionNode === null ? options : getCoreOptions(functionNode, context, options), ); if (optionsToUse === null) { @@ -353,40 +323,28 @@ function checkIdentifier( } // Create the rule. -export const rule: Rule = - createRuleUsingFunction( - name, - meta, - defaultOptions, - (context, options) => { - const [optionsObject] = options; - const { ignorePrefixSelector } = optionsObject; - - const baseFunctionSelectors = [ - "ArrowFunctionExpression", - "FunctionDeclaration", - "FunctionExpression", - ]; - - const ignoreSelectors = - ignorePrefixSelector === undefined - ? undefined - : Array.isArray(ignorePrefixSelector) - ? ignorePrefixSelector - : [ignorePrefixSelector]; - - const fullFunctionSelectors = baseFunctionSelectors.flatMap( - (baseSelector) => - ignoreSelectors === undefined - ? [baseSelector] - : `:not(:matches(${ignoreSelectors.join(",")})) > ${baseSelector}`, - ); - - return { - ...Object.fromEntries( - fullFunctionSelectors.map((selector) => [selector, checkFunction]), - ), - Identifier: checkIdentifier, - }; - }, +export const rule: Rule = createRuleUsingFunction< + keyof typeof errorMessages, + RawOptions +>(name, meta, defaultOptions, (context, options) => { + const [optionsObject] = options; + const { ignorePrefixSelector } = optionsObject; + + const baseFunctionSelectors = ["ArrowFunctionExpression", "FunctionDeclaration", "FunctionExpression"]; + + const ignoreSelectors = + ignorePrefixSelector === undefined + ? undefined + : Array.isArray(ignorePrefixSelector) + ? ignorePrefixSelector + : [ignorePrefixSelector]; + + const fullFunctionSelectors = baseFunctionSelectors.flatMap((baseSelector) => + ignoreSelectors === undefined ? [baseSelector] : `:not(:matches(${ignoreSelectors.join(",")})) > ${baseSelector}`, ); + + return { + ...Object.fromEntries(fullFunctionSelectors.map((selector) => [selector, checkFunction])), + Identifier: checkIdentifier, + }; +}); diff --git a/src/rules/immutable-data.ts b/src/rules/immutable-data.ts index 1010ffaba..36890c6c9 100644 --- a/src/rules/immutable-data.ts +++ b/src/rules/immutable-data.ts @@ -1,8 +1,5 @@ import type { TSESTree } from "@typescript-eslint/utils"; -import type { - JSONSchema4, - JSONSchema4ObjectSchema, -} from "@typescript-eslint/utils/json-schema"; +import type { JSONSchema4, JSONSchema4ObjectSchema } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; @@ -21,19 +18,9 @@ import { upgradeRawOverridableOptions, } from "#/options"; import { isExpected, ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, - getTypeOfNode, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule, getTypeOfNode } from "#/utils/rule"; import { overridableOptionsSchema } from "#/utils/schemas"; -import { - findRootIdentifier, - isDefinedByMutableVariable, - isInConstructor, -} from "#/utils/tree"; +import { findRootIdentifier, isDefinedByMutableVariable, isInConstructor } from "#/utils/tree"; import { isArrayConstructorType, isArrayExpression, @@ -103,9 +90,7 @@ const coreOptionsPropertiesSchema = deepmerge( /** * The schema for the rule options. */ -const schema: JSONSchema4[] = [ - overridableOptionsSchema(coreOptionsPropertiesSchema), -]; +const schema: JSONSchema4[] = [overridableOptionsSchema(coreOptionsPropertiesSchema)]; /** * The default options for the rule. @@ -166,14 +151,7 @@ const arrayMutatorMethods = new Set([ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype#Methods#Accessor_methods * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype#Iteration_methods */ -const arrayNewObjectReturningMethods = [ - "concat", - "slice", - "filter", - "map", - "reduce", - "reduceRight", -]; +const arrayNewObjectReturningMethods = ["concat", "slice", "filter", "map", "reduce", "reduceRight"]; /** * Array constructor functions that create a new array. @@ -187,12 +165,7 @@ const arrayConstructorFunctions = ["from", "of"]; * * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object#Methods_of_the_Object_constructor */ -const objectConstructorMutatorFunctions = new Set([ - "assign", - "defineProperties", - "defineProperty", - "setPrototypeOf", -]); +const objectConstructorMutatorFunctions = new Set(["assign", "defineProperties", "defineProperty", "setPrototypeOf"]); /** * Object constructor functions that return new objects. @@ -227,9 +200,7 @@ function checkAssignmentExpression( ): RuleResult { const options = upgradeRawOverridableOptions(rawOptions[0]); const rootNode = findRootIdentifier(node.left) ?? node.left; - const optionsToUse = getOptionsWithDefaults( - getCoreOptions(rootNode, context, options), - ); + const optionsToUse = getOptionsWithDefaults(getCoreOptions(rootNode, context, options)); if (optionsToUse === null) { return { @@ -238,22 +209,12 @@ function checkAssignmentExpression( }; } - const { - ignoreIdentifierPattern, - ignoreAccessorPattern, - ignoreNonConstDeclarations, - ignoreClasses, - } = optionsToUse; + const { ignoreIdentifierPattern, ignoreAccessorPattern, ignoreNonConstDeclarations, ignoreClasses } = optionsToUse; if ( !isMemberExpression(node.left) || shouldIgnoreClasses(node, context, ignoreClasses) || - shouldIgnorePattern( - node, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ) + shouldIgnorePattern(node, context, ignoreIdentifierPattern, ignoreAccessorPattern) ) { return { context, @@ -271,12 +232,7 @@ function checkAssignmentExpression( (variableNode) => ignoreNonConstDeclarations === true || !ignoreNonConstDeclarations.treatParametersAsConst || - shouldIgnorePattern( - variableNode, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ), + shouldIgnorePattern(variableNode, context, ignoreIdentifierPattern, ignoreAccessorPattern), ) ) { return { @@ -304,9 +260,7 @@ function checkUnaryExpression( ): RuleResult { const options = upgradeRawOverridableOptions(rawOptions[0]); const rootNode = findRootIdentifier(node.argument) ?? node.argument; - const optionsToUse = getOptionsWithDefaults( - getCoreOptions(rootNode, context, options), - ); + const optionsToUse = getOptionsWithDefaults(getCoreOptions(rootNode, context, options)); if (optionsToUse === null) { return { @@ -315,22 +269,12 @@ function checkUnaryExpression( }; } - const { - ignoreIdentifierPattern, - ignoreAccessorPattern, - ignoreNonConstDeclarations, - ignoreClasses, - } = optionsToUse; + const { ignoreIdentifierPattern, ignoreAccessorPattern, ignoreNonConstDeclarations, ignoreClasses } = optionsToUse; if ( !isMemberExpression(node.argument) || shouldIgnoreClasses(node, context, ignoreClasses) || - shouldIgnorePattern( - node, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ) + shouldIgnorePattern(node, context, ignoreIdentifierPattern, ignoreAccessorPattern) ) { return { context, @@ -348,12 +292,7 @@ function checkUnaryExpression( (variableNode) => ignoreNonConstDeclarations === true || !ignoreNonConstDeclarations.treatParametersAsConst || - shouldIgnorePattern( - variableNode, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ), + shouldIgnorePattern(variableNode, context, ignoreIdentifierPattern, ignoreAccessorPattern), ) ) { return { @@ -365,8 +304,7 @@ function checkUnaryExpression( return { context, - descriptors: - node.operator === "delete" ? [{ node, messageId: "generic" }] : [], + descriptors: node.operator === "delete" ? [{ node, messageId: "generic" }] : [], }; } @@ -380,9 +318,7 @@ function checkUpdateExpression( ): RuleResult { const options = upgradeRawOverridableOptions(rawOptions[0]); const rootNode = findRootIdentifier(node.argument) ?? node.argument; - const optionsToUse = getOptionsWithDefaults( - getCoreOptions(rootNode, context, options), - ); + const optionsToUse = getOptionsWithDefaults(getCoreOptions(rootNode, context, options)); if (optionsToUse === null) { return { @@ -391,22 +327,12 @@ function checkUpdateExpression( }; } - const { - ignoreIdentifierPattern, - ignoreAccessorPattern, - ignoreNonConstDeclarations, - ignoreClasses, - } = optionsToUse; + const { ignoreIdentifierPattern, ignoreAccessorPattern, ignoreNonConstDeclarations, ignoreClasses } = optionsToUse; if ( !isMemberExpression(node.argument) || shouldIgnoreClasses(node.argument, context, ignoreClasses) || - shouldIgnorePattern( - node.argument, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ) + shouldIgnorePattern(node.argument, context, ignoreIdentifierPattern, ignoreAccessorPattern) ) { return { context, @@ -424,12 +350,7 @@ function checkUpdateExpression( (variableNode) => ignoreNonConstDeclarations === true || !ignoreNonConstDeclarations.treatParametersAsConst || - shouldIgnorePattern( - variableNode, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ), + shouldIgnorePattern(variableNode, context, ignoreIdentifierPattern, ignoreAccessorPattern), ) ) { return { @@ -470,54 +391,35 @@ function isInChainCallAndFollowsNew( } // Check for: new Array() - if ( - isNewExpression(node) && - isArrayConstructorType(context, getTypeOfNode(node.callee, context)) - ) { + if (isNewExpression(node) && isArrayConstructorType(context, getTypeOfNode(node.callee, context))) { return true; } - if ( - isCallExpression(node) && - isMemberExpression(node.callee) && - isIdentifier(node.callee.property) - ) { + if (isCallExpression(node) && isMemberExpression(node.callee) && isIdentifier(node.callee.property)) { // Check for: Array.from(iterable) if ( arrayConstructorFunctions.some(isExpected(node.callee.property.name)) && - isArrayConstructorType( - context, - getTypeOfNode(node.callee.object, context), - ) + isArrayConstructorType(context, getTypeOfNode(node.callee.object, context)) ) { return true; } // Check for: array.slice(0) - if ( - arrayNewObjectReturningMethods.some(isExpected(node.callee.property.name)) - ) { + if (arrayNewObjectReturningMethods.some(isExpected(node.callee.property.name))) { return true; } // Check for: Object.entries(object) if ( - objectConstructorNewObjectReturningMethods.some( - isExpected(node.callee.property.name), - ) && - isObjectConstructorType( - context, - getTypeOfNode(node.callee.object, context), - ) + objectConstructorNewObjectReturningMethods.some(isExpected(node.callee.property.name)) && + isObjectConstructorType(context, getTypeOfNode(node.callee.object, context)) ) { return true; } // Check for: "".split("") if ( - stringConstructorNewObjectReturningMethods.some( - isExpected(node.callee.property.name), - ) && + stringConstructorNewObjectReturningMethods.some(isExpected(node.callee.property.name)) && getTypeOfNode(node.callee.object, context).isStringLiteral() ) { return true; @@ -530,9 +432,7 @@ function isInChainCallAndFollowsNew( /** * Add the default options to the given options. */ -function getOptionsWithDefaults( - options: Readonly | null, -): Options | null { +function getOptionsWithDefaults(options: Readonly | null): Options | null { if (options === null) { return null; } @@ -553,9 +453,7 @@ function checkCallExpression( ): RuleResult { const options = upgradeRawOverridableOptions(rawOptions[0]); const rootNode = findRootIdentifier(node.callee) ?? node.callee; - const optionsToUse = getOptionsWithDefaults( - getCoreOptions(rootNode, context, options), - ); + const optionsToUse = getOptionsWithDefaults(getCoreOptions(rootNode, context, options)); if (optionsToUse === null) { return { @@ -564,24 +462,14 @@ function checkCallExpression( }; } - const { - ignoreIdentifierPattern, - ignoreAccessorPattern, - ignoreNonConstDeclarations, - ignoreClasses, - } = optionsToUse; + const { ignoreIdentifierPattern, ignoreAccessorPattern, ignoreNonConstDeclarations, ignoreClasses } = optionsToUse; // Not potential object mutation? if ( !isMemberExpression(node.callee) || !isIdentifier(node.callee.property) || shouldIgnoreClasses(node.callee.object, context, ignoreClasses) || - shouldIgnorePattern( - node.callee.object, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ) + shouldIgnorePattern(node.callee.object, context, ignoreIdentifierPattern, ignoreAccessorPattern) ) { return { context, @@ -594,8 +482,7 @@ function checkCallExpression( // Array mutation? if ( arrayMutatorMethods.has(node.callee.property.name) && - (!ignoreImmediateMutation || - !isInChainCallAndFollowsNew(node.callee, context)) && + (!ignoreImmediateMutation || !isInChainCallAndFollowsNew(node.callee, context)) && isArrayType(context, getTypeOfNode(node.callee.object, context)) ) { if (ignoreNonConstDeclarations === false) { @@ -613,12 +500,7 @@ function checkCallExpression( (variableNode) => ignoreNonConstDeclarations === true || !ignoreNonConstDeclarations.treatParametersAsConst || - shouldIgnorePattern( - variableNode, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ), + shouldIgnorePattern(variableNode, context, ignoreIdentifierPattern, ignoreAccessorPattern), ) ) { return { @@ -632,15 +514,9 @@ function checkCallExpression( if ( objectConstructorMutatorFunctions.has(node.callee.property.name) && node.arguments.length >= 2 && - (isIdentifier(node.arguments[0]!) || - isMemberExpression(node.arguments[0]!)) && + (isIdentifier(node.arguments[0]!) || isMemberExpression(node.arguments[0]!)) && !shouldIgnoreClasses(node.arguments[0], context, ignoreClasses) && - !shouldIgnorePattern( - node.arguments[0], - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ) && + !shouldIgnorePattern(node.arguments[0], context, ignoreIdentifierPattern, ignoreAccessorPattern) && isObjectConstructorType(context, getTypeOfNode(node.callee.object, context)) ) { if (ignoreNonConstDeclarations === false) { @@ -658,12 +534,7 @@ function checkCallExpression( (variableNode) => ignoreNonConstDeclarations === true || !ignoreNonConstDeclarations.treatParametersAsConst || - shouldIgnorePattern( - variableNode, - context, - ignoreIdentifierPattern, - ignoreAccessorPattern, - ), + shouldIgnorePattern(variableNode, context, ignoreIdentifierPattern, ignoreAccessorPattern), ) ) { return { @@ -680,12 +551,14 @@ function checkCallExpression( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - RawOptions ->(name, meta, defaultOptions, { - AssignmentExpression: checkAssignmentExpression, - UnaryExpression: checkUnaryExpression, - UpdateExpression: checkUpdateExpression, - CallExpression: checkCallExpression, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + AssignmentExpression: checkAssignmentExpression, + UnaryExpression: checkUnaryExpression, + UpdateExpression: checkUpdateExpression, + CallExpression: checkCallExpression, + }, +); diff --git a/src/rules/no-classes.ts b/src/rules/no-classes.ts index 2450f617a..69ebd27bc 100644 --- a/src/rules/no-classes.ts +++ b/src/rules/no-classes.ts @@ -11,12 +11,7 @@ import { } from "#/options"; import { ruleNameScope } from "#/utils/misc"; import type { ESClass } from "#/utils/node-types"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; /** * The name of this rule. @@ -39,10 +34,7 @@ type Options = [IgnoreIdentifierPatternOption & IgnoreCodePatternOption]; const schema: JSONSchema4[] = [ { type: "object", - properties: deepmerge( - ignoreIdentifierPatternOptionSchema, - ignoreCodePatternOptionSchema, - ), + properties: deepmerge(ignoreIdentifierPatternOptionSchema, ignoreCodePatternOptionSchema), additionalProperties: false, }, ]; @@ -86,15 +78,7 @@ function checkClass( const [optionsObject] = options; const { ignoreIdentifierPattern, ignoreCodePattern } = optionsObject; - if ( - shouldIgnorePattern( - node, - context, - ignoreIdentifierPattern, - undefined, - ignoreCodePattern, - ) - ) { + if (shouldIgnorePattern(node, context, ignoreIdentifierPattern, undefined, ignoreCodePattern)) { return { context, descriptors: [], @@ -105,10 +89,12 @@ function checkClass( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - ClassDeclaration: checkClass, - ClassExpression: checkClass, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ClassDeclaration: checkClass, + ClassExpression: checkClass, + }, +); diff --git a/src/rules/no-conditional-statements.ts b/src/rules/no-conditional-statements.ts index 9b3af4f4e..ff88b9f20 100644 --- a/src/rules/no-conditional-statements.ts +++ b/src/rules/no-conditional-statements.ts @@ -5,13 +5,7 @@ import type { Type } from "typescript"; import tsApiUtils from "#/conditional-imports/ts-api-utils"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, - getTypeOfNode, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule, getTypeOfNode } from "#/utils/rule"; import { isBlockStatement, isBreakStatement, @@ -75,16 +69,12 @@ const defaultOptions: Options = [{ allowReturningBranches: false }]; * The possible error messages. */ const errorMessages = { - incompleteBranch: - "Incomplete branch, every branch in a conditional statement must contain a return statement.", - incompleteIf: - "Incomplete if, it must have an else statement and every branch must contain a return statement.", + incompleteBranch: "Incomplete branch, every branch in a conditional statement must contain a return statement.", + incompleteIf: "Incomplete if, it must have an else statement and every branch must contain a return statement.", incompleteSwitch: "Incomplete switch, it must be exhaustive or have an default case and every case must contain a return statement.", - unexpectedIf: - "Unexpected if, use a conditional expression (ternary operator) instead.", - unexpectedSwitch: - "Unexpected switch, use a conditional expression (ternary operator) instead.", + unexpectedIf: "Unexpected if, use a conditional expression (ternary operator) instead.", + unexpectedSwitch: "Unexpected switch, use a conditional expression (ternary operator) instead.", } as const; /** @@ -118,19 +108,11 @@ function incompleteBranchViolation( /** * Get a function that tests if the given statement is never returning. */ -function getIsNeverExpressions( - context: Readonly>, -) { +function getIsNeverExpressions(context: Readonly>) { return (statement: TSESTree.Statement) => { if (isExpressionStatement(statement)) { - const expressionStatementType = getTypeOfNode( - statement.expression, - context, - ); - return ( - expressionStatementType !== null && - tsApiUtils?.isIntrinsicNeverType(expressionStatementType) === true - ); + const expressionStatementType = getTypeOfNode(statement.expression, context); + return expressionStatementType !== null && tsApiUtils?.isIntrinsicNeverType(expressionStatementType) === true; } return false; }; @@ -166,15 +148,9 @@ function getIfBranchViolations( } if (isExpressionStatement(branch)) { - const expressionStatementType = getTypeOfNode( - branch.expression, - context, - ); - - if ( - expressionStatementType !== null && - tsApiUtils?.isIntrinsicNeverType(expressionStatementType) === true - ) { + const expressionStatementType = getTypeOfNode(branch.expression, context); + + if (expressionStatementType !== null && tsApiUtils?.isIntrinsicNeverType(expressionStatementType) === true) { return false; } } @@ -243,9 +219,7 @@ function getSwitchViolations( isSwitchStatement(statement) || isReturnStatement(statement) || isThrowStatement(statement) || - (isBreakStatement(statement) && - statement.label !== null && - statement.label.name !== label) || + (isBreakStatement(statement) && statement.label !== null && statement.label.name !== label) || isContinueStatement(statement) ); } @@ -287,9 +261,7 @@ function isExhaustiveSwitchViolation( ): boolean { return ( // No cases defined. - node.cases.every((c) => c.test !== null) - ? isExhaustiveTypeSwitchViolation(node, context) - : false + node.cases.every((c) => c.test !== null) ? isExhaustiveTypeSwitchViolation(node, context) : false ); } @@ -340,10 +312,12 @@ function checkSwitchStatement( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - IfStatement: checkIfStatement, - SwitchStatement: checkSwitchStatement, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + IfStatement: checkIfStatement, + SwitchStatement: checkSwitchStatement, + }, +); diff --git a/src/rules/no-expression-statements.ts b/src/rules/no-expression-statements.ts index a68d4c32e..c9645217b 100644 --- a/src/rules/no-expression-statements.ts +++ b/src/rules/no-expression-statements.ts @@ -1,32 +1,15 @@ import type { TSESTree } from "@typescript-eslint/utils"; -import type { - JSONSchema4, - JSONSchema4ObjectSchema, -} from "@typescript-eslint/utils/json-schema"; +import type { JSONSchema4, JSONSchema4ObjectSchema } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; import type ts from "typescript"; import tsApiUtils from "#/conditional-imports/ts-api-utils"; import typescript from "#/conditional-imports/typescript"; -import { - type IgnoreCodePatternOption, - ignoreCodePatternOptionSchema, - shouldIgnorePattern, -} from "#/options"; +import { type IgnoreCodePatternOption, ignoreCodePatternOptionSchema, shouldIgnorePattern } from "#/options"; import { isDirectivePrologue, ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, - getTypeOfNode, -} from "#/utils/rule"; -import { - isCallExpression, - isPromiseType, - isYieldExpression, -} from "#/utils/type-guards"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule, getTypeOfNode } from "#/utils/rule"; +import { isCallExpression, isPromiseType, isYieldExpression } from "#/utils/type-guards"; /** * The name of this rule. @@ -110,9 +93,7 @@ function checkExpressionStatement( const [optionsObject] = options; const { ignoreCodePattern } = optionsObject; - if ( - shouldIgnorePattern(node, context, undefined, undefined, ignoreCodePattern) - ) { + if (shouldIgnorePattern(node, context, undefined, undefined, ignoreCodePattern)) { return { context, descriptors: [], @@ -129,10 +110,7 @@ function checkExpressionStatement( const { ignoreVoid, ignoreSelfReturning } = optionsObject; - if ( - (ignoreVoid || ignoreSelfReturning) && - isCallExpression(node.expression) - ) { + if ((ignoreVoid || ignoreSelfReturning) && isCallExpression(node.expression)) { const returnType = getTypeOfNode(node.expression, context); if (returnType === null) { return { @@ -147,9 +125,7 @@ function checkExpressionStatement( ("typeArguments" in returnType && isPromiseType(context, returnType) && (returnType.typeArguments as ts.Type[]).length > 0 && - tsApiUtils?.isIntrinsicVoidType( - (returnType.typeArguments as ts.Type[])[0]!, - ) === true)) + tsApiUtils?.isIntrinsicVoidType((returnType.typeArguments as ts.Type[])[0]!) === true)) ) { return { context, @@ -170,15 +146,11 @@ function checkExpressionStatement( declaration.body !== undefined && typescript.isBlock(declaration.body) ) { - const returnStatements = declaration.body.statements.filter( - typescript.isReturnStatement, - ); + const returnStatements = declaration.body.statements.filter(typescript.isReturnStatement); if ( returnStatements.every( - (statement) => - statement.expression !== undefined && - tsApiUtils?.isThisKeyword(statement.expression), + (statement) => statement.expression !== undefined && tsApiUtils?.isThisKeyword(statement.expression), ) ) { return { @@ -198,9 +170,11 @@ function checkExpressionStatement( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - ExpressionStatement: checkExpressionStatement, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ExpressionStatement: checkExpressionStatement, + }, +); diff --git a/src/rules/no-let.ts b/src/rules/no-let.ts index 1f60df3d3..c5cb1165c 100644 --- a/src/rules/no-let.ts +++ b/src/rules/no-let.ts @@ -1,8 +1,5 @@ import type { TSESTree } from "@typescript-eslint/utils"; -import type { - JSONSchema4, - JSONSchema4ObjectSchema, -} from "@typescript-eslint/utils/json-schema"; +import type { JSONSchema4, JSONSchema4ObjectSchema } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; @@ -13,12 +10,7 @@ import { shouldIgnorePattern, } from "#/options"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; import { isInForLoopInitializer } from "#/utils/tree"; /** @@ -101,8 +93,7 @@ function checkVariableDeclaration( options: Readonly, ): RuleResult { const [optionsObject] = options; - const { allowInForLoopInit, ignoreIdentifierPattern, allowInFunctions } = - optionsObject; + const { allowInForLoopInit, ignoreIdentifierPattern, allowInFunctions } = optionsObject; if ( node.kind !== "let" || @@ -123,9 +114,11 @@ function checkVariableDeclaration( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - VariableDeclaration: checkVariableDeclaration, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + VariableDeclaration: checkVariableDeclaration, + }, +); diff --git a/src/rules/no-loop-statements.ts b/src/rules/no-loop-statements.ts index f11f5f980..156cf5907 100644 --- a/src/rules/no-loop-statements.ts +++ b/src/rules/no-loop-statements.ts @@ -3,12 +3,7 @@ import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#/utils/misc"; import type { ESLoop } from "#/utils/node-types"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; /** * The name of this rule. @@ -70,13 +65,15 @@ function checkLoop( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - ForStatement: checkLoop, - ForInStatement: checkLoop, - ForOfStatement: checkLoop, - WhileStatement: checkLoop, - DoWhileStatement: checkLoop, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ForStatement: checkLoop, + ForInStatement: checkLoop, + ForOfStatement: checkLoop, + WhileStatement: checkLoop, + DoWhileStatement: checkLoop, + }, +); diff --git a/src/rules/no-mixed-types.ts b/src/rules/no-mixed-types.ts index 1eee9c184..cbed6ae91 100644 --- a/src/rules/no-mixed-types.ts +++ b/src/rules/no-mixed-types.ts @@ -85,8 +85,7 @@ const meta: NamedCreateRuleCustomMeta = { type: "suggestion", docs: { category: "No Other Paradigms", - description: - "Restrict types so that only members of the same kind are allowed in them.", + description: "Restrict types so that only members of the same kind are allowed in them.", recommended: "recommended", recommendedSeverity: "error", requiresTypeChecking: true, @@ -126,9 +125,7 @@ function checkTSInterfaceDeclaration( ): RuleResult { return { context, - descriptors: hasTypeElementViolations(node.body.body, context) - ? [{ node, messageId: "generic" }] - : [], + descriptors: hasTypeElementViolations(node.body.body, context) ? [{ node, messageId: "generic" }] : [], }; } @@ -144,45 +141,32 @@ function checkTSTypeAliasDeclaration( context, descriptors: // TypeLiteral. - (isTSTypeLiteral(node.typeAnnotation) && - hasTypeElementViolations(node.typeAnnotation.members, context)) || + (isTSTypeLiteral(node.typeAnnotation) && hasTypeElementViolations(node.typeAnnotation.members, context)) || // TypeLiteral inside `Readonly<>`. (isTSTypeReference(node.typeAnnotation) && isIdentifier(node.typeAnnotation.typeName) && node.typeAnnotation.typeArguments !== undefined && node.typeAnnotation.typeArguments.params.length === 1 && isTSTypeLiteral(node.typeAnnotation.typeArguments.params[0]!) && - hasTypeElementViolations( - node.typeAnnotation.typeArguments.params[0].members, - context, - )) + hasTypeElementViolations(node.typeAnnotation.typeArguments.params[0].members, context)) ? [{ node, messageId: "generic" }] : [], }; } // Create the rule. -export const rule: Rule = - createRuleUsingFunction( - name, - meta, - defaultOptions, - (context, options) => { - const [{ checkInterfaces, checkTypeLiterals }] = options; +export const rule: Rule = createRuleUsingFunction< + keyof typeof errorMessages, + Options +>(name, meta, defaultOptions, (context, options) => { + const [{ checkInterfaces, checkTypeLiterals }] = options; - return Object.fromEntries( - ( - [ - [ - "TSInterfaceDeclaration", - checkInterfaces ? checkTSInterfaceDeclaration : undefined, - ], - [ - "TSTypeAliasDeclaration", - checkTypeLiterals ? checkTSTypeAliasDeclaration : undefined, - ], - ] as const - ).filter(([sel, fn]) => fn !== undefined), - ) as Record; - }, - ); + return Object.fromEntries( + ( + [ + ["TSInterfaceDeclaration", checkInterfaces ? checkTSInterfaceDeclaration : undefined], + ["TSTypeAliasDeclaration", checkTypeLiterals ? checkTSTypeAliasDeclaration : undefined], + ] as const + ).filter(([sel, fn]) => fn !== undefined), + ) as Record; +}); diff --git a/src/rules/no-promise-reject.ts b/src/rules/no-promise-reject.ts index 159df1fb4..792af77ce 100644 --- a/src/rules/no-promise-reject.ts +++ b/src/rules/no-promise-reject.ts @@ -3,18 +3,9 @@ import type { JSONSchema4 } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; import { getEnclosingFunction, getEnclosingTryStatement } from "#/utils/tree"; -import { - isFunctionLike, - isIdentifier, - isMemberExpression, -} from "#/utils/type-guards"; +import { isFunctionLike, isIdentifier, isMemberExpression } from "#/utils/type-guards"; /** * The name of this rule. @@ -137,11 +128,13 @@ function checkThrowStatement( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - CallExpression: checkCallExpression, - NewExpression: checkNewExpression, - ThrowStatement: checkThrowStatement, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + CallExpression: checkCallExpression, + NewExpression: checkNewExpression, + ThrowStatement: checkThrowStatement, + }, +); diff --git a/src/rules/no-return-void.ts b/src/rules/no-return-void.ts index 4b711b120..bd4a3236f 100644 --- a/src/rules/no-return-void.ts +++ b/src/rules/no-return-void.ts @@ -4,19 +4,8 @@ import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import tsApiUtils from "#/conditional-imports/ts-api-utils"; import { ruleNameScope } from "#/utils/misc"; import type { ESFunctionType } from "#/utils/node-types"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, - getTypeOfNode, -} from "#/utils/rule"; -import { - isFunctionLike, - isTSNullKeyword, - isTSUndefinedKeyword, - isTSVoidKeyword, -} from "#/utils/type-guards"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule, getTypeOfNode } from "#/utils/rule"; +import { isFunctionLike, isTSNullKeyword, isTSUndefinedKeyword, isTSVoidKeyword } from "#/utils/type-guards"; /** * The name of this rule. @@ -107,9 +96,7 @@ function checkFunction( if (node.returnType === undefined) { if (!ignoreInferredTypes && isFunctionLike(node)) { const functionType = getTypeOfNode(node, context); - const returnType = functionType - ?.getCallSignatures()?.[0] - ?.getReturnType(); + const returnType = functionType?.getCallSignatures()?.[0]?.getReturnType(); if ( returnType !== undefined && @@ -142,17 +129,19 @@ function checkFunction( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - ArrowFunctionExpression: checkFunction, - FunctionDeclaration: checkFunction, - FunctionExpression: checkFunction, - TSCallSignatureDeclaration: checkFunction, - TSConstructSignatureDeclaration: checkFunction, - TSDeclareFunction: checkFunction, - TSEmptyBodyFunctionExpression: checkFunction, - TSFunctionType: checkFunction, - TSMethodSignature: checkFunction, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ArrowFunctionExpression: checkFunction, + FunctionDeclaration: checkFunction, + FunctionExpression: checkFunction, + TSCallSignatureDeclaration: checkFunction, + TSConstructSignatureDeclaration: checkFunction, + TSDeclareFunction: checkFunction, + TSEmptyBodyFunctionExpression: checkFunction, + TSFunctionType: checkFunction, + TSMethodSignature: checkFunction, + }, +); diff --git a/src/rules/no-this-expressions.ts b/src/rules/no-this-expressions.ts index 19db69d86..c45da0e35 100644 --- a/src/rules/no-this-expressions.ts +++ b/src/rules/no-this-expressions.ts @@ -3,12 +3,7 @@ import type { JSONSchema4 } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; /** * The name of this rule. @@ -70,9 +65,11 @@ function checkThisExpression( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - ThisExpression: checkThisExpression, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ThisExpression: checkThisExpression, + }, +); diff --git a/src/rules/no-throw-statements.ts b/src/rules/no-throw-statements.ts index 2d763c691..51090da8f 100644 --- a/src/rules/no-throw-statements.ts +++ b/src/rules/no-throw-statements.ts @@ -3,17 +3,8 @@ import type { JSONSchema4 } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; -import { - getEnclosingFunction, - getEnclosingTryStatement, - isInPromiseHandlerFunction, -} from "#/utils/tree"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; +import { getEnclosingFunction, getEnclosingTryStatement, isInPromiseHandlerFunction } from "#/utils/tree"; /** * The name of this rule. @@ -122,9 +113,11 @@ function checkThrowStatement( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - ThrowStatement: checkThrowStatement, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ThrowStatement: checkThrowStatement, + }, +); diff --git a/src/rules/no-try-statements.ts b/src/rules/no-try-statements.ts index fbafd86ba..8677995a3 100644 --- a/src/rules/no-try-statements.ts +++ b/src/rules/no-try-statements.ts @@ -3,12 +3,7 @@ import type { JSONSchema4 } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; /** * The name of this rule. @@ -104,9 +99,11 @@ function checkTryStatement( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - TryStatement: checkTryStatement, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + TryStatement: checkTryStatement, + }, +); diff --git a/src/rules/prefer-immutable-types.ts b/src/rules/prefer-immutable-types.ts index c0d654b54..852090e81 100644 --- a/src/rules/prefer-immutable-types.ts +++ b/src/rules/prefer-immutable-types.ts @@ -1,12 +1,6 @@ import type { TSESTree } from "@typescript-eslint/utils"; -import type { - JSONSchema4, - JSONSchema4ObjectSchema, -} from "@typescript-eslint/utils/json-schema"; -import type { - ReportFixFunction, - RuleContext, -} from "@typescript-eslint/utils/ts-eslint"; +import type { JSONSchema4, JSONSchema4ObjectSchema } from "@typescript-eslint/utils/json-schema"; +import type { ReportFixFunction, RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; import { Immutability } from "is-immutable-type"; import type { Type, TypeNode } from "typescript"; @@ -97,17 +91,11 @@ type FixerConfigRaw = { type SuggestionsConfigRaw = Array; type FixerConfigRawMap = Partial< - Record< - "ReadonlyShallow" | "ReadonlyDeep" | "Immutable", - FixerConfigRaw | FixerConfigRaw[] | undefined - > + Record<"ReadonlyShallow" | "ReadonlyDeep" | "Immutable", FixerConfigRaw | FixerConfigRaw[] | undefined> >; type SuggestionConfigRawMap = Partial< - Record< - "ReadonlyShallow" | "ReadonlyDeep" | "Immutable", - SuggestionsConfigRaw[] | undefined - > + Record<"ReadonlyShallow" | "ReadonlyDeep" | "Immutable", SuggestionsConfigRaw[] | undefined> >; type FixerConfig = { @@ -141,30 +129,27 @@ const enforcementEnumOptions = [ /** * The non-shorthand schema for each option. */ -const optionExpandedSchema: JSONSchema4ObjectSchema["properties"] = deepmerge( - ignoreClassesOptionSchema, - { - enforcement: { - type: ["string", "number", "boolean"], - enum: enforcementEnumOptions, - }, - ignoreInferredTypes: { - type: "boolean", - }, - ignoreNamePattern: { - type: ["string", "array"], - items: { - type: "string", - }, +const optionExpandedSchema: JSONSchema4ObjectSchema["properties"] = deepmerge(ignoreClassesOptionSchema, { + enforcement: { + type: ["string", "number", "boolean"], + enum: enforcementEnumOptions, + }, + ignoreInferredTypes: { + type: "boolean", + }, + ignoreNamePattern: { + type: ["string", "array"], + items: { + type: "string", }, - ignoreTypePattern: { - type: ["string", "array"], - items: { - type: "string", - }, + }, + ignoreTypePattern: { + type: ["string", "array"], + items: { + type: "string", }, - } satisfies JSONSchema4ObjectSchema["properties"], -); + }, +} satisfies JSONSchema4ObjectSchema["properties"]); /** * The schema for each option. @@ -226,54 +211,53 @@ const suggestionsSchema: JSONSchema4 = { }, }; -const coreOptionsPropertiesSchema: NonNullable< - JSONSchema4ObjectSchema["properties"] -> = deepmerge(optionExpandedSchema, { - parameters: optionSchema, - returnTypes: optionSchema, - variables: { - oneOf: [ - { - type: "object", - properties: deepmerge(optionExpandedSchema, { - ignoreInFunctions: { - type: "boolean", - }, - } satisfies JSONSchema4ObjectSchema["properties"]), - additionalProperties: false, - }, - { - type: ["string", "number", "boolean"], - enum: enforcementEnumOptions, +const coreOptionsPropertiesSchema: NonNullable = deepmerge( + optionExpandedSchema, + { + parameters: optionSchema, + returnTypes: optionSchema, + variables: { + oneOf: [ + { + type: "object", + properties: deepmerge(optionExpandedSchema, { + ignoreInFunctions: { + type: "boolean", + }, + } satisfies JSONSchema4ObjectSchema["properties"]), + additionalProperties: false, + }, + { + type: ["string", "number", "boolean"], + enum: enforcementEnumOptions, + }, + ], + }, + fixer: { + type: "object", + properties: { + ReadonlyShallow: fixerSchema, + ReadonlyDeep: fixerSchema, + Immutable: fixerSchema, }, - ], - }, - fixer: { - type: "object", - properties: { - ReadonlyShallow: fixerSchema, - ReadonlyDeep: fixerSchema, - Immutable: fixerSchema, + additionalProperties: false, }, - additionalProperties: false, - }, - suggestions: { - type: "object", - properties: { - ReadonlyShallow: suggestionsSchema, - ReadonlyDeep: suggestionsSchema, - Immutable: suggestionsSchema, + suggestions: { + type: "object", + properties: { + ReadonlyShallow: suggestionsSchema, + ReadonlyDeep: suggestionsSchema, + Immutable: suggestionsSchema, + }, + additionalProperties: false, }, - additionalProperties: false, - }, -} satisfies JSONSchema4ObjectSchema["properties"]); + } satisfies JSONSchema4ObjectSchema["properties"], +); /** * The schema for the rule options. */ -const schema: JSONSchema4[] = [ - overridableOptionsSchema(coreOptionsPropertiesSchema), -]; +const schema: JSONSchema4[] = [overridableOptionsSchema(coreOptionsPropertiesSchema)]; /** * The default options for the rule. @@ -287,8 +271,7 @@ const defaultOptions = [ ReadonlyShallow: [ [ { - pattern: - "^([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*\\[\\])$", + pattern: "^([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*\\[\\])$", replace: "readonly $1", message: "Prepend with readonly.", }, @@ -314,14 +297,10 @@ const defaultOptions = [ * The possible error messages. */ const errorMessages = { - parameter: - 'Parameter should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', - returnType: - 'Return type should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', - variable: - 'Variable should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', - propertyImmutability: - 'Property should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', + parameter: 'Parameter should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', + returnType: 'Return type should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', + variable: 'Variable should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', + propertyImmutability: 'Property should have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', propertyModifier: "Property should have a readonly modifier.", propertyModifierSuggestion: "Add readonly modifier.", userDefined: "{{ message }}", @@ -334,8 +313,7 @@ const meta: NamedCreateRuleCustomMeta = { type: "suggestion", docs: { category: "No Mutations", - description: - "Require function parameters to be typed as certain immutability", + description: "Require function parameters to be typed as certain immutability", recommended: "recommended", recommendedSeverity: "error", requiresTypeChecking: true, @@ -346,10 +324,7 @@ const meta: NamedCreateRuleCustomMeta = { schema, }; -type Descriptor = RuleResult< - keyof typeof errorMessages, - RawOptions ->["descriptors"][number]; +type Descriptor = RuleResult["descriptors"][number]; type AllFixers = { fix: ReportFixFunction | null; @@ -367,15 +342,10 @@ function getAllFixers( ): AllFixers { const nodeText = context.sourceCode.getText(node).replaceAll(/\s+/gu, " "); - const fix = - fixerConfigs === false - ? null - : getConfiguredFixer(node, nodeText, fixerConfigs); + const fix = fixerConfigs === false ? null : getConfiguredFixer(node, nodeText, fixerConfigs); const suggestionFixers = - suggestionsConfigs === false - ? null - : getConfiguredSuggestionFixers(node, nodeText, suggestionsConfigs); + suggestionsConfigs === false ? null : getConfiguredSuggestionFixers(node, nodeText, suggestionsConfigs); return { fix, suggestionFixers }; } @@ -392,8 +362,7 @@ function getConfiguredFixer( if (config === undefined) { return null; } - return (fixer) => - fixer.replaceText(node, text.replace(config.pattern, config.replace)); + return (fixer) => fixer.replaceText(node, text.replace(config.pattern, config.replace)); } /** @@ -405,27 +374,19 @@ function getConfiguredSuggestionFixers( suggestionsConfigs: ReadonlyArray, ) { return suggestionsConfigs - .map( - ( - configs, - ): { fix: NonNullable; message: string } | null => { - const config = configs.find((c) => c.pattern.test(text)); - if (config === undefined) { - return null; - } - return { - fix: (fixer) => - fixer.replaceText( - node, - text.replace(config.pattern, config.replace), - ), - message: - config.message === undefined - ? `Replace with: ${text.replace(config.pattern, config.replace)}` - : text.replace(config.pattern, config.message), - }; - }, - ) + .map((configs): { fix: NonNullable; message: string } | null => { + const config = configs.find((c) => c.pattern.test(text)); + if (config === undefined) { + return null; + } + return { + fix: (fixer) => fixer.replaceText(node, text.replace(config.pattern, config.replace)), + message: + config.message === undefined + ? `Replace with: ${text.replace(config.pattern, config.replace)}` + : text.replace(config.pattern, config.message), + }; + }) .filter(isDefined); } @@ -443,13 +404,8 @@ function parseEnforcement(rawEnforcement: RawEnforcement) { /** * Get the fixer config for the the given enforcement level from the raw config given. */ -function parseFixerConfigs( - allRawConfigs: RawOptions[0]["fixer"], - enforcement: Immutability, -): FixerConfig[] | false { - const key = Immutability[enforcement] as keyof NonNullable< - typeof allRawConfigs - >; +function parseFixerConfigs(allRawConfigs: RawOptions[0]["fixer"], enforcement: Immutability): FixerConfig[] | false { + const key = Immutability[enforcement] as keyof NonNullable; const rawConfigs = allRawConfigs?.[key]; if (rawConfigs === undefined) { return false; @@ -468,9 +424,7 @@ function parseSuggestionsConfigs( rawSuggestions: RawOptions[0]["suggestions"], enforcement: Immutability, ): SuggestionsConfig[] | false { - const key = Immutability[enforcement] as keyof NonNullable< - typeof rawSuggestions - >; + const key = Immutability[enforcement] as keyof NonNullable; const rawConfigsSet = rawSuggestions?.[key]; if (rawConfigsSet === undefined) { return false; @@ -496,19 +450,13 @@ function getParameterTypeViolations( const parameterProperty = isTSParameterProperty(param); const actualParam = parameterProperty ? param.parameter : param; - const optionsToUse = getOptionsWithDefaults( - getCoreOptions(param, context, options), - ); + const optionsToUse = getOptionsWithDefaults(getCoreOptions(param, context, options)); if (optionsToUse === null) { return undefined; } - const { - parameters: rawOption, - fixer: rawFixerConfig, - suggestions: rawSuggestionsConfigs, - } = optionsToUse; + const { parameters: rawOption, fixer: rawFixerConfig, suggestions: rawSuggestionsConfigs } = optionsToUse; const { enforcement: rawEnforcement, ignoreInferredTypes, @@ -527,21 +475,13 @@ function getParameterTypeViolations( }), }; - const enforcement = parseEnforcement( - rawEnforcement ?? optionsToUse.enforcement, - ); - if ( - enforcement === false || - shouldIgnoreClasses(node, context, ignoreClasses) - ) { + const enforcement = parseEnforcement(rawEnforcement ?? optionsToUse.enforcement); + if (enforcement === false || shouldIgnoreClasses(node, context, ignoreClasses)) { return undefined; } const fixerConfigs = parseFixerConfigs(rawFixerConfig, enforcement); - const suggestionsConfigs = parseSuggestionsConfigs( - rawSuggestionsConfigs, - enforcement, - ); + const suggestionsConfigs = parseSuggestionsConfigs(rawSuggestionsConfigs, enforcement); if (shouldIgnorePattern(param, context, ignoreNamePattern)) { return undefined; @@ -569,27 +509,18 @@ function getParameterTypeViolations( (ignoreInferredTypes && actualParam.typeAnnotation === undefined) || // ignored (actualParam.typeAnnotation !== undefined && - shouldIgnorePattern( - actualParam.typeAnnotation, - context, - ignoreTypePattern, - )) || + shouldIgnorePattern(actualParam.typeAnnotation, context, ignoreTypePattern)) || // type guard (node.returnType !== undefined && isTSTypePredicate(node.returnType.typeAnnotation) && isIdentifier(node.returnType.typeAnnotation.parameterName) && isIdentifier(actualParam) && - actualParam.name === - node.returnType.typeAnnotation.parameterName.name) + actualParam.name === node.returnType.typeAnnotation.parameterName.name) ) { return undefined; } - const immutability = getTypeImmutabilityOfNode( - actualParam, - context, - enforcement, - ); + const immutability = getTypeImmutabilityOfNode(actualParam, context, enforcement); if (immutability >= enforcement) { return undefined; @@ -598,12 +529,7 @@ function getParameterTypeViolations( const { fix, suggestionFixers } = actualParam.typeAnnotation === undefined ? ({} as AllFixers) - : getAllFixers( - actualParam.typeAnnotation.typeAnnotation, - context, - fixerConfigs, - suggestionsConfigs, - ); + : getAllFixers(actualParam.typeAnnotation.typeAnnotation, context, fixerConfigs, suggestionsConfigs); return { node: actualParam, @@ -636,23 +562,14 @@ function getReturnTypeViolations( ): Descriptor[] { function getOptions(type: Type, typeNode: TypeNode | null) { const optionsToUse = getOptionsWithDefaults( - getCoreOptionsForType( - type, - typeNode, - context, - options, - ), + getCoreOptionsForType(type, typeNode, context, options), ); if (optionsToUse === null) { return null; } - const { - returnTypes: rawOption, - fixer: rawFixerConfig, - suggestions: rawSuggestionsConfigs, - } = optionsToUse; + const { returnTypes: rawOption, fixer: rawFixerConfig, suggestions: rawSuggestionsConfigs } = optionsToUse; const { enforcement: rawEnforcement, ignoreClasses, @@ -664,14 +581,10 @@ function getReturnTypeViolations( ignoreNamePattern: optionsToUse.ignoreNamePattern, ignoreTypePattern: optionsToUse.ignoreTypePattern, ignoreInferredTypes: optionsToUse.ignoreInferredTypes, - ...(typeof rawOption === "object" - ? rawOption - : { enforcement: rawOption }), + ...(typeof rawOption === "object" ? rawOption : { enforcement: rawOption }), }; - const enforcement = parseEnforcement( - rawEnforcement ?? optionsToUse.enforcement, - ); + const enforcement = parseEnforcement(rawEnforcement ?? optionsToUse.enforcement); if ( enforcement === false || @@ -682,10 +595,7 @@ function getReturnTypeViolations( } const fixerConfigs = parseFixerConfigs(rawFixerConfig, enforcement); - const suggestionsConfigs = parseSuggestionsConfigs( - rawSuggestionsConfigs, - enforcement, - ); + const suggestionsConfigs = parseSuggestionsConfigs(rawSuggestionsConfigs, enforcement); return { ignoreTypePattern, @@ -703,22 +613,14 @@ function getReturnTypeViolations( return []; } - const { ignoreTypePattern, enforcement, fixerConfigs, suggestionsConfigs } = - optionsToUse; + const { ignoreTypePattern, enforcement, fixerConfigs, suggestionsConfigs } = optionsToUse; - if ( - node.returnType?.typeAnnotation !== undefined && - !isTSTypePredicate(node.returnType.typeAnnotation) - ) { + if (node.returnType?.typeAnnotation !== undefined && !isTSTypePredicate(node.returnType.typeAnnotation)) { if (shouldIgnorePattern(node.returnType, context, ignoreTypePattern)) { return []; } - const immutability = getTypeImmutabilityOfNode( - node.returnType.typeAnnotation, - context, - enforcement, - ); + const immutability = getTypeImmutabilityOfNode(node.returnType.typeAnnotation, context, enforcement); if (immutability >= enforcement) { return []; @@ -758,36 +660,24 @@ function getReturnTypeViolations( } const returnTypes = getReturnTypesOfFunction(node, context); - if ( - returnTypes === null || - returnTypes.length !== 1 || - isImplementationOfOverload(node, context) - ) { + if (returnTypes === null || returnTypes.length !== 1 || isImplementationOfOverload(node, context)) { return []; } const returnType = returnTypes[0]!; - const optionsToUse = getOptions( - returnType, - (returnType as Type & { node: TypeNode }).node ?? null, - ); + const optionsToUse = getOptions(returnType, (returnType as Type & { node: TypeNode }).node ?? null); if (optionsToUse === null) { return []; } - const { ignoreInferredTypes, enforcement, fixerConfigs, suggestionsConfigs } = - optionsToUse; + const { ignoreInferredTypes, enforcement, fixerConfigs, suggestionsConfigs } = optionsToUse; if (ignoreInferredTypes) { return []; } - const immutability = getTypeImmutabilityOfType( - returnType, - context, - enforcement, - ); + const immutability = getTypeImmutabilityOfType(returnType, context, enforcement); if (immutability >= enforcement) { return []; @@ -796,12 +686,7 @@ function getReturnTypeViolations( const { fix, suggestionFixers } = node.returnType?.typeAnnotation === undefined ? ({} as AllFixers) - : getAllFixers( - node.returnType.typeAnnotation, - context, - fixerConfigs, - suggestionsConfigs, - ); + : getAllFixers(node.returnType.typeAnnotation, context, fixerConfigs, suggestionsConfigs); return [ { @@ -827,9 +712,7 @@ function getReturnTypeViolations( /** * Add the default options to the given options. */ -function getOptionsWithDefaults( - options: Readonly | null, -): Options | null { +function getOptionsWithDefaults(options: Readonly | null): Options | null { if (options === null) { return null; } @@ -870,9 +753,7 @@ function checkVariable( rawOptions: Readonly, ): RuleResult { const options = upgradeRawOverridableOptions(rawOptions[0]); - const optionsToUse = getOptionsWithDefaults( - getCoreOptions(node, context, options), - ); + const optionsToUse = getOptionsWithDefaults(getCoreOptions(node, context, options)); if (optionsToUse === null) { return { @@ -881,11 +762,7 @@ function checkVariable( }; } - const { - variables: rawOption, - fixer: rawFixerConfig, - suggestions: rawSuggestionsConfigs, - } = optionsToUse; + const { variables: rawOption, fixer: rawFixerConfig, suggestions: rawSuggestionsConfigs } = optionsToUse; const { enforcement: rawEnforcement, ignoreInferredTypes, @@ -902,9 +779,7 @@ function checkVariable( ...(typeof rawOption === "object" ? rawOption : { enforcement: rawOption }), }; - const enforcement = parseEnforcement( - rawEnforcement ?? optionsToUse.enforcement, - ); + const enforcement = parseEnforcement(rawEnforcement ?? optionsToUse.enforcement); if ( enforcement === false || @@ -921,8 +796,7 @@ function checkVariable( const propertyDefinition = isPropertyDefinition(node); if (propertyDefinition && !node.readonly) { - const fix: NonNullable | null = (fixer) => - fixer.insertTextBefore(node.key, "readonly "); + const fix: NonNullable | null = (fixer) => fixer.insertTextBefore(node.key, "readonly "); return { context, @@ -944,10 +818,7 @@ function checkVariable( const nodeWithTypeAnnotation = propertyDefinition ? node : node.id; - if ( - ignoreInferredTypes && - nodeWithTypeAnnotation.typeAnnotation === undefined - ) { + if (ignoreInferredTypes && nodeWithTypeAnnotation.typeAnnotation === undefined) { return { context, descriptors: [], @@ -956,11 +827,7 @@ function checkVariable( if ( nodeWithTypeAnnotation.typeAnnotation !== undefined && - shouldIgnorePattern( - nodeWithTypeAnnotation.typeAnnotation, - context, - ignoreTypePattern, - ) + shouldIgnorePattern(nodeWithTypeAnnotation.typeAnnotation, context, ignoreTypePattern) ) { return { context, @@ -979,33 +846,19 @@ function checkVariable( return null; } - const immutability = getTypeImmutabilityOfNode( - element, - context, - enforcement, - ); + const immutability = getTypeImmutabilityOfNode(element, context, enforcement); if (immutability >= enforcement) { return null; } const fixerConfigs = parseFixerConfigs(rawFixerConfig, enforcement); - const suggestionsConfigs = parseSuggestionsConfigs( - rawSuggestionsConfigs, - enforcement, - ); + const suggestionsConfigs = parseSuggestionsConfigs(rawSuggestionsConfigs, enforcement); const { fix, suggestionFixers } = - isMemberExpression(element) || - isProperty(element) || - element.typeAnnotation === undefined + isMemberExpression(element) || isProperty(element) || element.typeAnnotation === undefined ? ({} as AllFixers) - : getAllFixers( - element.typeAnnotation.typeAnnotation, - context, - fixerConfigs, - suggestionsConfigs, - ); + : getAllFixers(element.typeAnnotation.typeAnnotation, context, fixerConfigs, suggestionsConfigs); return { element, immutability, fix, suggestionFixers }; }); @@ -1014,46 +867,46 @@ function checkVariable( return { context, - descriptors: elementResults - .filter(isDefined) - .map(({ element, immutability, fix, suggestionFixers }) => { - const data = { - actual: Immutability[immutability], - expected: Immutability[enforcement], - }; + descriptors: elementResults.filter(isDefined).map(({ element, immutability, fix, suggestionFixers }) => { + const data = { + actual: Immutability[immutability], + expected: Immutability[enforcement], + }; - return { - node: element, - messageId, - data, - fix, - suggest: - suggestionFixers?.map(({ fix, message }) => ({ - messageId: "userDefined", - data: { - message, - }, - fix, - })) ?? null, - }; - }), + return { + node: element, + messageId, + data, + fix, + suggest: + suggestionFixers?.map(({ fix, message }) => ({ + messageId: "userDefined", + data: { + message, + }, + fix, + })) ?? null, + }; + }), }; } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - RawOptions ->(name, meta, defaultOptions, { - ArrowFunctionExpression: checkFunction, - FunctionDeclaration: checkFunction, - FunctionExpression: checkFunction, - TSCallSignatureDeclaration: checkFunction, - TSConstructSignatureDeclaration: checkFunction, - TSDeclareFunction: checkFunction, - TSEmptyBodyFunctionExpression: checkFunction, - TSFunctionType: checkFunction, - TSMethodSignature: checkFunction, - PropertyDefinition: checkVariable, - VariableDeclarator: checkVariable, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ArrowFunctionExpression: checkFunction, + FunctionDeclaration: checkFunction, + FunctionExpression: checkFunction, + TSCallSignatureDeclaration: checkFunction, + TSConstructSignatureDeclaration: checkFunction, + TSDeclareFunction: checkFunction, + TSEmptyBodyFunctionExpression: checkFunction, + TSFunctionType: checkFunction, + TSMethodSignature: checkFunction, + PropertyDefinition: checkVariable, + VariableDeclarator: checkVariable, + }, +); diff --git a/src/rules/prefer-property-signatures.ts b/src/rules/prefer-property-signatures.ts index 64b7eb39b..075aedb3f 100644 --- a/src/rules/prefer-property-signatures.ts +++ b/src/rules/prefer-property-signatures.ts @@ -3,12 +3,7 @@ import type { JSONSchema4 } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; import { isInReadonly } from "#/utils/tree"; /** @@ -97,9 +92,11 @@ function checkTSMethodSignature( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - TSMethodSignature: checkTSMethodSignature, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + TSMethodSignature: checkTSMethodSignature, + }, +); diff --git a/src/rules/prefer-readonly-type.ts b/src/rules/prefer-readonly-type.ts index dc2307d8f..4b87837f5 100644 --- a/src/rules/prefer-readonly-type.ts +++ b/src/rules/prefer-readonly-type.ts @@ -135,10 +135,7 @@ const errorMessages = { */ const meta: NamedCreateRuleCustomMeta = { deprecated: true, - replacedBy: [ - "functional/prefer-immutable-types", - "functional/type-declaration-immutability", - ], + replacedBy: ["functional/prefer-immutable-types", "functional/type-declaration-immutability"], type: "suggestion", docs: { category: "No Mutations", @@ -157,10 +154,7 @@ const mutableToImmutableTypes = new Map([ ["Map", "ReadonlyMap"], ["Set", "ReadonlySet"], ]); -const mutableTypeRegex = new RegExp( - `^${[...mutableToImmutableTypes.keys()].join("|")}$`, - "u", -); +const mutableTypeRegex = new RegExp(`^${[...mutableToImmutableTypes.keys()].join("|")}$`, "u"); /** * For backwards compatibility. @@ -180,20 +174,10 @@ function shouldIgnorePattern2( isTSTypeReference(node); if (isTypeNode) { - return shouldIgnorePattern2( - node.parent, - context, - ignorePattern, - ignoreAccessorPattern, - ); + return shouldIgnorePattern2(node.parent, context, ignorePattern, ignoreAccessorPattern); } - return shouldIgnorePattern( - node, - context, - ignorePattern, - ignoreAccessorPattern, - ); + return shouldIgnorePattern(node, context, ignorePattern, ignoreAccessorPattern); } /** @@ -205,14 +189,8 @@ function checkArrayOrTupleType( options: Readonly, ): RuleResult { const [optionsObject] = options; - const { - allowLocalMutation, - allowMutableReturnType, - ignoreClass, - ignoreCollections, - ignoreInterface, - ignorePattern, - } = optionsObject; + const { allowLocalMutation, allowMutableReturnType, ignoreClass, ignoreCollections, ignoreInterface, ignorePattern } = + optionsObject; if ( shouldIgnoreClasses(node, context, ignoreClass) || @@ -230,9 +208,7 @@ function checkArrayOrTupleType( return { context, descriptors: - (node.parent === undefined || - !isTSTypeOperator(node.parent) || - node.parent.operator !== "readonly") && + (node.parent === undefined || !isTSTypeOperator(node.parent) || node.parent.operator !== "readonly") && (!allowMutableReturnType || !isInReturnType(node)) ? [ { @@ -241,17 +217,10 @@ function checkArrayOrTupleType( fix: node.parent !== undefined && isTSArrayType(node.parent) ? (fixer) => [ - fixer.insertTextBefore( - node as TSESTree.Node, - "(readonly ", - ), + fixer.insertTextBefore(node as TSESTree.Node, "(readonly "), fixer.insertTextAfter(node as TSESTree.Node, ")"), ] - : (fixer) => - fixer.insertTextBefore( - node as TSESTree.Node, - "readonly ", - ), + : (fixer) => fixer.insertTextBefore(node as TSESTree.Node, "readonly "), }, ] : [], @@ -267,8 +236,7 @@ function checkMappedType( options: Readonly, ): RuleResult { const [optionsObject] = options; - const { allowLocalMutation, ignoreClass, ignoreInterface, ignorePattern } = - optionsObject; + const { allowLocalMutation, ignoreClass, ignoreInterface, ignorePattern } = optionsObject; if ( shouldIgnoreClasses(node, context, ignoreClass) || @@ -291,11 +259,7 @@ function checkMappedType( { node, messageId: "property", - fix: (fixer) => - fixer.insertTextBeforeRange( - [node.range[0] + 1, node.range[1]], - " readonly", - ), + fix: (fixer) => fixer.insertTextBeforeRange([node.range[0] + 1, node.range[1]], " readonly"), }, ], }; @@ -310,14 +274,8 @@ function checkTypeReference( options: Readonly, ): RuleResult { const [optionsObject] = options; - const { - allowLocalMutation, - ignoreClass, - ignoreInterface, - ignorePattern, - allowMutableReturnType, - ignoreCollections, - } = optionsObject; + const { allowLocalMutation, ignoreClass, ignoreInterface, ignorePattern, allowMutableReturnType, ignoreCollections } = + optionsObject; if ( shouldIgnoreClasses(node, context, ignoreClass) || @@ -342,18 +300,12 @@ function checkTypeReference( return { context, descriptors: - immutableType !== undefined && - immutableType.length > 0 && - (!allowMutableReturnType || !isInReturnType(node)) + immutableType !== undefined && immutableType.length > 0 && (!allowMutableReturnType || !isInReturnType(node)) ? [ { node, messageId: "type", - fix: (fixer) => - fixer.replaceText( - node.typeName as TSESTree.Node, - immutableType, - ), + fix: (fixer) => fixer.replaceText(node.typeName as TSESTree.Node, immutableType), }, ] : [], @@ -378,13 +330,7 @@ function checkProperty( options: Readonly, ): RuleResult { const [optionsObject] = options; - const { - allowLocalMutation, - ignoreClass, - ignoreInterface, - ignorePattern, - allowMutableReturnType, - } = optionsObject; + const { allowLocalMutation, ignoreClass, ignoreInterface, ignorePattern, allowMutableReturnType } = optionsObject; if ( shouldIgnoreClasses(node, context, ignoreClass) || @@ -408,19 +354,10 @@ function checkProperty( messageId: "property", fix: isTSIndexSignature(node) || isTSPropertySignature(node) - ? (fixer) => - fixer.insertTextBefore(node as TSESTree.Node, "readonly ") + ? (fixer) => fixer.insertTextBefore(node as TSESTree.Node, "readonly ") : isTSParameterProperty(node) - ? (fixer) => - fixer.insertTextBefore( - node.parameter as TSESTree.Node, - "readonly ", - ) - : (fixer) => - fixer.insertTextBefore( - node.key as TSESTree.Node, - "readonly ", - ), + ? (fixer) => fixer.insertTextBefore(node.parameter as TSESTree.Node, "readonly ") + : (fixer) => fixer.insertTextBefore(node.key as TSESTree.Node, "readonly "), }, ] : [], @@ -440,14 +377,8 @@ function checkImplicitType( options: Readonly, ): RuleResult { const [optionsObject] = options; - const { - allowLocalMutation, - ignoreClass, - ignoreInterface, - ignorePattern, - checkImplicit, - ignoreCollections, - } = optionsObject; + const { allowLocalMutation, ignoreClass, ignoreInterface, ignorePattern, checkImplicit, ignoreCollections } = + optionsObject; if ( !checkImplicit || @@ -501,8 +432,7 @@ function checkImplicitType( { node: declarator.node, messageId: "implicit", - fix: (fixer) => - fixer.insertTextAfter(declarator.id, ": readonly unknown[]"), + fix: (fixer) => fixer.insertTextAfter(declarator.id, ": readonly unknown[]"), }, ] : [], @@ -511,20 +441,22 @@ function checkImplicitType( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - ArrowFunctionExpression: checkImplicitType, - PropertyDefinition: checkProperty, - FunctionDeclaration: checkImplicitType, - FunctionExpression: checkImplicitType, - TSArrayType: checkArrayOrTupleType, - TSIndexSignature: checkProperty, - TSParameterProperty: checkProperty, - TSPropertySignature: checkProperty, - TSTupleType: checkArrayOrTupleType, - TSMappedType: checkMappedType, - TSTypeReference: checkTypeReference, - VariableDeclaration: checkImplicitType, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + ArrowFunctionExpression: checkImplicitType, + PropertyDefinition: checkProperty, + FunctionDeclaration: checkImplicitType, + FunctionExpression: checkImplicitType, + TSArrayType: checkArrayOrTupleType, + TSIndexSignature: checkProperty, + TSParameterProperty: checkProperty, + TSPropertySignature: checkProperty, + TSTupleType: checkArrayOrTupleType, + TSMappedType: checkMappedType, + TSTypeReference: checkTypeReference, + VariableDeclaration: checkImplicitType, + }, +); diff --git a/src/rules/prefer-tacit.ts b/src/rules/prefer-tacit.ts index 20445a9fe..047e2a6aa 100644 --- a/src/rules/prefer-tacit.ts +++ b/src/rules/prefer-tacit.ts @@ -106,8 +106,7 @@ function isCallerViolation( if ((calleeType.symbol as unknown) === undefined) { return false; } - const tsDeclaration = - calleeType.symbol.valueDeclaration ?? calleeType.symbol.declarations?.[0]; + const tsDeclaration = calleeType.symbol.valueDeclaration ?? calleeType.symbol.declarations?.[0]; if (tsDeclaration === undefined) { return false; @@ -115,9 +114,7 @@ function isCallerViolation( return getTypeOfTSNode(tsDeclaration, context) .getCallSignatures() - .some( - (signature) => signature.parameters.length === caller.arguments.length, - ); + .some((signature) => signature.parameters.length === caller.arguments.length); } /** @@ -130,10 +127,7 @@ function fixFunctionCallToReference( caller: TSESTree.CallExpression, ): RuleFix[] | null { // Fix to Instantiation Expression. - if ( - caller.typeArguments !== undefined && - caller.typeArguments.params.length > 0 - ) { + if (caller.typeArguments !== undefined && caller.typeArguments.params.length > 0) { return [ fixer.removeRange([node.range[0], caller.callee.range[0]]), fixer.removeRange([caller.typeArguments.range[1], node.range[1]]), @@ -144,9 +138,7 @@ function fixFunctionCallToReference( fixer.replaceText( node, isMemberExpression(caller.callee) - ? `${context.sourceCode.getText( - caller.callee, - )}.bind(${context.sourceCode.getText(caller.callee.object)})` + ? `${context.sourceCode.getText(caller.callee)}.bind(${context.sourceCode.getText(caller.callee.object)})` : context.sourceCode.getText(caller.callee), ), ]; @@ -164,29 +156,18 @@ function buildSuggestions( { messageId: "generic", fix: (fixer) => { - const functionCallToReference = fixFunctionCallToReference( - context, - fixer, - node, - caller, - ); + const functionCallToReference = fixFunctionCallToReference(context, fixer, node, caller); if (functionCallToReference === null) { return null; } - if ( - node.type === TSESTree.AST_NODE_TYPES.FunctionDeclaration && - !isNested(node) - ) { + if (node.type === TSESTree.AST_NODE_TYPES.FunctionDeclaration && !isNested(node)) { if (node.id === null) { return null; } return [ - fixer.insertTextBefore( - node as TSESTree.Node, - `const ${node.id.name} = `, - ), + fixer.insertTextBefore(node as TSESTree.Node, `const ${node.id.name} = `), fixer.insertTextAfter(node as TSESTree.Node, `;`), ...functionCallToReference, ]; @@ -209,10 +190,7 @@ function getCallDescriptors( ): Array> { const [{ checkMemberExpressions }] = options; - if ( - !isIdentifier(caller.callee) && - !(checkMemberExpressions && isMemberExpression(caller.callee)) - ) { + if (!isIdentifier(caller.callee) && !(checkMemberExpressions && isMemberExpression(caller.callee))) { return []; } @@ -220,11 +198,7 @@ function getCallDescriptors( node.params.length === caller.arguments.length && node.params.every((param, index) => { const callArg = caller.arguments[index]!; - return ( - isIdentifier(callArg) && - isIdentifier(param) && - callArg.name === param.name - ); + return isIdentifier(callArg) && isIdentifier(param) && callArg.name === param.name; }) ) { const calleeType = getTypeOfNode(caller.callee, context); @@ -272,12 +246,7 @@ function getNestedCallDescriptors( node.body.body[0].argument !== null && isCallExpression(node.body.body[0].argument) ) { - return getCallDescriptors( - node, - context, - options, - node.body.body[0].argument, - ); + return getCallDescriptors(node, context, options, node.body.body[0].argument); } return []; } @@ -300,11 +269,13 @@ function checkFunction( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - FunctionDeclaration: checkFunction, - FunctionExpression: checkFunction, - ArrowFunctionExpression: checkFunction, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + FunctionDeclaration: checkFunction, + FunctionExpression: checkFunction, + ArrowFunctionExpression: checkFunction, + }, +); diff --git a/src/rules/readonly-type.ts b/src/rules/readonly-type.ts index 7c7fd2480..8682e2512 100644 --- a/src/rules/readonly-type.ts +++ b/src/rules/readonly-type.ts @@ -1,17 +1,9 @@ import type { TSESTree } from "@typescript-eslint/utils"; import type { JSONSchema4 } from "@typescript-eslint/utils/json-schema"; -import type { - ReportDescriptor, - RuleContext, -} from "@typescript-eslint/utils/ts-eslint"; +import type { ReportDescriptor, RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#/utils/misc"; -import { - type NamedCreateRuleCustomMeta, - type Rule, - type RuleResult, - createRule, -} from "#/utils/rule"; +import { type NamedCreateRuleCustomMeta, type Rule, type RuleResult, createRule } from "#/utils/rule"; import { getReadonly } from "#/utils/tree"; import { isDefined, @@ -56,10 +48,8 @@ const defaultOptions: Options = ["generic"]; * The possible error messages. */ const errorMessages = { - generic: - "Readonly type using 'readonly' keyword is forbidden. Use 'Readonly' instead.", - keyword: - "Readonly type using 'Readonly' is forbidden. Use 'readonly' keyword instead.", + generic: "Readonly type using 'readonly' keyword is forbidden. Use 'Readonly' instead.", + keyword: "Readonly type using 'Readonly' is forbidden. Use 'readonly' keyword instead.", } as const; /** @@ -69,8 +59,7 @@ const meta: NamedCreateRuleCustomMeta = { type: "suggestion", docs: { category: "Stylistic", - description: - "Require consistently using either `readonly` keywords or `Readonly`", + description: "Require consistently using either `readonly` keywords or `Readonly`", recommended: "recommended", recommendedSeverity: "error", requiresTypeChecking: true, @@ -97,30 +86,20 @@ function checkTypeLiteral( return { context, descriptors: node.members - .map( - ( - member, - ): ReportDescriptor | undefined => { - if ( - (isPropertyDefinition(member) || - isTSParameterProperty(member) || - isTSPropertySignature(member)) && - member.readonly - ) { - return { - node: member.key, - messageId: "generic", - fix: (fixer) => - fixer.replaceText( - member, - sourceCode.getText(member).replace(/readonly /u, ""), - ), - }; - } - - return undefined; - }, - ) + .map((member): ReportDescriptor | undefined => { + if ( + (isPropertyDefinition(member) || isTSParameterProperty(member) || isTSPropertySignature(member)) && + member.readonly + ) { + return { + node: member.key, + messageId: "generic", + fix: (fixer) => fixer.replaceText(member, sourceCode.getText(member).replace(/readonly /u, "")), + }; + } + + return undefined; + }) .filter(isDefined), }; } @@ -129,9 +108,7 @@ function checkTypeLiteral( context, descriptors: [ { - node: isTSTypeReference(readonlyWrapper) - ? readonlyWrapper.typeName - : readonlyWrapper, + node: isTSTypeReference(readonlyWrapper) ? readonlyWrapper.typeName : readonlyWrapper, messageId: "keyword", fix: (fixer) => { const text = sourceCode.getText(readonlyWrapper); @@ -145,14 +122,8 @@ function checkTypeLiteral( const endCutPoint = end!.index; return [ - fixer.removeRange([ - readonlyWrapper.range[0], - readonlyWrapper.range[0] + startCutPoint, - ]), - fixer.removeRange([ - readonlyWrapper.range[1] - text.length + endCutPoint, - readonlyWrapper.range[1], - ]), + fixer.removeRange([readonlyWrapper.range[0], readonlyWrapper.range[0] + startCutPoint]), + fixer.removeRange([readonlyWrapper.range[1] - text.length + endCutPoint, readonlyWrapper.range[1]]), ...node.members .map((member) => { if ( @@ -199,10 +170,7 @@ function checkTypeLiteral( fixer.insertTextBefore(node, "Readonly<"), fixer.insertTextAfter(node, ">"), ...node.members.map((member) => - fixer.replaceText( - member, - sourceCode.getText(member).replace(/readonly /u, ""), - ), + fixer.replaceText(member, sourceCode.getText(member).replace(/readonly /u, "")), ), ], }, @@ -218,9 +186,11 @@ function checkTypeLiteral( } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - TSTypeLiteral: checkTypeLiteral, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + TSTypeLiteral: checkTypeLiteral, + }, +); diff --git a/src/rules/type-declaration-immutability.ts b/src/rules/type-declaration-immutability.ts index 239f4e08d..96f731e76 100644 --- a/src/rules/type-declaration-immutability.ts +++ b/src/rules/type-declaration-immutability.ts @@ -1,8 +1,5 @@ import type { TSESTree } from "@typescript-eslint/utils"; -import type { - JSONSchema4, - JSONSchema4ObjectSchema, -} from "@typescript-eslint/utils/json-schema"; +import type { JSONSchema4, JSONSchema4ObjectSchema } from "@typescript-eslint/utils/json-schema"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; import { Immutability } from "is-immutable-type"; @@ -63,13 +60,8 @@ type Options = [ IgnoreIdentifierPatternOption & { rules: Array<{ identifiers: string | string[]; - immutability: Exclude< - Immutability | keyof typeof Immutability, - "Unknown" - >; - comparator?: - | RuleEnforcementComparator - | keyof typeof RuleEnforcementComparator; + immutability: Exclude; + comparator?: RuleEnforcementComparator | keyof typeof RuleEnforcementComparator; fixer?: FixerConfigRaw | FixerConfigRaw[] | false; suggestions?: FixerConfigRaw[] | false; }>; @@ -149,9 +141,7 @@ const schema: JSONSchema4[] = [ immutability: { type: ["string", "number"], enum: Object.values(Immutability).filter( - (i) => - i !== Immutability.Unknown && - i !== Immutability[Immutability.Unknown], + (i) => i !== Immutability.Unknown && i !== Immutability[Immutability.Unknown], ), }, comparator: { @@ -194,12 +184,9 @@ const defaultOptions: Options = [ */ const errorMessages = { Less: 'This type is declare to have an immutability less than "{{ expected }}" (actual: "{{ actual }}").', - AtLeast: - 'This type is declare to have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', - Exactly: - 'This type is declare to have an immutability of exactly "{{ expected }}" (actual: "{{ actual }}").', - AtMost: - 'This type is declare to have an immutability of at most "{{ expected }}" (actual: "{{ actual }}").', + AtLeast: 'This type is declare to have an immutability of at least "{{ expected }}" (actual: "{{ actual }}").', + Exactly: 'This type is declare to have an immutability of exactly "{{ expected }}" (actual: "{{ actual }}").', + AtMost: 'This type is declare to have an immutability of at most "{{ expected }}" (actual: "{{ actual }}").', More: 'This type is declare to have an immutability more than "{{ expected }}" (actual: "{{ actual }}").', } as const; @@ -232,10 +219,7 @@ export type ImmutabilityRule = { suggestions: SuggestionsConfig | false; }; -type Descriptor = RuleResult< - keyof typeof errorMessages, - Options ->["descriptors"][number]; +type Descriptor = RuleResult["descriptors"][number]; /** * Get all the rules that were given and upgrade them. @@ -249,10 +233,7 @@ function getRules(options: Readonly): ImmutabilityRule[] { ? rule.identifiers.map((id) => new RegExp(id, "u")) : [new RegExp(rule.identifiers, "u")]; - const immutability = - typeof rule.immutability === "string" - ? Immutability[rule.immutability] - : rule.immutability; + const immutability = typeof rule.immutability === "string" ? Immutability[rule.immutability] : rule.immutability; const comparator = rule.comparator === undefined @@ -306,11 +287,7 @@ function getRuleToApply( return undefined; } - return rules.find((rule) => - rule.identifiers.some((pattern) => - texts.some((text) => pattern.test(text)), - ), - ); + return rules.find((rule) => rule.identifiers.some((pattern) => texts.some((text) => pattern.test(text)))); } /** @@ -326,8 +303,7 @@ function getConfiguredFixer( if (config === undefined) { return null; } - return (fixer) => - fixer.replaceText(node, text.replace(config.pattern, config.replace)); + return (fixer) => fixer.replaceText(node, text.replace(config.pattern, config.replace)); } /** @@ -345,8 +321,7 @@ function getConfiguredSuggestions( return null; } return matchingConfig.map((config) => ({ - fix: (fixer) => - fixer.replaceText(node, text.replace(config.pattern, config.replace)), + fix: (fixer) => fixer.replaceText(node, text.replace(config.pattern, config.replace)), messageId, })); } @@ -354,10 +329,7 @@ function getConfiguredSuggestions( /** * Compare the actual immutability to the expected immutability. */ -function compareImmutability( - rule: Readonly, - actual: Immutability, -) { +function compareImmutability(rule: Readonly, actual: Immutability) { switch (rule.comparator) { case RuleEnforcementComparator.Less: { return actual < rule.immutability; @@ -394,9 +366,7 @@ function getResults( }; } - const messageId = RuleEnforcementComparator[ - rule.comparator - ] as keyof typeof RuleEnforcementComparator; + const messageId = RuleEnforcementComparator[rule.comparator] as keyof typeof RuleEnforcementComparator; const fix = rule.fixers === false || isTSInterfaceDeclaration(node) @@ -406,12 +376,7 @@ function getResults( const suggest = rule.suggestions === false || isTSInterfaceDeclaration(node) ? null - : getConfiguredSuggestions( - node.typeAnnotation, - context, - rule.suggestions, - messageId, - ); + : getConfiguredSuggestions(node.typeAnnotation, context, rule.suggestions, messageId); return { context, @@ -465,20 +430,18 @@ function checkTypeDeclaration( ? rule.immutability + 1 : undefined; - const immutability = getTypeImmutabilityOfNode( - node, - context, - maxImmutability, - ); + const immutability = getTypeImmutabilityOfNode(node, context, maxImmutability); return getResults(node, context, rule, immutability); } // Create the rule. -export const rule: Rule = createRule< - keyof typeof errorMessages, - Options ->(name, meta, defaultOptions, { - TSTypeAliasDeclaration: checkTypeDeclaration, - TSInterfaceDeclaration: checkTypeDeclaration, -}); +export const rule: Rule = createRule( + name, + meta, + defaultOptions, + { + TSTypeAliasDeclaration: checkTypeDeclaration, + TSInterfaceDeclaration: checkTypeDeclaration, + }, +); diff --git a/src/settings/immutability.ts b/src/settings/immutability.ts index 2338f2f42..21c86405a 100644 --- a/src/settings/immutability.ts +++ b/src/settings/immutability.ts @@ -64,53 +64,33 @@ function loadImmutabilityOverrides( return undefined; } - const raw = Array.isArray(overridesSetting) - ? overridesSetting - : (overridesSetting.values ?? []); + const raw = Array.isArray(overridesSetting) ? overridesSetting : (overridesSetting.values ?? []); const upgraded = raw.map((rawValue) => { const { type, to, from, ...rest } = rawValue; const value = { type, to: typeof to === "string" ? Immutability[to] : to, - from: - from === undefined - ? undefined - : typeof from === "string" - ? Immutability[from] - : from, + from: from === undefined ? undefined : typeof from === "string" ? Immutability[from] : from, } as ImmutabilityOverrides[number]; if (value.type === undefined) { - throw new Error( - `Override is missing required "type" property. Value: "${JSON.stringify( - rawValue, - )}"`, - ); + throw new Error(`Override is missing required "type" property. Value: "${JSON.stringify(rawValue)}"`); } if (value.to === undefined) { - throw new Error( - `Override is missing required "to" property. Value: "${JSON.stringify( - rawValue, - )}"`, - ); + throw new Error(`Override is missing required "to" property. Value: "${JSON.stringify(rawValue)}"`); } const restKeys = Object.keys(rest); if (restKeys.length > 0) { throw new Error( - `Override is contains unknown property(s) "${restKeys.join( - ", ", - )}". Value: "${JSON.stringify(rawValue)}"`, + `Override is contains unknown property(s) "${restKeys.join(", ")}". Value: "${JSON.stringify(rawValue)}"`, ); } return value; }); - const keepDefault = - Array.isArray(overridesSetting) || overridesSetting.keepDefault !== false; + const keepDefault = Array.isArray(overridesSetting) || overridesSetting.keepDefault !== false; - return keepDefault - ? [...getDefaultImmutabilityOverrides(), ...upgraded] - : upgraded; + return keepDefault ? [...getDefaultImmutabilityOverrides(), ...upgraded] : upgraded; } diff --git a/src/utils/conditional-imports/ts-api-utils.ts b/src/utils/conditional-imports/ts-api-utils.ts index 9a9ee4f63..e2964d401 100644 --- a/src/utils/conditional-imports/ts-api-utils.ts +++ b/src/utils/conditional-imports/ts-api-utils.ts @@ -1,6 +1,6 @@ import { createRequire } from "node:module"; -import type tsApiUtils from "ts-api-utils"; +import type * as tsApiUtils from "ts-api-utils"; import typescript from "#/conditional-imports/typescript"; diff --git a/src/utils/misc.ts b/src/utils/misc.ts index 1524af164..705afac9d 100644 --- a/src/utils/misc.ts +++ b/src/utils/misc.ts @@ -32,9 +32,7 @@ export function isExpected(expected: T): (actual: T) => boolean { /** * Does the given ExpressionStatement specify directive prologues. */ -export function isDirectivePrologue( - node: TSESTree.ExpressionStatement, -): boolean { +export function isDirectivePrologue(node: TSESTree.ExpressionStatement): boolean { return ( node.expression.type === AST_NODE_TYPES.Literal && typeof node.expression.value === "string" && @@ -53,39 +51,33 @@ function getNodeIdentifierText( return undefined; } - let m_identifierText: string | undefined | null = null; + let mut_identifierText: string | undefined | null = null; if (isIdentifier(node) || isPrivateIdentifier(node)) { - m_identifierText = node.name; + mut_identifierText = node.name; } else if (hasID(node) && isDefined(node.id)) { - m_identifierText = getNodeIdentifierText(node.id, context); + mut_identifierText = getNodeIdentifierText(node.id, context); } else if (hasKey(node) && isDefined(node.key)) { - m_identifierText = getNodeIdentifierText(node.key, context); + mut_identifierText = getNodeIdentifierText(node.key, context); } else if (isAssignmentExpression(node)) { - m_identifierText = getNodeIdentifierText(node.left, context); + mut_identifierText = getNodeIdentifierText(node.left, context); } else if (isMemberExpression(node)) { - m_identifierText = `${getNodeIdentifierText(node.object, context)}.${getNodeIdentifierText( + mut_identifierText = `${getNodeIdentifierText(node.object, context)}.${getNodeIdentifierText( node.property, context, )}`; } else if (isThisExpression(node)) { - m_identifierText = "this"; + mut_identifierText = "this"; } else if (isUnaryExpression(node)) { - m_identifierText = getNodeIdentifierText(node.argument, context); + mut_identifierText = getNodeIdentifierText(node.argument, context); } else if (isTSTypeAnnotation(node)) { - m_identifierText = context.sourceCode - .getText(node.typeAnnotation as TSESTree.Node) - .replaceAll(/\s+/gu, ""); - } else if ( - isTSAsExpression(node) || - isTSNonNullExpression(node) || - isChainExpression(node) - ) { - m_identifierText = getNodeIdentifierText(node.expression, context); + mut_identifierText = context.sourceCode.getText(node.typeAnnotation as TSESTree.Node).replaceAll(/\s+/gu, ""); + } else if (isTSAsExpression(node) || isTSNonNullExpression(node) || isChainExpression(node)) { + mut_identifierText = getNodeIdentifierText(node.expression, context); } - if (m_identifierText !== null) { - return m_identifierText; + if (mut_identifierText !== null) { + return mut_identifierText; } const keyInObjectExpression = getKeyOfValueInObjectExpression(node); @@ -99,10 +91,7 @@ function getNodeIdentifierText( /** * Get the code of the given node. */ -export function getNodeCode( - node: TSESTree.Node, - context: Readonly>, -): string { +export function getNodeCode(node: TSESTree.Node, context: Readonly>): string { return context.sourceCode.getText(node); } @@ -115,9 +104,7 @@ export function getNodeIdentifierTexts( ): string[] { return ( isVariableDeclaration(node) - ? node.declarations.flatMap((declarator) => - getNodeIdentifierText(declarator, context), - ) + ? node.declarations.flatMap((declarator) => getNodeIdentifierText(declarator, context)) : [getNodeIdentifierText(node, context)] ).filter((text): text is string => text !== undefined); } diff --git a/src/utils/node-types.ts b/src/utils/node-types.ts index 51cbf4eba..22436b2d7 100644 --- a/src/utils/node-types.ts +++ b/src/utils/node-types.ts @@ -1,9 +1,6 @@ import type { TSESTree } from "@typescript-eslint/utils"; -export type ESFunction = - | TSESTree.ArrowFunctionExpression - | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression; +export type ESFunction = TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression; export type ESFunctionType = | ESFunction @@ -31,6 +28,4 @@ export type ESProperty = | TSESTree.TSParameterProperty | TSESTree.TSPropertySignature; -export type ESTypeDeclaration = - | TSESTree.TSInterfaceDeclaration - | TSESTree.TSTypeAliasDeclaration; +export type ESTypeDeclaration = TSESTree.TSInterfaceDeclaration | TSESTree.TSTypeAliasDeclaration; diff --git a/src/utils/rule.ts b/src/utils/rule.ts index 7585f4fd5..f57921863 100644 --- a/src/utils/rule.ts +++ b/src/utils/rule.ts @@ -1,22 +1,9 @@ import assert from "node:assert/strict"; import type { TSESTree } from "@typescript-eslint/utils"; -import { - type NamedCreateRuleMeta, - RuleCreator, - getParserServices, -} from "@typescript-eslint/utils/eslint-utils"; -import type { - ReportDescriptor, - RuleContext, - RuleListener, - RuleModule, -} from "@typescript-eslint/utils/ts-eslint"; -import { - Immutability, - type ImmutabilityOverrides, - getTypeImmutability, -} from "is-immutable-type"; +import { type NamedCreateRuleMeta, RuleCreator, getParserServices } from "@typescript-eslint/utils/eslint-utils"; +import type { ReportDescriptor, RuleContext, RuleListener, RuleModule } from "@typescript-eslint/utils/ts-eslint"; +import { Immutability, type ImmutabilityOverrides, getTypeImmutability } from "is-immutable-type"; import { isIntrinsicErrorType } from "ts-api-utils"; import type { Node as TSNode, Type, TypeNode } from "typescript"; @@ -31,13 +18,7 @@ type Docs = { /** * Used for creating category configs and splitting the README rules list into sub-lists. */ - category: - | "Currying" - | "No Exceptions" - | "No Mutations" - | "No Other Paradigms" - | "No Statements" - | "Stylistic"; + category: "Currying" | "No Exceptions" | "No Mutations" | "No Other Paradigms" | "No Statements" | "Stylistic"; recommended: "recommended" | "strict" | false; recommendedSeverity: "error" | "warn"; @@ -50,18 +31,16 @@ type Docs = { /** * Any custom rule meta properties. */ -export type NamedCreateRuleCustomMeta = NamedCreateRuleMeta< - T, - Docs ->; +export type NamedCreateRuleCustomMeta = NamedCreateRuleMeta; /** * The definition of a rule. */ -export type Rule< - MessageIds extends string, - Options extends ReadonlyArray, -> = RuleModule & { +export type Rule> = RuleModule< + MessageIds, + Options, + Docs +> & { meta: NamedCreateRuleCustomMeta; }; @@ -73,10 +52,7 @@ export type BaseOptions = ReadonlyArray; /** * The result all rules return. */ -export type RuleResult< - MessageIds extends string, - Options extends BaseOptions, -> = Readonly<{ +export type RuleResult = Readonly<{ context: Readonly>; descriptors: ReadonlyArray>; }>; @@ -106,11 +82,7 @@ function checkNode< Node extends TSESTree.Node, Options extends BaseOptions, >( - check: ( - node: Node, - context: Context, - options: Options, - ) => RuleResult, + check: (node: Node, context: Context, options: Options) => RuleResult, context: Context, options: Options, ): (node: Node) => void { @@ -127,30 +99,19 @@ function checkNode< /** * Create a rule. */ -export function createRule< - MessageIds extends string, - Options extends BaseOptions, ->( +export function createRule( name: string, meta: Readonly>, defaultOptions: Options, ruleFunctionsMap: RuleFunctionsMap, ): Rule { - return createRuleUsingFunction( - name, - meta, - defaultOptions, - () => ruleFunctionsMap, - ); + return createRuleUsingFunction(name, meta, defaultOptions, () => ruleFunctionsMap); } /** * Create a rule. */ -export function createRuleUsingFunction< - MessageIds extends string, - Options extends BaseOptions, ->( +export function createRuleUsingFunction( name: string, meta: Readonly>, defaultOptions: Options, @@ -173,12 +134,11 @@ export function createRuleUsingFunction< return Object.fromEntries( Object.entries(ruleFunctionsMap).map(([nodeSelector, ruleFunction]) => [ nodeSelector, - checkNode< - MessageIds, - Readonly>, - TSESTree.Node, - Options - >(ruleFunction, context, options), + checkNode>, TSESTree.Node, Options>( + ruleFunction, + context, + options, + ), ]), ); }, @@ -203,9 +163,10 @@ export function getTypeOfNode>( /** * Get the type of the the given node. */ -export function getTypeNodeOfNode< - Context extends RuleContext, ->(node: TSESTree.Node, context: Context): TypeNode | null { +export function getTypeNodeOfNode>( + node: TSESTree.Node, + context: Context, +): TypeNode | null { assert(typescript !== undefined); const { esTreeNodeToTSNodeMap } = getParserServices(context); @@ -219,9 +180,10 @@ export function getTypeNodeOfNode< /** * Get the type of the the given node. */ -export function getTypeDataOfNode< - Context extends RuleContext, ->(node: TSESTree.Node, context: Context): [Type, TypeNode | null] { +export function getTypeDataOfNode>( + node: TSESTree.Node, + context: Context, +): [Type, TypeNode | null] { assert(typescript !== undefined); const { esTreeNodeToTSNodeMap } = getParserServices(context); @@ -235,9 +197,10 @@ export function getTypeDataOfNode< /** * Get the type of the the given ts node. */ -export function getTypeOfTSNode< - Context extends RuleContext, ->(node: TSNode, context: Context): Type { +export function getTypeOfTSNode>( + node: TSNode, + context: Context, +): Type { const { program } = getParserServices(context); const checker = program.getTypeChecker(); @@ -249,9 +212,10 @@ export function getTypeOfTSNode< /** * Get the return type of the the given function node. */ -export function getReturnTypesOfFunction< - Context extends RuleContext, ->(node: TSESTree.Node, context: Context): Type[] | null { +export function getReturnTypesOfFunction>( + node: TSESTree.Node, + context: Context, +): Type[] | null { if (typescript === undefined) { return null; } @@ -260,21 +224,17 @@ export function getReturnTypesOfFunction< const checker = parserServices.program.getTypeChecker(); const type = getTypeOfNode(node, context); - const signatures = checker.getSignaturesOfType( - type, - typescript.SignatureKind.Call, - ); - return signatures.map((signature) => - checker.getReturnTypeOfSignature(signature), - ); + const signatures = checker.getSignaturesOfType(type, typescript.SignatureKind.Call); + return signatures.map((signature) => checker.getReturnTypeOfSignature(signature)); } /** * Does the given function have overloads? */ -export function isImplementationOfOverload< - Context extends RuleContext, ->(func: ESFunction, context: Context): boolean { +export function isImplementationOfOverload>( + func: ESFunction, + context: Context, +): boolean { if (typescript === undefined) { return false; } @@ -289,9 +249,7 @@ export function isImplementationOfOverload< /** * Get the type immutability of the the given node or type. */ -export function getTypeImmutabilityOfNode< - Context extends RuleContext, ->( +export function getTypeImmutabilityOfNode>( node: TSESTree.Node, context: Context, maxImmutability?: Immutability, @@ -302,22 +260,20 @@ export function getTypeImmutabilityOfNode< } const parserServices = getParserServices(context); - const overrides = - explicitOverrides ?? getImmutabilityOverrides(context.settings); + const overrides = explicitOverrides ?? getImmutabilityOverrides(context.settings); const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); - let m_typeLike: Type | TypeNode | undefined = (tsNode as { type?: TypeNode }) - .type; + let mut_typeLike: Type | TypeNode | undefined = (tsNode as { type?: TypeNode }).type; - if (m_typeLike === undefined) { - m_typeLike = getTypeOfTSNode(tsNode, context); - if (isIntrinsicErrorType(m_typeLike)) { + if (mut_typeLike === undefined) { + mut_typeLike = getTypeOfTSNode(tsNode, context); + if (isIntrinsicErrorType(mut_typeLike)) { return Immutability.Unknown; } } return getTypeImmutability( parserServices.program, - m_typeLike, + mut_typeLike, overrides, // Don't use the global cache in testing environments as it may cause errors when switching between different config options. process.env["NODE_ENV"] !== "test", @@ -329,17 +285,14 @@ export function getTypeImmutabilityOfNode< /** * Get the type immutability of the the given type. */ -export function getTypeImmutabilityOfType< - Context extends RuleContext, ->( +export function getTypeImmutabilityOfType>( typeOrTypeNode: Type | TypeNode, context: Context, maxImmutability?: Immutability, explicitOverrides?: ImmutabilityOverrides, ): Immutability { const parserServices = getParserServices(context); - const overrides = - explicitOverrides ?? getImmutabilityOverrides(context.settings); + const overrides = explicitOverrides ?? getImmutabilityOverrides(context.settings); return getTypeImmutability( parserServices.program, @@ -354,9 +307,10 @@ export function getTypeImmutabilityOfType< /** * Get the es tree node from the given ts node. */ -export function getESTreeNode< - Context extends Readonly>, ->(node: TSNode, context: Context): TSESTree.Node | null { +export function getESTreeNode>>( + node: TSNode, + context: Context, +): TSESTree.Node | null { const parserServices = getParserServices(context); return parserServices.tsNodeToESTreeNodeMap.get(node) ?? null; } diff --git a/src/utils/schemas.ts b/src/utils/schemas.ts index 0b2dc7609..ef5e7f386 100644 --- a/src/utils/schemas.ts +++ b/src/utils/schemas.ts @@ -1,24 +1,20 @@ -import type { - JSONSchema4, - JSONSchema4ObjectSchema, -} from "@typescript-eslint/utils/json-schema"; +import type { JSONSchema4, JSONSchema4ObjectSchema } from "@typescript-eslint/utils/json-schema"; import { deepmerge } from "deepmerge-ts"; -const typeSpecifierPatternSchemaProperties: JSONSchema4ObjectSchema["properties"] = - { - name: schemaInstanceOrInstanceArray({ - type: "string", - }), - pattern: schemaInstanceOrInstanceArray({ - type: "string", - }), - ignoreName: schemaInstanceOrInstanceArray({ - type: "string", - }), - ignorePattern: schemaInstanceOrInstanceArray({ - type: "string", - }), - }; +const typeSpecifierPatternSchemaProperties: JSONSchema4ObjectSchema["properties"] = { + name: schemaInstanceOrInstanceArray({ + type: "string", + }), + pattern: schemaInstanceOrInstanceArray({ + type: "string", + }), + ignoreName: schemaInstanceOrInstanceArray({ + type: "string", + }), + ignorePattern: schemaInstanceOrInstanceArray({ + type: "string", + }), +}; const typeSpecifierSchema: JSONSchema4 = { oneOf: [ @@ -79,9 +75,7 @@ export function schemaInstanceOrInstanceArray( } export function overridableOptionsSchema( - coreOptionsPropertiesSchema: NonNullable< - JSONSchema4ObjectSchema["properties"] - >, + coreOptionsPropertiesSchema: NonNullable, ): JSONSchema4 { return { type: "object", diff --git a/src/utils/tree.ts b/src/utils/tree.ts index 276ab5a40..4e2133d78 100644 --- a/src/utils/tree.ts +++ b/src/utils/tree.ts @@ -39,11 +39,7 @@ function getAncestorOfType( node: TSESTree.Node, child: TSESTree.Node | null = null, ): T | null { - return checker(node, child) - ? node - : isDefined(node.parent) - ? getAncestorOfType(checker, node.parent, node) - : null; + return checker(node, child) ? node : isDefined(node.parent) ? getAncestorOfType(checker, node.parent, node) : null; } /** @@ -52,16 +48,10 @@ function getAncestorOfType( * @param node - The node to test. * @param async - Whether the function must be async or sync. Use `undefined` for either. */ -export function isInFunctionBody( - node: TSESTree.Node, - async?: boolean, -): boolean { +export function isInFunctionBody(node: TSESTree.Node, async?: boolean): boolean { const functionNode = getEnclosingFunction(node); - return ( - functionNode !== null && - (async === undefined || functionNode.async === async) - ); + return functionNode !== null && (async === undefined || functionNode.async === async); } /** @@ -71,19 +61,10 @@ export function isInFunctionBody( */ export function getEnclosingFunction( node: TSESTree.Node, -): - | TSESTree.ArrowFunctionExpression - | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression - | null { +): TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression | null { return getAncestorOfType( - ( - n, - c, - ): n is - | TSESTree.ArrowFunctionExpression - | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression => isFunctionLike(n) && n.body === c, + (n, c): n is TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression => + isFunctionLike(n) && n.body === c, node, ); } @@ -93,13 +74,8 @@ export function getEnclosingFunction( * * Will return null if not in a function. */ -export function getEnclosingTryStatement( - node: TSESTree.Node, -): TSESTree.TryStatement | null { - return getAncestorOfType( - (n, c): n is TSESTree.TryStatement => isTryStatement(n) && n.block === c, - node, - ); +export function getEnclosingTryStatement(node: TSESTree.Node): TSESTree.TryStatement | null { + return getAncestorOfType((n, c): n is TSESTree.TryStatement => isTryStatement(n) && n.block === c, node); } /** @@ -113,12 +89,7 @@ export function isInClass(node: TSESTree.Node): boolean { * Test if the given node is in a for loop initializer. */ export function isInForLoopInitializer(node: TSESTree.Node): boolean { - return ( - getAncestorOfType( - (n, c): n is TSESTree.ForStatement => isForStatement(n) && n.init === c, - node, - ) !== null - ); + return getAncestorOfType((n, c): n is TSESTree.ForStatement => isForStatement(n) && n.init === c, node) !== null; } /** @@ -131,13 +102,11 @@ export function isInReadonly(node: TSESTree.Node): boolean { /** * Test if the given node is in a handler function callback of a promise. */ -export function isInPromiseHandlerFunction< - Context extends RuleContext, ->(node: TSESTree.Node, context: Context): boolean { - const functionNode = getAncestorOfType( - (n, c): n is TSESTree.FunctionLike => isFunctionLike(n) && n.body === c, - node, - ); +export function isInPromiseHandlerFunction>( + node: TSESTree.Node, + context: Context, +): boolean { + const functionNode = getAncestorOfType((n, c): n is TSESTree.FunctionLike => isFunctionLike(n) && n.body === c, node); if ( functionNode === null || @@ -155,9 +124,7 @@ export function isInPromiseHandlerFunction< /** * Test if the given node is shallowly inside a `Readonly<{...}>`. */ -export function getReadonly( - node: TSESTree.Node, -): TSESTree.TSTypeReference | TSESTree.TSInterfaceHeritage | null { +export function getReadonly(node: TSESTree.Node): TSESTree.TSTypeReference | TSESTree.TSInterfaceHeritage | null { // For nested cases, we shouldn't look for any parent, but the immediate parent. if ( isDefined(node.parent) && @@ -192,11 +159,7 @@ export function isInInterface(node: TSESTree.Node): boolean { */ export function isInConstructor(node: TSESTree.Node): boolean { const methodDefinition = getAncestorOfType(isMethodDefinition, node); - return ( - methodDefinition !== null && - isIdentifier(methodDefinition.key) && - methodDefinition.key.name === "constructor" - ); + return methodDefinition !== null && isIdentifier(methodDefinition.key) && methodDefinition.key.name === "constructor"; } /** @@ -205,10 +168,7 @@ export function isInConstructor(node: TSESTree.Node): boolean { export function isInReturnType(node: TSESTree.Node): boolean { return ( getAncestorOfType( - (n): n is TSESTree.Node => - isDefined(n.parent) && - isFunctionLike(n.parent) && - n.parent.returnType === n, + (n): n is TSESTree.Node => isDefined(n.parent) && isFunctionLike(n.parent) && n.parent.returnType === n, node, ) !== null ); @@ -218,32 +178,21 @@ export function isInReturnType(node: TSESTree.Node): boolean { * Test if the given node is nested inside another statement. */ export function isNested(node: TSESTree.Node): boolean { - return ( - node.parent !== undefined && - !(isProgram(node.parent) || isBlockStatement(node.parent)) - ); + return node.parent !== undefined && !(isProgram(node.parent) || isBlockStatement(node.parent)); } /** * Is the given identifier a property of an object? */ export function isPropertyAccess(node: TSESTree.Identifier): boolean { - return ( - node.parent !== undefined && - isMemberExpression(node.parent) && - node.parent.property === node - ); + return node.parent !== undefined && isMemberExpression(node.parent) && node.parent.property === node; } /** * Is the given identifier a property name? */ export function isPropertyName(node: TSESTree.Identifier): boolean { - return ( - node.parent !== undefined && - isProperty(node.parent) && - node.parent.key === node - ); + return node.parent !== undefined && isProperty(node.parent) && node.parent.key === node; } /** @@ -262,52 +211,34 @@ export function isIIFE(node: TSESTree.Node): boolean { * Is the given node being passed as an argument? */ export function isArgument(node: TSESTree.Node): boolean { - return ( - node.parent !== undefined && - isCallExpression(node.parent) && - node.parent.arguments.includes(node as any) - ); + return node.parent !== undefined && isCallExpression(node.parent) && node.parent.arguments.includes(node as any); } /** * Is the given node a parameter? */ export function isParameter(node: TSESTree.Node): boolean { - return ( - node.parent !== undefined && - isFunctionLike(node.parent) && - node.parent.params.includes(node as any) - ); + return node.parent !== undefined && isFunctionLike(node.parent) && node.parent.params.includes(node as any); } /** * Is the given node a getter function? */ export function isGetter(node: TSESTree.Node): boolean { - return ( - node.parent !== undefined && - isProperty(node.parent) && - node.parent.kind === "get" - ); + return node.parent !== undefined && isProperty(node.parent) && node.parent.kind === "get"; } /** * Is the given node a setter function? */ export function isSetter(node: TSESTree.Node): boolean { - return ( - node.parent !== undefined && - isProperty(node.parent) && - node.parent.kind === "set" - ); + return node.parent !== undefined && isProperty(node.parent) && node.parent.kind === "set"; } /** * Get the key the given node is assigned to in its parent ObjectExpression. */ -export function getKeyOfValueInObjectExpression( - node: TSESTree.Node, -): string | null { +export function getKeyOfValueInObjectExpression(node: TSESTree.Node): string | null { if (!isDefined(node.parent)) { return null; } @@ -317,18 +248,13 @@ export function getKeyOfValueInObjectExpression( return null; } - const objectExpressionProps = objectExpression.properties.filter( - (prop) => isProperty(prop) && prop.value === node, - ); + const objectExpressionProps = objectExpression.properties.filter((prop) => isProperty(prop) && prop.value === node); if (objectExpressionProps.length !== 1) { return null; } const objectExpressionProp = objectExpressionProps[0]!; - if ( - !isProperty(objectExpressionProp) || - !isIdentifier(objectExpressionProp.key) - ) { + if (!isProperty(objectExpressionProp) || !isIdentifier(objectExpressionProp.key)) { return null; } @@ -338,9 +264,7 @@ export function getKeyOfValueInObjectExpression( /** * Is the given identifier defined by a mutable variable (let or var)? */ -export function isDefinedByMutableVariable< - Context extends RuleContext, ->( +export function isDefinedByMutableVariable>( node: TSESTree.Identifier, context: Context, treatParametersAsMutable: (node: TSESTree.Node) => boolean, @@ -354,25 +278,17 @@ export function isDefinedByMutableVariable< if (variableDeclaration === undefined) { return true; } - const variableDeclarationNode = - services.tsNodeToESTreeNodeMap.get(variableDeclaration); - if ( - variableDeclarationNode !== undefined && - isParameter(variableDeclarationNode) - ) { + const variableDeclarationNode = services.tsNodeToESTreeNodeMap.get(variableDeclaration); + if (variableDeclarationNode !== undefined && isParameter(variableDeclarationNode)) { return treatParametersAsMutable(variableDeclarationNode); } if (!typescript.isVariableDeclaration(variableDeclaration)) { return true; } - const variableDeclarator = - services.tsNodeToESTreeNodeMap.get(variableDeclaration); + const variableDeclarator = services.tsNodeToESTreeNodeMap.get(variableDeclaration); - if ( - variableDeclarator?.parent === undefined || - !isVariableDeclaration(variableDeclarator.parent) - ) { + if (variableDeclarator?.parent === undefined || !isVariableDeclaration(variableDeclarator.parent)) { return true; } @@ -382,9 +298,7 @@ export function isDefinedByMutableVariable< /** * Get the root identifier of an expression. */ -export function findRootIdentifier( - node: TSESTree.Expression, -): TSESTree.Identifier | undefined { +export function findRootIdentifier(node: TSESTree.Expression): TSESTree.Identifier | undefined { if (isIdentifier(node)) { return node; } diff --git a/src/utils/type-guards.ts b/src/utils/type-guards.ts index bfb1c12c7..a33df2a61 100644 --- a/src/utils/type-guards.ts +++ b/src/utils/type-guards.ts @@ -4,9 +4,7 @@ import { AST_NODE_TYPES, type TSESTree } from "@typescript-eslint/utils"; import type { RuleContext } from "@typescript-eslint/utils/ts-eslint"; -import typeMatchesSpecifier, { - type TypeDeclarationSpecifier, -} from "ts-declaration-location"; +import typeMatchesSpecifier, { type TypeDeclarationSpecifier } from "ts-declaration-location"; import type { Program, Type, UnionType } from "typescript"; import typescript from "#/conditional-imports/typescript"; @@ -41,57 +39,39 @@ export type ObjectConstructorType = Type & { * Node type guards. */ -export function isArrayExpression( - node: TSESTree.Node, -): node is TSESTree.ArrayExpression { +export function isArrayExpression(node: TSESTree.Node): node is TSESTree.ArrayExpression { return node.type === AST_NODE_TYPES.ArrayExpression; } -export function isArrayPattern( - node: TSESTree.Node, -): node is TSESTree.ArrayPattern { +export function isArrayPattern(node: TSESTree.Node): node is TSESTree.ArrayPattern { return node.type === AST_NODE_TYPES.ArrayPattern; } -export function isAssignmentExpression( - node: TSESTree.Node, -): node is TSESTree.AssignmentExpression { +export function isAssignmentExpression(node: TSESTree.Node): node is TSESTree.AssignmentExpression { return node.type === AST_NODE_TYPES.AssignmentExpression; } -export function isAssignmentPattern( - node: TSESTree.Node, -): node is TSESTree.AssignmentPattern { +export function isAssignmentPattern(node: TSESTree.Node): node is TSESTree.AssignmentPattern { return node.type === AST_NODE_TYPES.AssignmentPattern; } -export function isBlockStatement( - node: TSESTree.Node, -): node is TSESTree.BlockStatement { +export function isBlockStatement(node: TSESTree.Node): node is TSESTree.BlockStatement { return node.type === AST_NODE_TYPES.BlockStatement; } -export function isBreakStatement( - node: TSESTree.Node, -): node is TSESTree.BreakStatement { +export function isBreakStatement(node: TSESTree.Node): node is TSESTree.BreakStatement { return node.type === AST_NODE_TYPES.BreakStatement; } -export function isCallExpression( - node: TSESTree.Node, -): node is TSESTree.CallExpression { +export function isCallExpression(node: TSESTree.Node): node is TSESTree.CallExpression { return node.type === AST_NODE_TYPES.CallExpression; } -export function isChainExpression( - node: TSESTree.Node, -): node is TSESTree.ChainExpression { +export function isChainExpression(node: TSESTree.Node): node is TSESTree.ChainExpression { return node.type === AST_NODE_TYPES.ChainExpression; } -export function isPropertyDefinition( - node: TSESTree.Node, -): node is TSESTree.PropertyDefinition { +export function isPropertyDefinition(node: TSESTree.Node): node is TSESTree.PropertyDefinition { return node.type === AST_NODE_TYPES.PropertyDefinition; } @@ -100,36 +80,23 @@ export function isPropertyDefinition( * * It doesn't matter what type of class. */ -export function isClassLike( - node: TSESTree.Node, -): node is TSESTree.ClassDeclaration | TSESTree.ClassExpression { - return ( - node.type === AST_NODE_TYPES.ClassDeclaration || - node.type === AST_NODE_TYPES.ClassExpression - ); +export function isClassLike(node: TSESTree.Node): node is TSESTree.ClassDeclaration | TSESTree.ClassExpression { + return node.type === AST_NODE_TYPES.ClassDeclaration || node.type === AST_NODE_TYPES.ClassExpression; } -export function isContinueStatement( - node: TSESTree.Node, -): node is TSESTree.ContinueStatement { +export function isContinueStatement(node: TSESTree.Node): node is TSESTree.ContinueStatement { return node.type === AST_NODE_TYPES.ContinueStatement; } -export function isExpressionStatement( - node: TSESTree.Node, -): node is TSESTree.ExpressionStatement { +export function isExpressionStatement(node: TSESTree.Node): node is TSESTree.ExpressionStatement { return node.type === AST_NODE_TYPES.ExpressionStatement; } -export function isForStatement( - node: TSESTree.Node, -): node is TSESTree.ForStatement { +export function isForStatement(node: TSESTree.Node): node is TSESTree.ForStatement { return node.type === AST_NODE_TYPES.ForStatement; } -export function isFunctionDeclaration( - node: TSESTree.Node, -): node is TSESTree.FunctionDeclaration { +export function isFunctionDeclaration(node: TSESTree.Node): node is TSESTree.FunctionDeclaration { return node.type === AST_NODE_TYPES.FunctionDeclaration; } @@ -141,10 +108,7 @@ export function isFunctionDeclaration( export function isFunctionExpressionLike( node: TSESTree.Node, ): node is TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression { - return ( - node.type === AST_NODE_TYPES.FunctionExpression || - node.type === AST_NODE_TYPES.ArrowFunctionExpression - ); + return node.type === AST_NODE_TYPES.FunctionExpression || node.type === AST_NODE_TYPES.ArrowFunctionExpression; } /** @@ -154,10 +118,7 @@ export function isFunctionExpressionLike( */ export function isFunctionLike( node: TSESTree.Node, -): node is - | TSESTree.ArrowFunctionExpression - | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression { +): node is TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression { return isFunctionDeclaration(node) || isFunctionExpressionLike(node); } @@ -165,51 +126,35 @@ export function isIdentifier(node: TSESTree.Node): node is TSESTree.Identifier { return node.type === AST_NODE_TYPES.Identifier; } -export function isIfStatement( - node: TSESTree.Node, -): node is TSESTree.IfStatement { +export function isIfStatement(node: TSESTree.Node): node is TSESTree.IfStatement { return node.type === AST_NODE_TYPES.IfStatement; } -export function isLabeledStatement( - node: TSESTree.Node, -): node is TSESTree.LabeledStatement { +export function isLabeledStatement(node: TSESTree.Node): node is TSESTree.LabeledStatement { return node.type === AST_NODE_TYPES.LabeledStatement; } -export function isMemberExpression( - node: TSESTree.Node, -): node is TSESTree.MemberExpression { +export function isMemberExpression(node: TSESTree.Node): node is TSESTree.MemberExpression { return node.type === AST_NODE_TYPES.MemberExpression; } -export function isMethodDefinition( - node: TSESTree.Node, -): node is TSESTree.MethodDefinition { +export function isMethodDefinition(node: TSESTree.Node): node is TSESTree.MethodDefinition { return node.type === AST_NODE_TYPES.MethodDefinition; } -export function isNewExpression( - node: TSESTree.Node, -): node is TSESTree.NewExpression { +export function isNewExpression(node: TSESTree.Node): node is TSESTree.NewExpression { return node.type === AST_NODE_TYPES.NewExpression; } -export function isObjectExpression( - node: TSESTree.Node, -): node is TSESTree.ObjectExpression { +export function isObjectExpression(node: TSESTree.Node): node is TSESTree.ObjectExpression { return node.type === AST_NODE_TYPES.ObjectExpression; } -export function isObjectPattern( - node: TSESTree.Node, -): node is TSESTree.ObjectPattern { +export function isObjectPattern(node: TSESTree.Node): node is TSESTree.ObjectPattern { return node.type === AST_NODE_TYPES.ObjectPattern; } -export function isPrivateIdentifier( - node: TSESTree.Node, -): node is TSESTree.PrivateIdentifier { +export function isPrivateIdentifier(node: TSESTree.Node): node is TSESTree.PrivateIdentifier { return node.type === AST_NODE_TYPES.PrivateIdentifier; } @@ -221,75 +166,51 @@ export function isProperty(node: TSESTree.Node): node is TSESTree.Property { return node.type === AST_NODE_TYPES.Property; } -export function isRestElement( - node: TSESTree.Node, -): node is TSESTree.RestElement { +export function isRestElement(node: TSESTree.Node): node is TSESTree.RestElement { return node.type === AST_NODE_TYPES.RestElement; } -export function isReturnStatement( - node: TSESTree.Node, -): node is TSESTree.ReturnStatement { +export function isReturnStatement(node: TSESTree.Node): node is TSESTree.ReturnStatement { return node.type === AST_NODE_TYPES.ReturnStatement; } -export function isSwitchStatement( - node: TSESTree.Node, -): node is TSESTree.SwitchStatement { +export function isSwitchStatement(node: TSESTree.Node): node is TSESTree.SwitchStatement { return node.type === AST_NODE_TYPES.SwitchStatement; } -export function isThisExpression( - node: TSESTree.Node, -): node is TSESTree.ThisExpression { +export function isThisExpression(node: TSESTree.Node): node is TSESTree.ThisExpression { return node.type === AST_NODE_TYPES.ThisExpression; } -export function isThrowStatement( - node: TSESTree.Node, -): node is TSESTree.ThrowStatement { +export function isThrowStatement(node: TSESTree.Node): node is TSESTree.ThrowStatement { return node.type === AST_NODE_TYPES.ThrowStatement; } -export function isTryStatement( - node: TSESTree.Node, -): node is TSESTree.TryStatement { +export function isTryStatement(node: TSESTree.Node): node is TSESTree.TryStatement { return node.type === AST_NODE_TYPES.TryStatement; } -export function isTSArrayType( - node: TSESTree.Node, -): node is TSESTree.TSArrayType { +export function isTSArrayType(node: TSESTree.Node): node is TSESTree.TSArrayType { return node.type === AST_NODE_TYPES.TSArrayType; } -export function isTSAsExpression( - node: TSESTree.Node, -): node is TSESTree.TSAsExpression { +export function isTSAsExpression(node: TSESTree.Node): node is TSESTree.TSAsExpression { return node.type === AST_NODE_TYPES.TSAsExpression; } -export function isTSFunctionType( - node: TSESTree.Node, -): node is TSESTree.TSFunctionType { +export function isTSFunctionType(node: TSESTree.Node): node is TSESTree.TSFunctionType { return node.type === AST_NODE_TYPES.TSFunctionType; } -export function isTSIndexSignature( - node: TSESTree.Node, -): node is TSESTree.TSIndexSignature { +export function isTSIndexSignature(node: TSESTree.Node): node is TSESTree.TSIndexSignature { return node.type === AST_NODE_TYPES.TSIndexSignature; } -export function isTSMethodSignature( - node: TSESTree.Node, -): node is TSESTree.TSMethodSignature { +export function isTSMethodSignature(node: TSESTree.Node): node is TSESTree.TSMethodSignature { return node.type === AST_NODE_TYPES.TSMethodSignature; } -export function isTSCallSignatureDeclaration( - node: TSESTree.Node, -): node is TSESTree.TSCallSignatureDeclaration { +export function isTSCallSignatureDeclaration(node: TSESTree.Node): node is TSESTree.TSCallSignatureDeclaration { return node.type === AST_NODE_TYPES.TSCallSignatureDeclaration; } @@ -299,129 +220,87 @@ export function isTSConstructSignatureDeclaration( return node.type === AST_NODE_TYPES.TSConstructSignatureDeclaration; } -export function isTSInterfaceBody( - node: TSESTree.Node, -): node is TSESTree.TSInterfaceBody { +export function isTSInterfaceBody(node: TSESTree.Node): node is TSESTree.TSInterfaceBody { return node.type === AST_NODE_TYPES.TSInterfaceBody; } -export function isTSInterfaceDeclaration( - node: TSESTree.Node, -): node is TSESTree.TSInterfaceDeclaration { +export function isTSInterfaceDeclaration(node: TSESTree.Node): node is TSESTree.TSInterfaceDeclaration { return node.type === AST_NODE_TYPES.TSInterfaceDeclaration; } -export function isTSInterfaceHeritage( - node: TSESTree.Node, -): node is TSESTree.TSInterfaceHeritage { +export function isTSInterfaceHeritage(node: TSESTree.Node): node is TSESTree.TSInterfaceHeritage { return node.type === AST_NODE_TYPES.TSInterfaceHeritage; } -export function isTSNonNullExpression( - node: TSESTree.Node, -): node is TSESTree.TSNonNullExpression { +export function isTSNonNullExpression(node: TSESTree.Node): node is TSESTree.TSNonNullExpression { return node.type === AST_NODE_TYPES.TSNonNullExpression; } -export function isTSNullKeyword( - node: TSESTree.Node, -): node is TSESTree.TSNullKeyword { +export function isTSNullKeyword(node: TSESTree.Node): node is TSESTree.TSNullKeyword { return node.type === AST_NODE_TYPES.TSNullKeyword; } -export function isTSParameterProperty( - node: TSESTree.Node, -): node is TSESTree.TSParameterProperty { +export function isTSParameterProperty(node: TSESTree.Node): node is TSESTree.TSParameterProperty { return node.type === AST_NODE_TYPES.TSParameterProperty; } -export function isTSPropertySignature( - node: TSESTree.Node, -): node is TSESTree.TSPropertySignature { +export function isTSPropertySignature(node: TSESTree.Node): node is TSESTree.TSPropertySignature { return node.type === AST_NODE_TYPES.TSPropertySignature; } -export function isTSTupleType( - node: TSESTree.Node, -): node is TSESTree.TSTupleType { +export function isTSTupleType(node: TSESTree.Node): node is TSESTree.TSTupleType { return node.type === AST_NODE_TYPES.TSTupleType; } -export function isTSTypeAnnotation( - node: TSESTree.Node, -): node is TSESTree.TSTypeAnnotation { +export function isTSTypeAnnotation(node: TSESTree.Node): node is TSESTree.TSTypeAnnotation { return node.type === AST_NODE_TYPES.TSTypeAnnotation; } -export function isTSTypeLiteral( - node: TSESTree.Node, -): node is TSESTree.TSTypeLiteral { +export function isTSTypeLiteral(node: TSESTree.Node): node is TSESTree.TSTypeLiteral { return node.type === AST_NODE_TYPES.TSTypeLiteral; } -export function isTSTypeOperator( - node: TSESTree.Node, -): node is TSESTree.TSTypeOperator { +export function isTSTypeOperator(node: TSESTree.Node): node is TSESTree.TSTypeOperator { return node.type === AST_NODE_TYPES.TSTypeOperator; } -export function isTSTypePredicate( - node: TSESTree.Node, -): node is TSESTree.TSTypePredicate { +export function isTSTypePredicate(node: TSESTree.Node): node is TSESTree.TSTypePredicate { return node.type === AST_NODE_TYPES.TSTypePredicate; } -export function isTSTypeReference( - node: TSESTree.Node, -): node is TSESTree.TSTypeReference { +export function isTSTypeReference(node: TSESTree.Node): node is TSESTree.TSTypeReference { return node.type === AST_NODE_TYPES.TSTypeReference; } -export function isTSUndefinedKeyword( - node: TSESTree.Node, -): node is TSESTree.TSUndefinedKeyword { +export function isTSUndefinedKeyword(node: TSESTree.Node): node is TSESTree.TSUndefinedKeyword { return node.type === AST_NODE_TYPES.TSUndefinedKeyword; } -export function isTSVoidKeyword( - node: TSESTree.Node, -): node is TSESTree.TSVoidKeyword { +export function isTSVoidKeyword(node: TSESTree.Node): node is TSESTree.TSVoidKeyword { return node.type === AST_NODE_TYPES.TSVoidKeyword; } -export function isUnaryExpression( - node: TSESTree.Node, -): node is TSESTree.UnaryExpression { +export function isUnaryExpression(node: TSESTree.Node): node is TSESTree.UnaryExpression { return node.type === AST_NODE_TYPES.UnaryExpression; } -export function isVariableDeclaration( - node: TSESTree.Node, -): node is TSESTree.VariableDeclaration { +export function isVariableDeclaration(node: TSESTree.Node): node is TSESTree.VariableDeclaration { return node.type === AST_NODE_TYPES.VariableDeclaration; } -export function isVariableDeclarator( - node: TSESTree.Node, -): node is TSESTree.VariableDeclarator { +export function isVariableDeclarator(node: TSESTree.Node): node is TSESTree.VariableDeclarator { return node.type === AST_NODE_TYPES.VariableDeclarator; } -export function isYieldExpression( - node: TSESTree.Node, -): node is TSESTree.YieldExpression { +export function isYieldExpression(node: TSESTree.Node): node is TSESTree.YieldExpression { return node.type === AST_NODE_TYPES.YieldExpression; } -export function hasID( - node: TSESTree.Node, -): node is Extract { +export function hasID(node: TSESTree.Node): node is Extract { return Object.hasOwn(node, "id"); } -export function hasKey( - node: TSESTree.Node, -): node is Extract { +export function hasKey(node: TSESTree.Node): node is Extract { return Object.hasOwn(node, "key"); } @@ -441,10 +320,7 @@ export function isFunctionLikeType(type: Type | null): boolean { return type !== null && type.getCallSignatures().length > 0; } -export function isArrayType( - context: RuleContext>, - type: Type | null, -): boolean { +export function isArrayType(context: RuleContext>, type: Type | null): boolean { return typeMatches(context, "Array", type); } @@ -462,10 +338,7 @@ export function isObjectConstructorType( return typeMatches(context, "ObjectConstructor", type); } -export function isPromiseType( - context: RuleContext>, - type: Type | null, -): boolean { +export function isPromiseType(context: RuleContext>, type: Type | null): boolean { return typeMatches(context, "Promise", type); } @@ -484,10 +357,7 @@ function typeMatches( return typeMatchesHelper(program, typeName)(type); } -function typeMatchesHelper( - program: Program, - typeName: string, -): (type: Type) => boolean { +function typeMatchesHelper(program: Program, typeName: string): (type: Type) => boolean { return function test(type: Type) { return ( ((type.symbol as unknown) !== undefined && diff --git a/src/utils/type-specifier.ts b/src/utils/type-specifier.ts index f39ce0288..40eac99ee 100644 --- a/src/utils/type-specifier.ts +++ b/src/utils/type-specifier.ts @@ -37,72 +37,62 @@ export function typeMatchesPattern( return false; } - let m_shouldInclude = false; + let mut_shouldInclude = false; const typeNameAlias = getTypeAliasName(type, typeNode); if (typeNameAlias !== null) { const testTypeNameAlias = (pattern: TypePattern) => - typeof pattern === "string" - ? pattern === typeNameAlias - : pattern.test(typeNameAlias); + typeof pattern === "string" ? pattern === typeNameAlias : pattern.test(typeNameAlias); if (exclude.some(testTypeNameAlias)) { return false; } - m_shouldInclude ||= include.some(testTypeNameAlias); + mut_shouldInclude ||= include.some(testTypeNameAlias); } const typeValue = getTypeAsString(program, type, typeNode); const testTypeValue = (pattern: TypePattern) => - typeof pattern === "string" - ? pattern === typeValue - : pattern.test(typeValue); + typeof pattern === "string" ? pattern === typeValue : pattern.test(typeValue); if (exclude.some(testTypeValue)) { return false; } - m_shouldInclude ||= include.some(testTypeValue); + mut_shouldInclude ||= include.some(testTypeValue); const typeNameName = extractTypeName(typeValue); if (typeNameName !== null) { const testTypeNameName = (pattern: TypePattern) => - typeof pattern === "string" - ? pattern === typeNameName - : pattern.test(typeNameName); + typeof pattern === "string" ? pattern === typeNameName : pattern.test(typeNameName); if (exclude.some(testTypeNameName)) { return false; } - m_shouldInclude ||= include.some(testTypeNameName); + mut_shouldInclude ||= include.some(testTypeNameName); } // Special handling for arrays not written in generic syntax. if (program.getTypeChecker().isArrayType(type) && typeNode !== null) { if ( - (ts.isTypeOperatorNode(typeNode) && - typeNode.operator === ts.SyntaxKind.ReadonlyKeyword) || - (ts.isTypeOperatorNode(typeNode.parent) && - typeNode.parent.operator === ts.SyntaxKind.ReadonlyKeyword) + (ts.isTypeOperatorNode(typeNode) && typeNode.operator === ts.SyntaxKind.ReadonlyKeyword) || + (ts.isTypeOperatorNode(typeNode.parent) && typeNode.parent.operator === ts.SyntaxKind.ReadonlyKeyword) ) { - const testIsReadonlyArray = (pattern: TypePattern) => - typeof pattern === "string" && pattern === "ReadonlyArray"; + const testIsReadonlyArray = (pattern: TypePattern) => typeof pattern === "string" && pattern === "ReadonlyArray"; if (exclude.some(testIsReadonlyArray)) { return false; } - m_shouldInclude ||= include.some(testIsReadonlyArray); + mut_shouldInclude ||= include.some(testIsReadonlyArray); } else { - const testIsArray = (pattern: TypePattern) => - typeof pattern === "string" && pattern === "Array"; + const testIsArray = (pattern: TypePattern) => typeof pattern === "string" && pattern === "Array"; if (exclude.some(testIsArray)) { return false; } - m_shouldInclude ||= include.some(testIsArray); + mut_shouldInclude ||= include.some(testIsArray); } } - return m_shouldInclude; + return mut_shouldInclude; } /** @@ -118,19 +108,13 @@ function getTypeAliasName(type: Type, typeNode: TypeNode | null) { return t.aliasSymbol?.getName() ?? null; } - return ts.isTypeAliasDeclaration(typeNode.parent) - ? typeNode.parent.name.getText() - : null; + return ts.isTypeAliasDeclaration(typeNode.parent) ? typeNode.parent.name.getText() : null; } /** * Get the type as a string. */ -function getTypeAsString( - program: Program, - type: Type, - typeNode: TypeNode | null, -) { +function getTypeAsString(program: Program, type: Type, typeNode: TypeNode | null) { assert(ts !== undefined); return typeNode === null diff --git a/tests/configs.test.ts b/tests/configs.test.ts index 8a19874ec..61cc5299b 100644 --- a/tests/configs.test.ts +++ b/tests/configs.test.ts @@ -17,41 +17,27 @@ describe("configs", () => { const allRules = Object.values(rules); const allConfigRules = Object.keys(all); const offConfigRules = Object.entries(off); - const allNonDeprecatedRules = allRules.filter( - (rule) => rule.meta.deprecated !== true, - ); + const allNonDeprecatedRules = allRules.filter((rule) => rule.meta.deprecated !== true); it('"All" - should have the right number of rules', () => { expect(allConfigRules.length).to.equal(allNonDeprecatedRules.length); }); - it.each(allConfigRules)( - '"All" - should have not have deprecated rules', - (name) => { - expect( - rules[name.slice("functional/".length) as keyof typeof rules].meta - .deprecated, - ).to.not.equal(true, `All Config contains deprecated rule "${name}".`); - }, - ); + it.each(allConfigRules)('"All" - should have not have deprecated rules', (name) => { + expect(rules[name.slice("functional/".length) as keyof typeof rules].meta.deprecated).to.not.equal( + true, + `All Config contains deprecated rule "${name}".`, + ); + }); it('"Off" - should have the right number of rules', () => { - expect(offConfigRules.length).to.equal( - allRules.length, - "should have every rule", - ); + expect(offConfigRules.length).to.equal(allRules.length, "should have every rule"); }); - it.each(offConfigRules)( - '"Off" - should turn off all rules', - (name, value) => { - const severity = Array.isArray(value) ? value[0] : value; - expect(severity).to.equal( - "off", - `Rule "${name}" should be turned off in the off config.`, - ); - }, - ); + it.each(offConfigRules)('"Off" - should turn off all rules', (name, value) => { + const severity = Array.isArray(value) ? value[0] : value; + expect(severity).to.equal("off", `Rule "${name}" should be turned off in the off config.`); + }); /** * A map of each config (except the special ones) to it's name. @@ -68,14 +54,11 @@ describe("configs", () => { ["Stylistic", stylistic], ] as const; - describe.each(configs)( - '"%s" Config rules are in the "All" Config', - (name, config) => { - const ruleNames = Object.keys(config); + describe.each(configs)('"%s" Config rules are in the "All" Config', (name, config) => { + const ruleNames = Object.keys(config); - it.each(ruleNames)(`%s`, (rule) => { - expect(all[rule]).toBeDefined(); - }); - }, - ); + it.each(ruleNames)(`%s`, (rule) => { + expect(all[rule]).toBeDefined(); + }); + }); }); diff --git a/tests/index.test.ts b/tests/index.test.ts index 3854a9ad8..cffefc917 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -14,13 +14,8 @@ describe("index", () => { (file) => file !== "index.ts" && file.endsWith(".ts"), ); - expect( - Object.hasOwn(functional, "rules"), - 'The plugin\'s config object should have a "rules" property.', - ); - expect(ruleFiles.length).to.equal( - Object.keys(functional.rules ?? {}).length, - ); + expect(Object.hasOwn(functional, "rules"), 'The plugin\'s config object should have a "rules" property.'); + expect(ruleFiles.length).to.equal(Object.keys(functional.rules ?? {}).length); }); it("should have all the configs", () => { @@ -28,10 +23,7 @@ describe("index", () => { (file) => file !== "index.ts" && file.endsWith(".ts"), ); - expect( - Object.hasOwn(functional, "configs"), - 'The plugin\'s config object should have a "configs" property.', - ); + expect(Object.hasOwn(functional, "configs"), 'The plugin\'s config object should have a "configs" property.'); expect(configFiles.length).to.equal( Object.keys(functional.configs ?? {}).length, "should have all the configs except deprecated", diff --git a/tests/rules/functional-parameters.test.ts b/tests/rules/functional-parameters.test.ts index ddffad913..1f2af48a4 100644 --- a/tests/rules/functional-parameters.test.ts +++ b/tests/rules/functional-parameters.test.ts @@ -215,9 +215,7 @@ describe(name, () => { function foo(param) {} foo(function () {}); `, - options: [ - { enforceParameterCount: { ignoreLambdaExpression: true } }, - ], + options: [{ enforceParameterCount: { ignoreLambdaExpression: true } }], }); valid({ @@ -225,9 +223,7 @@ describe(name, () => { function foo(param) {} foo(() => 1); `, - options: [ - { enforceParameterCount: { ignoreLambdaExpression: true } }, - ], + options: [{ enforceParameterCount: { ignoreLambdaExpression: true } }], }); const invalidResult = invalid({ @@ -329,8 +325,7 @@ describe(name, () => { `, options: [ { - ignorePrefixSelector: - "CallExpression[callee.property.name='reduce']", + ignorePrefixSelector: "CallExpression[callee.property.name='reduce']", enforceParameterCount: "exactlyOne", }, ], @@ -348,8 +343,7 @@ describe(name, () => { options: [ { enforceParameterCount: "exactlyOne", - ignorePrefixSelector: - "CallExpression[callee.property.name='map']", + ignorePrefixSelector: "CallExpression[callee.property.name='map']", }, ], }); @@ -390,8 +384,7 @@ describe(name, () => { options: [ { enforceParameterCount: "exactlyOne", - ignorePrefixSelector: - "CallExpression[callee.property.name='reduce']", + ignorePrefixSelector: "CallExpression[callee.property.name='reduce']", }, ], }); @@ -406,8 +399,7 @@ describe(name, () => { options: [ { enforceParameterCount: "exactlyOne", - ignorePrefixSelector: - "CallExpression[callee.property.name='map']", + ignorePrefixSelector: "CallExpression[callee.property.name='map']", }, ], }); diff --git a/tests/rules/index.test.ts b/tests/rules/index.test.ts index 272e6c825..4496b3873 100644 --- a/tests/rules/index.test.ts +++ b/tests/rules/index.test.ts @@ -7,9 +7,7 @@ import { rules } from "#/rules"; describe("rules index", () => { it("import all the rule files", () => { const rulesNames: string[] = Object.keys(rules); - const files: string[] = fs - .readdirSync("./src/rules") - .filter((file) => file !== "index.ts" && file.endsWith(".ts")); + const files: string[] = fs.readdirSync("./src/rules").filter((file) => file !== "index.ts" && file.endsWith(".ts")); expect(rulesNames.length).to.equal(files.length); }); diff --git a/tests/rules/prefer-immutable-types/variables.test.ts b/tests/rules/prefer-immutable-types/variables.test.ts index 363fb00d5..1b3a7c74e 100644 --- a/tests/rules/prefer-immutable-types/variables.test.ts +++ b/tests/rules/prefer-immutable-types/variables.test.ts @@ -93,12 +93,7 @@ describe(name, () => { private static readonly qux: { foo: number }; } `, - errors: [ - "propertyImmutability", - "propertyImmutability", - "propertyImmutability", - "propertyImmutability", - ], + errors: ["propertyImmutability", "propertyImmutability", "propertyImmutability", "propertyImmutability"], }); expect(invalidResult.messages).toMatchSnapshot(); }); @@ -154,120 +149,110 @@ describe(name, () => { }, }, ], - errors: [ - "variable", - "variable", - "variable", - "variable", - "variable", - "variable", - "variable", - "variable", - ], + errors: ["variable", "variable", "variable", "variable", "variable", "variable", "variable", "variable"], verifyAfterFix: false, // "fix" doesn't fix arrays so they will still report. }); expect(invalidResult.messages).toMatchSnapshot(); }); - it.each([ - [[{ variables: "ReadonlyShallow" }]], - [[{ variables: "ReadonlyDeep" }]], - [[{ variables: "Immutable" }]], - ])("doesn't reports valid variables", (options) => { - valid({ - code: "const foo: boolean = {} as any;", - options, - }); - valid({ - code: "const foo: true = {} as any;", - options, - }); - valid({ - code: "const foo: string = {} as any;", - options, - }); - valid({ - code: "const foo: 'bar' = {} as any;", - options, - }); - valid({ - code: "const foo: undefined = {} as any;", - options, - }); - valid({ - code: "const foo: readonly string[] = {} as any;", - options, - settings: { - immutability: { - overrides: [ - { - type: { from: "lib", name: "ReadonlyArray" }, - to: "Immutable", - }, - ], + it.each([[[{ variables: "ReadonlyShallow" }]], [[{ variables: "ReadonlyDeep" }]], [[{ variables: "Immutable" }]]])( + "doesn't reports valid variables", + (options) => { + valid({ + code: "const foo: boolean = {} as any;", + options, + }); + valid({ + code: "const foo: true = {} as any;", + options, + }); + valid({ + code: "const foo: string = {} as any;", + options, + }); + valid({ + code: "const foo: 'bar' = {} as any;", + options, + }); + valid({ + code: "const foo: undefined = {} as any;", + options, + }); + valid({ + code: "const foo: readonly string[] = {} as any;", + options, + settings: { + immutability: { + overrides: [ + { + type: { from: "lib", name: "ReadonlyArray" }, + to: "Immutable", + }, + ], + }, }, - }, - }); - valid({ - code: "const foo: { readonly foo: string } = {} as any;", - options, - }); - valid({ - code: "const foo: { readonly foo: { readonly bar: number } } = {} as any;", - options, - }); - valid({ - code: "const foo: Readonly> = {} as any;", - options, - }); - valid({ - code: "const foo: Readonly> = {} as any;", - options, - }); - valid({ - code: "function foo(arg: { foo: string | number }): arg is { foo: number } {}", - options, - }); - valid({ - code: "const [a, b] = [1, 2];", - options, - }); - valid({ - code: "const { a, b } = { a: 1, b: 2 };", - options, - }); - - if (options[0]!.variables !== "Immutable") { + }); valid({ - code: "const foo: { foo(): void } = {} as any;", + code: "const foo: { readonly foo: string } = {} as any;", options, }); valid({ - code: "const foo: ReadonlyArray = {} as any;", + code: "const foo: { readonly foo: { readonly bar: number } } = {} as any;", options, }); valid({ - code: "const foo: readonly [string, number] = {} as any;", + code: "const foo: Readonly> = {} as any;", options, }); valid({ - code: "const foo: Readonly<[string, number]> = {} as any;", + code: "const foo: Readonly> = {} as any;", options, }); valid({ - code: "const foo: { foo: () => void } = {} as any;", + code: "function foo(arg: { foo: string | number }): arg is { foo: number } {}", options, }); valid({ - code: "const foo: ReadonlySet = {} as any;", + code: "const [a, b] = [1, 2];", options, }); valid({ - code: "const foo: ReadonlyMap = {} as any;", + code: "const { a, b } = { a: 1, b: 2 };", options, }); - } - }); + + if (options[0]!.variables !== "Immutable") { + valid({ + code: "const foo: { foo(): void } = {} as any;", + options, + }); + valid({ + code: "const foo: ReadonlyArray = {} as any;", + options, + }); + valid({ + code: "const foo: readonly [string, number] = {} as any;", + options, + }); + valid({ + code: "const foo: Readonly<[string, number]> = {} as any;", + options, + }); + valid({ + code: "const foo: { foo: () => void } = {} as any;", + options, + }); + valid({ + code: "const foo: ReadonlySet = {} as any;", + options, + }); + valid({ + code: "const foo: ReadonlyMap = {} as any;", + options, + }); + } + }, + ); describe("options", () => { describe("ignoreClasses", () => { diff --git a/tests/utils/configs.ts b/tests/utils/configs.ts index 89316f1b3..4dbf9d5f7 100644 --- a/tests/utils/configs.ts +++ b/tests/utils/configs.ts @@ -1,10 +1,8 @@ import path from "node:path"; -// @ts-expect-error - Not typed. -import babelParser from "@babel/eslint-parser"; -import typescriptParser, { - type ParserOptions, -} from "@typescript-eslint/parser"; +import * as babelParser from "@babel/eslint-parser"; +import * as typescriptParser from "@typescript-eslint/parser"; +import type { ParserOptions } from "@typescript-eslint/parser"; import type { Linter } from "eslint"; export const typescriptConfig = { @@ -24,7 +22,7 @@ export const typescriptConfig = { export const esLatestConfig = { languageOptions: { - parser: babelParser, + parser: babelParser as NonNullable["parser"], parserOptions: { ecmaVersion: "latest", requireConfigFile: false, diff --git a/tsconfig.base.json b/tsconfig.base.json index 01848d44c..70cc1d1b8 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -4,12 +4,10 @@ "allowUnreachableCode": false, "allowUnusedLabels": false, "alwaysStrict": true, - "declaration": true, "esModuleInterop": true, "exactOptionalPropertyTypes": true, "forceConsistentCasingInFileNames": true, "importHelpers": false, - "isolatedDeclarations": true, "lib": ["ESNext"], "module": "ESNext", "moduleResolution": "Bundler", diff --git a/tsconfig.build.json b/tsconfig.build.json index e8c0f0ccf..43b2fb18c 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.base.json", "compilerOptions": { - "rootDir": "src" + "rootDir": "src", + "outDir": "lib", + "noCheck": true }, "include": ["src", "typings"] } diff --git a/tsconfig.build.types.json b/tsconfig.build.types.json new file mode 100644 index 000000000..29c7cdbc3 --- /dev/null +++ b/tsconfig.build.types.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.build.json", + "compilerOptions": { + "types": [] + } +} diff --git a/tsconfig.json b/tsconfig.json index 7c04b2346..c966d3c5f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,9 @@ { - "extends": "./tsconfig.build.json", + "extends": "./tsconfig.base.json", "compilerOptions": { "allowJs": true, "noEmit": true, - "rootDir": ".", - "isolatedDeclarations": false + "rootDir": "." }, "include": [".", ".*", "**/*", "**/.*"] } diff --git a/vitest.config.ts b/vitest.config.ts index 207d3a308..258a3c968 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -8,8 +8,9 @@ export default defineConfig({ include: ["./**/*.test.ts"], exclude: ["lib", "node_modules"], coverage: { - provider: "v8", + all: true, include: ["src"], + exclude: ["lib"], reporter: ["lcov", "text"], watermarks: { lines: [80, 95],