diff --git a/.github/security.md b/.github/security.md new file mode 100644 index 000000000..2e5808ae9 --- /dev/null +++ b/.github/security.md @@ -0,0 +1,5 @@ +# Security + +To report a vulnerability, please open a private vulnerability report at . + +While the discovery of new vulnerabilities is rare, we also recommend always using the latest version of ESLint Plugin Perfectionist to ensure your application remains as secure as possible. diff --git a/changelog.md b/changelog.md index 0cc1e3074..cc75a408b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,24 @@ # Changelog +## v3.6.0 + +[compare changes](https://github.com/azat-io/eslint-plugin-perfectionist/compare/v3.5.0...v3.6.0) + +### 🚀 Features + +- Improve error messages when sorting different groups ([e0f375a](https://github.com/azat-io/eslint-plugin-perfectionist/commit/e0f375a)) +- Improve dependency detection in sort-objects rule ([412d5da](https://github.com/azat-io/eslint-plugin-perfectionist/commit/412d5da)) +- Keep comments above elements being sorted ([bd8ba3f](https://github.com/azat-io/eslint-plugin-perfectionist/commit/bd8ba3f)) + +### 🐞 Bug Fixes + +- Detect dependencies in template literals in sort-enums ([c9367eb](https://github.com/azat-io/eslint-plugin-perfectionist/commit/c9367eb)) + +### ❤️ Contributors + +- Hugo ([@hugop95](http://github.com/hugop95)) + ## v3.5.0 [compare changes](https://github.com/azat-io/eslint-plugin-perfectionist/compare/v3.4.0...v3.5.0) diff --git a/package.json b/package.json index 0165e54c9..9f5c5582c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "eslint-plugin-perfectionist", "description": "ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.", - "version": "3.5.0", + "version": "3.6.0", "homepage": "https://perfectionist.dev", "repository": "azat-io/eslint-plugin-perfectionist", "author": "Azat S. ", @@ -67,54 +67,53 @@ "astro-eslint-parser": "^1.0.2", "eslint": ">=8.0.0", "svelte": ">=3.0.0", - "svelte-eslint-parser": "^0.41.0", + "svelte-eslint-parser": "^0.41.1", "vue-eslint-parser": ">=9.0.0" }, "dependencies": { - "@typescript-eslint/types": "^8.4.0", - "@typescript-eslint/utils": "^8.4.0", + "@typescript-eslint/types": "^8.5.0", + "@typescript-eslint/utils": "^8.5.0", "minimatch": "^9.0.5", "natural-compare-lite": "^1.4.0" }, "devDependencies": { "@astrojs/check": "^0.9.3", - "@astrojs/mdx": "^3.1.5", + "@astrojs/mdx": "^3.1.6", "@astrojs/sitemap": "^3.1.6", "@astrojs/svelte": "^5.7.0", "@azat-io/eslint-config-astro": "^1.10.0", "@azat-io/stylelint-config": "^0.1.1", - "@commitlint/cli": "^19.4.1", - "@commitlint/config-conventional": "^19.4.1", + "@commitlint/cli": "^19.5.0", + "@commitlint/config-conventional": "^19.5.0", "@nanostores/persistent": "^0.10.2", "@nanostores/vue": "^0.10.0", "@playform/compress": "^0.1.1", "@poppanator/sveltekit-svg": "5.0.0-svelte5.3", - "@shikijs/transformers": "^1.16.2", - "@types/eslint": "^9.6.1", + "@shikijs/transformers": "^1.17.6", "@types/mdast": "^4.0.4", "@types/natural-compare-lite": "^1.4.2", "@types/node": "^22.5.4", "@types/unist": "^3.0.3", - "@typescript-eslint/eslint-plugin": "^8.4.0", - "@typescript-eslint/parser": "^8.4.0", - "@typescript-eslint/rule-tester": "^8.4.0", + "@typescript-eslint/eslint-plugin": "^8.5.0", + "@typescript-eslint/parser": "^8.5.0", + "@typescript-eslint/rule-tester": "^8.5.0", "@typescript-eslint/types": "^6.13.0", "@vercel/og": "^0.6.2", - "@vitest/coverage-v8": "^2.0.5", - "astro": "^4.15.4", - "astro-eslint-parser": "^1.0.2", + "@vitest/coverage-v8": "^2.1.1", + "astro": "^4.15.5", + "astro-eslint-parser": "^1.0.3", "browserslist": "^4.23.3", "changelogen": "^0.5.5", "clean-publish": "^5.0.0", "cspell": "^8.14.2", "eslint": "^9.10.0", - "eslint-plugin-astro": "^1.2.3", + "eslint-plugin-astro": "^1.2.4", "eslint-plugin-eslint-plugin": "^6.2.0", "eslint-plugin-import": "^2.30.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-n": "^17.10.2", "eslint-plugin-node-import": "^1.0.4", - "eslint-plugin-perfectionist": "^3.4.0", + "eslint-plugin-perfectionist": "^3.5.0", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prefer-let": "^4.0.0", "eslint-plugin-promise": "^7.1.0", @@ -123,7 +122,7 @@ "eslint-plugin-vitest": "^0.5.4", "execa": "^9.3.1", "keyux": "^0.8.2", - "lightningcss": "^1.26.0", + "lightningcss": "^1.27.0", "nanostores": "^0.11.3", "postcss-html": "^1.7.0", "prettier": "^3.3.3", @@ -131,7 +130,7 @@ "prettier-plugin-svelte": "^3.2.6", "rehype-external-links": "^3.0.0", "remark-sectionize": "^2.0.0", - "shiki": "^1.16.2", + "shiki": "^1.17.6", "shiki-magic-move": "^0.4.4", "simple-git-hooks": "^2.11.1", "stylelint": "^16.9.0", @@ -140,17 +139,17 @@ "stylelint-order": "^6.0.4", "stylelint-plugin-logical-css": "^1.2.1", "svelte": "5.0.0-next.221", - "svelte-check": "^4.0.1", - "svelte-eslint-parser": "^0.41.0", + "svelte-check": "^4.0.2", + "svelte-eslint-parser": "^0.41.1", "svgo": "^3.3.2", "ts-dedent": "^2.2.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", - "vite": "^5.4.3", - "vite-plugin-dts": "4.1.1", + "vite": "^5.4.5", + "vite-plugin-dts": "4.2.1", "vite-plugin-lightningcss": "^0.0.5", - "vitest": "^2.0.5", + "vitest": "^2.1.1", "vue-eslint-parser": "^9.4.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 697e56fee..a08312cac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,11 @@ importers: .: dependencies: '@typescript-eslint/types': - specifier: ^8.4.0 - version: 8.4.0 + specifier: ^8.5.0 + version: 8.5.0 '@typescript-eslint/utils': - specifier: ^8.4.0 - version: 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + specifier: ^8.5.0 + version: 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) minimatch: specifier: ^9.0.5 version: 9.0.5 @@ -23,46 +23,43 @@ importers: devDependencies: '@astrojs/check': specifier: ^0.9.3 - version: 0.9.3(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + version: 0.9.3(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2) '@astrojs/mdx': - specifier: ^3.1.5 - version: 3.1.5(astro@4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4)) + specifier: ^3.1.6 + version: 3.1.6(astro@4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2)) '@astrojs/sitemap': specifier: ^3.1.6 version: 3.1.6 '@astrojs/svelte': specifier: ^5.7.0 - version: 5.7.0(astro@4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4))(svelte@5.0.0-next.221)(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + version: 5.7.0(astro@4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2))(svelte@5.0.0-next.221)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) '@azat-io/eslint-config-astro': specifier: ^1.10.0 - version: 1.10.0(x24dft4mfum6gcr7sq3rmotbhy) + version: 1.10.0(6gyyvi7e5nbldxj7xpksdi46ny) '@azat-io/stylelint-config': specifier: ^0.1.1 - version: 0.1.1(stylelint-config-recess-order@5.1.0(stylelint@16.9.0(typescript@5.5.4)))(stylelint-gamut@1.3.4(stylelint@16.9.0(typescript@5.5.4)))(stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.5.4)))(stylelint-plugin-logical-css@1.2.1(stylelint@16.9.0(typescript@5.5.4)))(stylelint@16.9.0(typescript@5.5.4)) + version: 0.1.1(stylelint-config-recess-order@5.1.0(stylelint@16.9.0(typescript@5.6.2)))(stylelint-gamut@1.3.4(stylelint@16.9.0(typescript@5.6.2)))(stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.6.2)))(stylelint-plugin-logical-css@1.2.1(stylelint@16.9.0(typescript@5.6.2)))(stylelint@16.9.0(typescript@5.6.2)) '@commitlint/cli': - specifier: ^19.4.1 - version: 19.4.1(@types/node@22.5.4)(typescript@5.5.4) + specifier: ^19.5.0 + version: 19.5.0(@types/node@22.5.4)(typescript@5.6.2) '@commitlint/config-conventional': - specifier: ^19.4.1 - version: 19.4.1 + specifier: ^19.5.0 + version: 19.5.0 '@nanostores/persistent': specifier: ^0.10.2 version: 0.10.2(nanostores@0.11.3) '@nanostores/vue': specifier: ^0.10.0 - version: 0.10.0(nanostores@0.11.3)(vue@3.5.3(typescript@5.5.4)) + version: 0.10.0(nanostores@0.11.3)(vue@3.5.5(typescript@5.6.2)) '@playform/compress': specifier: ^0.1.1 - version: 0.1.1(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4) + version: 0.1.1(@types/node@22.5.4)(rollup@4.21.3)(typescript@5.6.2) '@poppanator/sveltekit-svg': specifier: 5.0.0-svelte5.3 - version: 5.0.0-svelte5.3(rollup@4.21.2)(svelte@5.0.0-next.221)(svgo@3.3.2)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + version: 5.0.0-svelte5.3(rollup@4.21.3)(svelte@5.0.0-next.221)(svgo@3.3.2)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) '@shikijs/transformers': - specifier: ^1.16.2 - version: 1.16.2 - '@types/eslint': - specifier: ^9.6.1 - version: 9.6.1 + specifier: ^1.17.6 + version: 1.17.6 '@types/mdast': specifier: ^4.0.4 version: 4.0.4 @@ -76,26 +73,26 @@ importers: specifier: ^3.0.3 version: 3.0.3 '@typescript-eslint/eslint-plugin': - specifier: ^8.4.0 - version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + specifier: ^8.5.0 + version: 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/parser': - specifier: ^8.4.0 - version: 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + specifier: ^8.5.0 + version: 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/rule-tester': - specifier: ^8.4.0 - version: 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + specifier: ^8.5.0 + version: 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@vercel/og': specifier: ^0.6.2 version: 0.6.2 '@vitest/coverage-v8': - specifier: ^2.0.5 - version: 2.0.5(vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + specifier: ^2.1.1 + version: 2.1.1(vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) astro: - specifier: ^4.15.4 - version: 4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4) + specifier: ^4.15.5 + version: 4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2) astro-eslint-parser: - specifier: ^1.0.2 - version: 1.0.2(typescript@5.5.4) + specifier: ^1.0.3 + version: 1.0.3(typescript@5.6.2) browserslist: specifier: ^4.23.3 version: 4.23.3 @@ -112,14 +109,14 @@ importers: specifier: ^9.10.0 version: 9.10.0(jiti@1.21.6) eslint-plugin-astro: - specifier: ^1.2.3 - version: 1.2.3(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + specifier: ^1.2.4 + version: 1.2.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint-plugin-eslint-plugin: specifier: ^6.2.0 version: 6.2.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-import: specifier: ^2.30.0 - version: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + version: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-jsx-a11y: specifier: ^6.10.0 version: 6.10.0(eslint@9.10.0(jiti@1.21.6)) @@ -130,8 +127,8 @@ importers: specifier: ^1.0.4 version: 1.0.4(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-perfectionist: - specifier: ^3.4.0 - version: 3.4.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) + specifier: ^3.5.0 + version: 3.5.0(astro-eslint-parser@1.0.3(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.1(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) eslint-plugin-prefer-arrow: specifier: ^1.2.3 version: 1.2.3(eslint@9.10.0(jiti@1.21.6)) @@ -143,13 +140,13 @@ importers: version: 7.1.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-sonarjs: specifier: 2.0.2 - version: 2.0.2(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + version: 2.0.2(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-unicorn: specifier: ^55.0.0 version: 55.0.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-vitest: specifier: ^0.5.4 - version: 0.5.4(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + version: 0.5.4(@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) execa: specifier: ^9.3.1 version: 9.3.1 @@ -157,8 +154,8 @@ importers: specifier: ^0.8.2 version: 0.8.2 lightningcss: - specifier: ^1.26.0 - version: 1.26.0 + specifier: ^1.27.0 + version: 1.27.0 nanostores: specifier: ^0.11.3 version: 0.11.3 @@ -181,38 +178,38 @@ importers: specifier: ^2.0.0 version: 2.0.0 shiki: - specifier: ^1.16.2 - version: 1.16.2 + specifier: ^1.17.6 + version: 1.17.6 shiki-magic-move: specifier: ^0.4.4 - version: 0.4.4(shiki@1.16.2)(svelte@5.0.0-next.221)(vue@3.5.3(typescript@5.5.4)) + version: 0.4.4(shiki@1.17.6)(svelte@5.0.0-next.221)(vue@3.5.5(typescript@5.6.2)) simple-git-hooks: specifier: ^2.11.1 version: 2.11.1 stylelint: specifier: ^16.9.0 - version: 16.9.0(typescript@5.5.4) + version: 16.9.0(typescript@5.6.2) stylelint-config-recess-order: specifier: ^5.1.0 - version: 5.1.0(stylelint@16.9.0(typescript@5.5.4)) + version: 5.1.0(stylelint@16.9.0(typescript@5.6.2)) stylelint-gamut: specifier: ^1.3.4 - version: 1.3.4(stylelint@16.9.0(typescript@5.5.4)) + version: 1.3.4(stylelint@16.9.0(typescript@5.6.2)) stylelint-order: specifier: ^6.0.4 - version: 6.0.4(stylelint@16.9.0(typescript@5.5.4)) + version: 6.0.4(stylelint@16.9.0(typescript@5.6.2)) stylelint-plugin-logical-css: specifier: ^1.2.1 - version: 1.2.1(stylelint@16.9.0(typescript@5.5.4)) + version: 1.2.1(stylelint@16.9.0(typescript@5.6.2)) svelte: specifier: 5.0.0-next.221 version: 5.0.0-next.221 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(svelte@5.0.0-next.221)(typescript@5.5.4) + specifier: ^4.0.2 + version: 4.0.2(svelte@5.0.0-next.221)(typescript@5.6.2) svelte-eslint-parser: - specifier: ^0.41.0 - version: 0.41.0(svelte@5.0.0-next.221) + specifier: ^0.41.1 + version: 0.41.1(svelte@5.0.0-next.221) svgo: specifier: ^3.3.2 version: 3.3.2 @@ -220,8 +217,8 @@ importers: specifier: ^2.2.0 version: 2.2.0 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 unified: specifier: ^11.0.5 version: 11.0.5 @@ -229,17 +226,17 @@ importers: specifier: ^5.0.0 version: 5.0.0 vite: - specifier: ^5.4.3 - version: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) vite-plugin-dts: - specifier: 4.1.1 - version: 4.1.1(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + specifier: 4.2.1 + version: 4.2.1(@types/node@22.5.4)(rollup@4.21.3)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) vite-plugin-lightningcss: specifier: ^0.0.5 version: 0.0.5 vitest: - specifier: ^2.0.5 - version: 2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) vue-eslint-parser: specifier: ^9.4.3 version: 9.4.3(eslint@9.10.0(jiti@1.21.6)) @@ -277,8 +274,8 @@ packages: '@astrojs/markdown-remark@5.2.0': resolution: {integrity: sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==} - '@astrojs/mdx@3.1.5': - resolution: {integrity: sha512-Fu6oShqcDpi0D1b2/3Pg3ao1I+Q2YqKhFsSsuDzn0YhdGrry5oUyABUyCyGq/OayP2P/34Vwj+GCQ/n9h8FlTQ==} + '@astrojs/mdx@3.1.6': + resolution: {integrity: sha512-YCEIvNgoQG3oVhe9codH4TX6zjvkl7KGla19yZO5RCnvjv2d9zyrfWqJ98I6/m18PbEY3k8Wjvha0IIf5eZ2sQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} peerDependencies: astro: ^4.8.0 @@ -998,73 +995,73 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@commitlint/cli@19.4.1': - resolution: {integrity: sha512-EerFVII3ZcnhXsDT9VePyIdCJoh3jEzygN1L37MjQXgPfGS6fJTWL/KHClVMod1d8w94lFC3l4Vh/y5ysVAz2A==} + '@commitlint/cli@19.5.0': + resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@19.4.1': - resolution: {integrity: sha512-D5S5T7ilI5roybWGc8X35OBlRXLAwuTseH1ro0XgqkOWrhZU8yOwBOslrNmSDlTXhXLq8cnfhQyC42qaUCzlXA==} + '@commitlint/config-conventional@19.5.0': + resolution: {integrity: sha512-OBhdtJyHNPryZKg0fFpZNOBM1ZDbntMvqMuSmpfyP86XSfwzGw4CaoYRG4RutUPg0BTK07VMRIkNJT6wi2zthg==} engines: {node: '>=v18'} - '@commitlint/config-validator@19.0.3': - resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + '@commitlint/config-validator@19.5.0': + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} engines: {node: '>=v18'} - '@commitlint/ensure@19.0.3': - resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + '@commitlint/ensure@19.5.0': + resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} engines: {node: '>=v18'} - '@commitlint/execute-rule@19.0.0': - resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + '@commitlint/execute-rule@19.5.0': + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} engines: {node: '>=v18'} - '@commitlint/format@19.3.0': - resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==} + '@commitlint/format@19.5.0': + resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} engines: {node: '>=v18'} - '@commitlint/is-ignored@19.2.2': - resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} + '@commitlint/is-ignored@19.5.0': + resolution: {integrity: sha512-0XQ7Llsf9iL/ANtwyZ6G0NGp5Y3EQ8eDQSxv/SRcfJ0awlBY4tHFAvwWbw66FVUaWICH7iE5en+FD9TQsokZ5w==} engines: {node: '>=v18'} - '@commitlint/lint@19.4.1': - resolution: {integrity: sha512-Ws4YVAZ0jACTv6VThumITC1I5AG0UyXMGua3qcf55JmXIXm/ejfaVKykrqx7RyZOACKVAs8uDRIsEsi87JZ3+Q==} + '@commitlint/lint@19.5.0': + resolution: {integrity: sha512-cAAQwJcRtiBxQWO0eprrAbOurtJz8U6MgYqLz+p9kLElirzSCc0vGMcyCaA1O7AqBuxo11l1XsY3FhOFowLAAg==} engines: {node: '>=v18'} - '@commitlint/load@19.4.0': - resolution: {integrity: sha512-I4lCWaEZYQJ1y+Y+gdvbGAx9pYPavqZAZ3/7/8BpWh+QjscAn8AjsUpLV2PycBsEx7gupq5gM4BViV9xwTIJuw==} + '@commitlint/load@19.5.0': + resolution: {integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==} engines: {node: '>=v18'} - '@commitlint/message@19.0.0': - resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + '@commitlint/message@19.5.0': + resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} engines: {node: '>=v18'} - '@commitlint/parse@19.0.3': - resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + '@commitlint/parse@19.5.0': + resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} engines: {node: '>=v18'} - '@commitlint/read@19.4.0': - resolution: {integrity: sha512-r95jLOEZzKDakXtnQub+zR3xjdnrl2XzerPwm7ch1/cc5JGq04tyaNpa6ty0CRCWdVrk4CZHhqHozb8yZwy2+g==} + '@commitlint/read@19.5.0': + resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} engines: {node: '>=v18'} - '@commitlint/resolve-extends@19.1.0': - resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==} + '@commitlint/resolve-extends@19.5.0': + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} engines: {node: '>=v18'} - '@commitlint/rules@19.4.1': - resolution: {integrity: sha512-AgctfzAONoVxmxOXRyxXIq7xEPrd7lK/60h2egp9bgGUMZK9v0+YqLOA+TH+KqCa63ZoCr8owP2YxoSSu7IgnQ==} + '@commitlint/rules@19.5.0': + resolution: {integrity: sha512-hDW5TPyf/h1/EufSHEKSp6Hs+YVsDMHazfJ2azIk9tHPXS6UqSz1dIRs1gpqS3eMXgtkT7JH6TW4IShdqOwhAw==} engines: {node: '>=v18'} - '@commitlint/to-lines@19.0.0': - resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + '@commitlint/to-lines@19.5.0': + resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} engines: {node: '>=v18'} - '@commitlint/top-level@19.0.0': - resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + '@commitlint/top-level@19.5.0': + resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} engines: {node: '>=v18'} - '@commitlint/types@19.0.3': - resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + '@commitlint/types@19.5.0': + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} engines: {node: '>=v18'} '@cspell/cspell-bundled-dicts@8.14.2': @@ -1746,11 +1743,11 @@ packages: '@mdx-js/mdx@3.0.1': resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} - '@microsoft/api-extractor-model@7.29.4': - resolution: {integrity: sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==} + '@microsoft/api-extractor-model@7.29.6': + resolution: {integrity: sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==} - '@microsoft/api-extractor@7.47.4': - resolution: {integrity: sha512-HKm+P4VNzWwvq1Ey+Jfhhj/3MjsD+ka2hbt8L5AcRM95lu1MFOYnz3XlU7Gr79Q/ZhOb7W/imAKeYrOI0bFydg==} + '@microsoft/api-extractor@7.47.7': + resolution: {integrity: sha512-fNiD3G55ZJGhPOBPMKD/enozj8yxJSYyVJWxRWdcUtw842rvthDHJgUWq9gXQTensFlMHv2wGuCjjivPv53j0A==} hasBin: true '@microsoft/tsdoc-config@0.17.0': @@ -1835,91 +1832,91 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.21.2': - resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} + '@rollup/rollup-android-arm-eabi@4.21.3': + resolution: {integrity: sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.21.2': - resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} + '@rollup/rollup-android-arm64@4.21.3': + resolution: {integrity: sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.21.2': - resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} + '@rollup/rollup-darwin-arm64@4.21.3': + resolution: {integrity: sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.21.2': - resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} + '@rollup/rollup-darwin-x64@4.21.3': + resolution: {integrity: sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': - resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} + '@rollup/rollup-linux-arm-gnueabihf@4.21.3': + resolution: {integrity: sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.21.2': - resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} + '@rollup/rollup-linux-arm-musleabihf@4.21.3': + resolution: {integrity: sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.21.2': - resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} + '@rollup/rollup-linux-arm64-gnu@4.21.3': + resolution: {integrity: sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.21.2': - resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} + '@rollup/rollup-linux-arm64-musl@4.21.3': + resolution: {integrity: sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': - resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.21.3': + resolution: {integrity: sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.21.2': - resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} + '@rollup/rollup-linux-riscv64-gnu@4.21.3': + resolution: {integrity: sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.21.2': - resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} + '@rollup/rollup-linux-s390x-gnu@4.21.3': + resolution: {integrity: sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.21.2': - resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} + '@rollup/rollup-linux-x64-gnu@4.21.3': + resolution: {integrity: sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.21.2': - resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} + '@rollup/rollup-linux-x64-musl@4.21.3': + resolution: {integrity: sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.21.2': - resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} + '@rollup/rollup-win32-arm64-msvc@4.21.3': + resolution: {integrity: sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.21.2': - resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} + '@rollup/rollup-win32-ia32-msvc@4.21.3': + resolution: {integrity: sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.21.2': - resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} + '@rollup/rollup-win32-x64-msvc@4.21.3': + resolution: {integrity: sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==} cpu: [x64] os: [win32] '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@rushstack/node-core-library@5.5.1': - resolution: {integrity: sha512-ZutW56qIzH8xIOlfyaLQJFx+8IBqdbVCZdnj+XT1MorQ1JqqxHse8vbCpEM+2MjsrqcbxcgDIbfggB1ZSQ2A3g==} + '@rushstack/node-core-library@5.7.0': + resolution: {integrity: sha512-Ff9Cz/YlWu9ce4dmqNBZpA45AEya04XaBFIjV7xTVeEf+y/kTjEasmozqFELXlNG4ROdevss75JrrZ5WgufDkQ==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -1929,28 +1926,37 @@ packages: '@rushstack/rig-package@0.5.3': resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - '@rushstack/terminal@0.13.3': - resolution: {integrity: sha512-fc3zjXOw8E0pXS5t9vTiIPx9gHA0fIdTXsu9mT4WbH+P3mYvnrX0iAQ5a6NvyK1+CqYWBTw/wVNx7SDJkI+WYQ==} + '@rushstack/terminal@0.14.0': + resolution: {integrity: sha512-juTKMAMpTIJKudeFkG5slD8Z/LHwNwGZLtU441l/u82XdTBfsP+LbGKJLCNwP5se+DMCT55GB8x9p6+C4UL7jw==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true - '@rushstack/ts-command-line@4.22.3': - resolution: {integrity: sha512-edMpWB3QhFFZ4KtSzS8WNjBgR4PXPPOVrOHMbb7kNpmQ1UFS9HdVtjCXg1H5fG+xYAbeE+TMPcVPUyX2p84STA==} + '@rushstack/ts-command-line@4.22.6': + resolution: {integrity: sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==} '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/core@1.16.2': - resolution: {integrity: sha512-XSVH5OZCvE4WLMgdoBqfPMYmGHGmCC3OgZhw0S7KcSi2XKZ+5oHGe71GFnTljgdOxvxx5WrRks6QoTLKrl1eAA==} + '@shikijs/core@1.17.6': + resolution: {integrity: sha512-9ztslig6/YmCg/XwESAXbKjAjOhaq6HVced9NY6qcbDz1X5g/S90Wco2vMjBNX/6V71ASkzri76JewSGPa7kiQ==} + + '@shikijs/engine-javascript@1.17.6': + resolution: {integrity: sha512-5EEZj8tVcierNxm4V0UMS2PVoflb0UJPalWWV8l9rRg+oOfnr5VivqBJbkyq5grltVPvByIXvVbY8GSM/356jQ==} + + '@shikijs/engine-oniguruma@1.17.6': + resolution: {integrity: sha512-NLfWDMXFYe0nDHFbEoyZdz89aIIey3bTfF3zLYSUNTXks5s4uinZVmuPOFf1HfTeGqIn8uErJSBc3VnpJO7Alw==} + + '@shikijs/transformers@1.17.6': + resolution: {integrity: sha512-k2VAfbm19bF0ofPaEdWSQJrzT47ukCQcajWQsiGMwcH9DFBFFpFHzWTuwagmxwywAClCZiBkhP6U3uxngbJgRw==} - '@shikijs/transformers@1.16.2': - resolution: {integrity: sha512-AR6ANiKwi1dJr5g/W0L+Su4PoHurkHLgtNmesbOFOPGKNQC2BeGU/Z2Ghkl+cUF5PfE+UeLkxUwzpE6H37hTSg==} + '@shikijs/types@1.17.6': + resolution: {integrity: sha512-ndTFa2TJi2w51ddKQDn3Jy8f6K4E5Q2x3dA3Hmsd3+YmxDQ10UWHjcw7VbVbKzv3VcUvYPLy+z9neqytSzUMUg==} - '@shikijs/vscode-textmate@9.2.0': - resolution: {integrity: sha512-5FinaOp6Vdh/dl4/yaOTh0ZeKch+rYS8DUb38V3GMKYVkdqzxw53lViRKUYkVILRiVQT7dcPC7VvAKOR73zVtQ==} + '@shikijs/vscode-textmate@9.2.2': + resolution: {integrity: sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==} '@shuding/opentype.js@1.4.0-beta.0': resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} @@ -2013,9 +2019,6 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -2028,9 +2031,6 @@ packages: '@types/html-minifier-terser@7.0.2': resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -2081,8 +2081,8 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.4.0': - resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} + '@typescript-eslint/eslint-plugin@8.5.0': + resolution: {integrity: sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -2092,8 +2092,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.4.0': - resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} + '@typescript-eslint/parser@8.5.0': + resolution: {integrity: sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2102,8 +2102,8 @@ packages: typescript: optional: true - '@typescript-eslint/rule-tester@8.4.0': - resolution: {integrity: sha512-z4DE0HJyvNNPOe77UUrr2YPRhhbCqK1Ls09MLFv5OIxKekFR1zWQbM9bwkXSEqpzsLcQ00ZXUZVOnLjoV/+DoQ==} + '@typescript-eslint/rule-tester@8.5.0': + resolution: {integrity: sha512-ySLDyc7rktaTLcAICIKf5MG6tjc20g9e6oud4oG1OlsBLZlV9Yl4iuCnmBILojjST8/iYs5o1qebYhF1r97EfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2116,8 +2116,8 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.4.0': - resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} + '@typescript-eslint/scope-manager@8.5.0': + resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/type-utils@7.16.1': @@ -2130,8 +2130,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.4.0': - resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} + '@typescript-eslint/type-utils@8.5.0': + resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2147,8 +2147,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.4.0': - resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} + '@typescript-eslint/types@8.5.0': + resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@7.16.1': @@ -2169,8 +2169,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.4.0': - resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} + '@typescript-eslint/typescript-estree@8.5.0': + resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2190,8 +2190,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.4.0': - resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} + '@typescript-eslint/utils@8.5.0': + resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2204,8 +2204,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.4.0': - resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} + '@typescript-eslint/visitor-keys@8.5.0': + resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': @@ -2215,48 +2215,64 @@ packages: resolution: {integrity: sha512-OTe0KE37F5Y2eTys6eMnfopC+P4qr2ooXUTFyFPTplYSPwowmFk/HLD1FXtbKLjqsIH0SgekcJWad+C5uX4nkg==} engines: {node: '>=16'} - '@vitest/coverage-v8@2.0.5': - resolution: {integrity: sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==} + '@vitest/coverage-v8@2.1.1': + resolution: {integrity: sha512-md/A7A3c42oTT8JUHSqjP5uKTWJejzUW4jalpvs+rZ27gsURsMU8DEb+8Jf8C6Kj2gwfSHJqobDNBuoqlm0cFw==} peerDependencies: - vitest: 2.0.5 + '@vitest/browser': 2.1.1 + vitest: 2.1.1 + peerDependenciesMeta: + '@vitest/browser': + optional: true + + '@vitest/expect@2.1.1': + resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@vitest/mocker@2.1.1': + resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} + peerDependencies: + '@vitest/spy': 2.1.1 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + '@vitest/pretty-format@2.1.1': + resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} - '@vitest/runner@2.0.5': - resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} + '@vitest/runner@2.1.1': + resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} - '@vitest/snapshot@2.0.5': - resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} + '@vitest/snapshot@2.1.1': + resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + '@vitest/spy@2.1.1': + resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + '@vitest/utils@2.1.1': + resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} - '@volar/kit@2.4.2': - resolution: {integrity: sha512-sHCJv/nd8ZYsP/WKoTIQTboKbJ4F7oerv6PJK/ji374JTn3fqNnp4EV0V+Iiw60V7oUOWozhh7k6nugUUYDFWg==} + '@volar/kit@2.4.4': + resolution: {integrity: sha512-6WusqQ4YhtIYbqY3nlLnkSbfBRSakx5HcTKdF+WjGKBj5D74ux9nsLq3uAqQlbpKgVkkt425KEDymQTb4C36Kg==} peerDependencies: typescript: '*' - '@volar/language-core@2.4.2': - resolution: {integrity: sha512-sONt5RLvLL1SlBdhyUSthZzuKePbJ7DwFFB9zT0eyWpDl+v7GXGh/RkPxxWaR22bIhYtTzp4Ka1MWatl/53Riw==} + '@volar/language-core@2.4.4': + resolution: {integrity: sha512-kO9k4kTLfxpg+6lq7/KAIv3m2d62IHuCL6GbVgYZTpfKvIGoAIlDxK7pFcB/eczN2+ydg/vnyaeZ6SGyZrJw2w==} - '@volar/language-server@2.4.2': - resolution: {integrity: sha512-BoGGGar5kzWnCxv41nnpplPQz+ntHgOSYshxH7CqNo5DOz5R3WXtkDA6T6bOpt70JeejoNyk/5kINV8KGeI17Q==} + '@volar/language-server@2.4.4': + resolution: {integrity: sha512-rBzTgRw4/msZSFRSJURFU53qcDfBNm40NtYoMwOyaZuPcLzdgDAZ3hzVE80Rj0pk82LQJ0AfH13Y+EYFvUWkfQ==} - '@volar/language-service@2.4.2': - resolution: {integrity: sha512-tJAfl1RouBcSPfgY7ivV/CWH6G/cOzwflMUFnfR7qTLZht7azx4CwlndiyGiL7lGcnfi7OZBKXd8Oqy9jhKZCA==} + '@volar/language-service@2.4.4': + resolution: {integrity: sha512-QXfZV3IpJdcNQcdWFEG+iXOIb3NiC6/cNIQeH2QAOMx2vpkshuMcWD7AzrhVavobircOXJNiGmRGwqf2okYE3A==} - '@volar/source-map@2.4.2': - resolution: {integrity: sha512-qiGfGgeZ5DEarPX3S+HcFktFCjfDrFPCXKeXNbrlB7v8cvtPRm8YVwoXOdGG1NhaL5rMlv5BZPVQyu4EdWWIvA==} + '@volar/source-map@2.4.4': + resolution: {integrity: sha512-xG3PZqOP2haG8XG4Pg3PD1UGDAdqZg24Ru8c/qYjYAnmcj6GBR64mstx+bZux5QOyRaJK+/lNM/RnpvBD3489g==} - '@volar/typescript@2.4.2': - resolution: {integrity: sha512-m2uZduhaHO1SZuagi30OsjI/X1gwkaEAC+9wT/nCNAtJ5FqXEkKvUncHmffG7ESDZPlFFUBK4vJ0D9Hfr+f2EA==} + '@volar/typescript@2.4.4': + resolution: {integrity: sha512-QQMQRVj0fVHJ3XdRKiS1LclhG0VBXdFYlyuHRQF/xLk2PuJuHNWP26MDZNvEVCvnyUQuUQhIAfylwY5TGPgc6w==} '@vscode/emmet-helper@2.9.3': resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} @@ -2264,45 +2280,45 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - '@vue/compiler-core@3.5.3': - resolution: {integrity: sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==} + '@vue/compiler-core@3.5.5': + resolution: {integrity: sha512-ZrxcY8JMoV+kgDrmRwlDufz0SjDZ7jfoNZiIBluAACMBmgr55o/jTbxnyrccH6VSJXnFaDI4Ik1UFCiq9r8i7w==} - '@vue/compiler-dom@3.5.3': - resolution: {integrity: sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==} + '@vue/compiler-dom@3.5.5': + resolution: {integrity: sha512-HSvK5q1gmBbxRse3S0Wt34RcKuOyjDJKDDMuF3i7NC+QkDFrbAqw8NnrEm/z7zFDxWZa4/5eUwsBOMQzm1RHBA==} - '@vue/compiler-sfc@3.5.3': - resolution: {integrity: sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==} + '@vue/compiler-sfc@3.5.5': + resolution: {integrity: sha512-MzBHDxwZhgQPHrwJ5tj92gdTYRCuPDSZr8PY3+JFv8cv2UD5/WayH5yo0kKCkKfrtJhc39jNSMityHrkMSbfnA==} - '@vue/compiler-ssr@3.5.3': - resolution: {integrity: sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==} + '@vue/compiler-ssr@3.5.5': + resolution: {integrity: sha512-oFasHnpv/upubjJEmqiTKQYb4qS3ziJddf4UVWuFw6ebk/QTrTUc+AUoTJdo39x9g+AOQBzhOU0ICCRuUjvkmw==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - '@vue/language-core@2.0.29': - resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==} + '@vue/language-core@2.1.6': + resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@vue/reactivity@3.5.3': - resolution: {integrity: sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==} + '@vue/reactivity@3.5.5': + resolution: {integrity: sha512-V4tTWElZQhT73PSK3Wnax9R9m4qvMX+LeKHnfylZc6SLh4Jc5/BPakp6e3zEhKWi5AN8TDzRkGnLkp8OqycYng==} - '@vue/runtime-core@3.5.3': - resolution: {integrity: sha512-5b2AQw5OZlmCzSsSBWYoZOsy75N4UdMWenTfDdI5bAzXnuVR7iR8Q4AOzQm2OGoA41xjk53VQKrqQhOz2ktWaw==} + '@vue/runtime-core@3.5.5': + resolution: {integrity: sha512-2/CFaRN17jgsXy4MpigWFBCAMmLkXPb4CjaHrndglwYSra7ajvkH2cat21dscuXaH91G8fXAeg5gCyxWJ+wCRA==} - '@vue/runtime-dom@3.5.3': - resolution: {integrity: sha512-wPR1DEGc3XnQ7yHbmkTt3GoY0cEnVGQnARRdAkDzZ8MbUKEs26gogCQo6AOvvgahfjIcnvWJzkZArQ1fmWjcSg==} + '@vue/runtime-dom@3.5.5': + resolution: {integrity: sha512-0bQGgCuL+4Muz5PsCLgF4Ata9BTdhHi5VjsxtTDyI0Wy4MgoSvBGaA6bDc7W7CGgZOyirf9LNeetMYHQ05pgpw==} - '@vue/server-renderer@3.5.3': - resolution: {integrity: sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q==} + '@vue/server-renderer@3.5.5': + resolution: {integrity: sha512-XjRamLIq5f47cxgy+hiX7zUIY+4RHdPDVrPvvMDAUTdW5RJWX/S0ji/rCbm3LWTT/9Co9bvQME8ZI15ahL4/Qw==} peerDependencies: - vue: 3.5.3 + vue: 3.5.5 - '@vue/shared@3.5.3': - resolution: {integrity: sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==} + '@vue/shared@3.5.5': + resolution: {integrity: sha512-0KyMXyEgnmFAs6rNUL+6eUHtUCqCaNrVd+AW3MX3LyA0Yry5SA0Km03CDKiOua1x1WWnIr+W9+S0GMFoSDWERQ==} JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -2358,8 +2374,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} ansi-styles@3.2.1: @@ -2390,8 +2406,9 @@ packages: aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.1: + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} + engines: {node: '>= 0.4'} array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} @@ -2453,12 +2470,12 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro-eslint-parser@1.0.2: - resolution: {integrity: sha512-8hJaCuqxObShWl2wEsnASqh/DbQ2O+S66m0Q3ctJlzBPEQ4pfGwwama3FCjZO3GDLQsjvn1T0v93Vxyu/+5fGw==} + astro-eslint-parser@1.0.3: + resolution: {integrity: sha512-AGsGgcg7Jg9UpyCDgvl/EkdYpe1oMkFdmC2Zl+KWneoieLCtQIFjmcY8yt41gcNx4mby0w8BBJQcBmPuf8UAoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - astro@4.15.4: - resolution: {integrity: sha512-wqy+m3qygt9DmCSqMsckxyK4ccCUFtti2d/WlLkEpAlqHgyDIg20zRTLHO2v/H4YeSlJ8sAcN0RW2FhOeYbINg==} + astro@4.15.5: + resolution: {integrity: sha512-zcHXpRav0dtYpddxoGMDN7A7SKrGL9wsu5IxLjqCcZhylfZ/5mfLfoGYnSg7aFwuAleUXP66lyfY+GDbFTbF2w==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -2590,8 +2607,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001658: - resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} + caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3056,15 +3073,15 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - dset@3.1.3: - resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.18: - resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==} + electron-to-chromium@1.5.22: + resolution: {integrity: sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==} emmet@2.4.7: resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} @@ -3201,8 +3218,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-astro@1.2.3: - resolution: {integrity: sha512-asHT0VUs68oppVnTHfp/WgLqs0yCx9kG9AC/PKLmp+87imeh3nGHMdFm0qP46vHxTM0NLDEhvmjFdAVAqw+QPQ==} + eslint-plugin-astro@1.2.4: + resolution: {integrity: sha512-45uXKW6lxmYEa8Gkh5lCfwAnOyQD90AaMS2Bu9ans88f+pFkliqjGeexiKv73oiTcY3I0vlzTUk5GlqvYlkjyA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.57.0' @@ -3247,8 +3264,8 @@ packages: peerDependencies: eslint: '>=7' - eslint-plugin-perfectionist@3.4.0: - resolution: {integrity: sha512-vXyd1sFg3H/7aKgBUie62bA6E0EN3Dh0LCD5r4vR/IYtTljxOnyckI1AV0Arw4eYjC/W9T1X04Pl2mdLsdWtMA==} + eslint-plugin-perfectionist@3.5.0: + resolution: {integrity: sha512-vwDNuxlAlbZJ3DjHo6GnfZrmMlJBLFrkOLBV/rYvVnLFD+x54u9VyJcGOfJ2DK9d1cd3a/C/vtBrbBNgAC6Mrg==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: astro-eslint-parser: ^1.0.2 @@ -3287,8 +3304,8 @@ packages: 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.2: - resolution: {integrity: sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==} + 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 @@ -3605,8 +3622,8 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.8.0: - resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} giget@1.2.3: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} @@ -3834,8 +3851,8 @@ packages: inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inline-style-parser@0.2.3: - resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} @@ -3884,8 +3901,8 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} - is-bun-module@1.1.0: - resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==} + 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==} @@ -4030,8 +4047,8 @@ packages: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} - is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} is-weakmap@2.0.2: @@ -4199,8 +4216,8 @@ packages: cpu: [arm64] os: [darwin] - lightningcss-darwin-arm64@1.26.0: - resolution: {integrity: sha512-n4TIvHO1NY1ondKFYpL2ZX0bcC2y6yjXMD6JfyizgR8BCFNEeArINDzEaeqlfX9bXz73Bpz/Ow0nu+1qiDrBKg==} + lightningcss-darwin-arm64@1.27.0: + resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -4211,8 +4228,8 @@ packages: cpu: [x64] os: [darwin] - lightningcss-darwin-x64@1.26.0: - resolution: {integrity: sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg==} + lightningcss-darwin-x64@1.27.0: + resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -4223,8 +4240,8 @@ packages: cpu: [x64] os: [freebsd] - lightningcss-freebsd-x64@1.26.0: - resolution: {integrity: sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g==} + lightningcss-freebsd-x64@1.27.0: + resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -4235,8 +4252,8 @@ packages: cpu: [arm] os: [linux] - lightningcss-linux-arm-gnueabihf@1.26.0: - resolution: {integrity: sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg==} + lightningcss-linux-arm-gnueabihf@1.27.0: + resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -4247,8 +4264,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-gnu@1.26.0: - resolution: {integrity: sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA==} + lightningcss-linux-arm64-gnu@1.27.0: + resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -4259,8 +4276,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.26.0: - resolution: {integrity: sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig==} + lightningcss-linux-arm64-musl@1.27.0: + resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -4271,8 +4288,8 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-gnu@1.26.0: - resolution: {integrity: sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA==} + lightningcss-linux-x64-gnu@1.27.0: + resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -4283,14 +4300,14 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.26.0: - resolution: {integrity: sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A==} + lightningcss-linux-x64-musl@1.27.0: + resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.26.0: - resolution: {integrity: sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw==} + lightningcss-win32-arm64-msvc@1.27.0: + resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] @@ -4301,8 +4318,8 @@ packages: cpu: [x64] os: [win32] - lightningcss-win32-x64-msvc@1.26.0: - resolution: {integrity: sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw==} + lightningcss-win32-x64-msvc@1.27.0: + resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -4311,8 +4328,8 @@ packages: resolution: {integrity: sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==} engines: {node: '>= 12.0.0'} - lightningcss@1.26.0: - resolution: {integrity: sha512-a/XZ5hdgifrofQJUArr5AiJjx26SwMam3SJUSMjgebZbESZ96i+6Qsl8tLi0kaUsdMzBWXh9sN1Oe6hp2/dkQw==} + lightningcss@1.27.0: + resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} engines: {node: '>= 12.0.0'} lilconfig@3.1.2: @@ -4458,8 +4475,8 @@ packages: mdast-util-gfm@3.0.0: resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} mdast-util-mdx-jsx@3.1.3: resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} @@ -4787,6 +4804,9 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + open@9.1.0: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} @@ -4905,9 +4925,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -5071,8 +5088,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: @@ -5084,6 +5101,9 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regex@4.3.2: + resolution: {integrity: sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==} + regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -5210,8 +5230,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.21.2: - resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} + rollup@4.21.3: + resolution: {integrity: sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5322,8 +5342,8 @@ packages: vue: optional: true - shiki@1.16.2: - resolution: {integrity: sha512-gSym0hZf5a1U0iDPsdoOAZbvoi+e0c6c3NKAi03FoSLTm7oG20tum29+gk0wzzivOasn3loxfGUPT+jZXIUbWg==} + shiki@1.17.6: + resolution: {integrity: sha512-RejGugKpDM75vh6YtF9R771acxHRDikC/01kxsUGW+Pnaz3pTY+c8aZB5CnD7p0vuFPs1HaoAIU/4E+NCfS+mQ==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -5362,8 +5382,8 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map-support@0.5.21: @@ -5498,8 +5518,8 @@ packages: style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - style-to-object@1.0.7: - resolution: {integrity: sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==} + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} stylelint-config-recess-order@5.1.0: resolution: {integrity: sha512-ddapCF6B/kEtQYIFhQFReQ0dvK1ZdgJDM/SGFtIyeooYDbqaJqcOlGkRRGaVErCQYJY/bPSPsLRS2LdQtLJUVQ==} @@ -5551,16 +5571,16 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@4.0.1: - resolution: {integrity: sha512-AuWnCZdREoOzMhoptHPUUPYUxLNdXSkoZnPnlv19SZJJimRzLmjjZLKsOiRB4AnhgX+56/WSEdvkWXI/q2BSsA==} + svelte-check@4.0.2: + resolution: {integrity: sha512-w2yqcG9ELJe2RJCnAvB7v0OgkHhL3czzz/tVoxGFfO6y4mOrF6QHCDhXijeXzsU7LVKEwWS3Qd9tza4JBuDxqA==} engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: '>=5.0.0' - svelte-eslint-parser@0.41.0: - resolution: {integrity: sha512-L6f4hOL+AbgfBIB52Z310pg1d2QjRqm7wy3kI1W6hhdhX5bvu7+f0R6w4ykp5HoDdzq+vGhIJmsisaiJDGmVfA==} + svelte-eslint-parser@0.41.1: + resolution: {integrity: sha512-08ndI6zTghzI8SuJAFpvMbA/haPSGn3xz19pjre19yYMw8Nw/wQJ2PrZBI/L8ijGTgtkWCQQiLLy+Z1tfaCwNA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.191 @@ -5574,8 +5594,8 @@ packages: peerDependencies: svelte: ^3.19.0 || ^4.0.0 - svelte2tsx@0.7.18: - resolution: {integrity: sha512-PCOhH7uQaV472ZvNAcnkvShjFRMMkKUc/eNJImQMH9T4CyHeQpdatedFrEjaMCsweFb/oo3a6bv4qtdfaCPw8g==} + svelte2tsx@0.7.19: + resolution: {integrity: sha512-PME/9mILn9wOihtk2dxu9tmf2+B9X6oWuqYPJRKSjqU4wq3Pc6+fOuYV7T3H+QF5afmA1oDobfXC6dzmK9NAVw==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 @@ -5618,8 +5638,8 @@ packages: engines: {node: '>=10'} hasBin: true - terser@5.31.6: - resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} + terser@5.32.0: + resolution: {integrity: sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==} engines: {node: '>=10'} hasBin: true @@ -5654,8 +5674,8 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@3.0.0: - resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} titleize@3.0.0: @@ -5745,8 +5765,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - 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 @@ -5762,16 +5782,16 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.1.0: @@ -5862,13 +5882,13 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@2.0.5: - resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} + vite-node@2.1.1: + resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-plugin-dts@4.1.1: - resolution: {integrity: sha512-SxYXwJQbAZ1IMtGEcOuzzZtDWCdcV2JkU7esvpPA8E5tIWVcJB42rZwN9EdULicWGLfaXrUgPIGVSidXBTae2Q==} + vite-plugin-dts@4.2.1: + resolution: {integrity: sha512-/QlYvgUMiv8+ZTEerhNCYnYaZMM07cdlX6hQCR/w/g/nTh0tUXPoYwbT6SitizLJ9BybT1lnrcZgqheI6wromQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -5880,8 +5900,8 @@ packages: vite-plugin-lightningcss@0.0.5: resolution: {integrity: sha512-lhz5GkXeRT/k09A7qEqmoL3CwdJDHgODPeGVlWGU1UxuGPEKfvSpKnDXza8nawKvxvc0eawJEsKjBzQP4AeGHw==} - vite@5.4.3: - resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==} + vite@5.4.5: + resolution: {integrity: sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5927,15 +5947,15 @@ packages: vite: optional: true - vitest@2.0.5: - resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} + vitest@2.1.1: + resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} 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.0.5 - '@vitest/ui': 2.0.5 + '@vitest/browser': 2.1.1 + '@vitest/ui': 2.1.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -6067,14 +6087,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - vue-tsc@2.0.29: - resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==} - hasBin: true - peerDependencies: - typescript: '>=5.0.0' - - vue@3.5.3: - resolution: {integrity: sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q==} + vue@3.5.5: + resolution: {integrity: sha512-ybC+xn67K4+df1yVeov4UjBGyVcXM0a1g7JVZr+pWVUX3xF6ntXU0wIjkTkduZBUIpxTlsftJSxz2kwhsT7dgA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -6197,8 +6211,8 @@ packages: zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} - zod-to-json-schema@3.23.2: - resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} + zod-to-json-schema@3.23.3: + resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} peerDependencies: zod: ^3.23.3 @@ -6221,13 +6235,13 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@astrojs/check@0.9.3(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4)': + '@astrojs/check@0.9.3(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2)': dependencies: - '@astrojs/language-server': 2.14.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + '@astrojs/language-server': 2.14.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 - typescript: 5.5.4 + typescript: 5.6.2 yargs: 17.7.2 transitivePeerDependencies: - prettier @@ -6237,25 +6251,25 @@ snapshots: '@astrojs/internal-helpers@0.4.1': {} - '@astrojs/language-server@2.14.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4)': + '@astrojs/language-server@2.14.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2)': dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/yaml2ts': 0.2.1 '@jridgewell/sourcemap-codec': 1.5.0 - '@volar/kit': 2.4.2(typescript@5.5.4) - '@volar/language-core': 2.4.2 - '@volar/language-server': 2.4.2 - '@volar/language-service': 2.4.2 - '@volar/typescript': 2.4.2 + '@volar/kit': 2.4.4(typescript@5.6.2) + '@volar/language-core': 2.4.4 + '@volar/language-server': 2.4.4 + '@volar/language-service': 2.4.4 + '@volar/typescript': 2.4.4 fast-glob: 3.3.2 muggle-string: 0.4.1 - volar-service-css: 0.0.61(@volar/language-service@2.4.2) - volar-service-emmet: 0.0.61(@volar/language-service@2.4.2) - volar-service-html: 0.0.61(@volar/language-service@2.4.2) - volar-service-prettier: 0.0.61(@volar/language-service@2.4.2)(prettier@3.3.3) - volar-service-typescript: 0.0.61(@volar/language-service@2.4.2) - volar-service-typescript-twoslash-queries: 0.0.61(@volar/language-service@2.4.2) - volar-service-yaml: 0.0.61(@volar/language-service@2.4.2) + volar-service-css: 0.0.61(@volar/language-service@2.4.4) + volar-service-emmet: 0.0.61(@volar/language-service@2.4.4) + volar-service-html: 0.0.61(@volar/language-service@2.4.4) + volar-service-prettier: 0.0.61(@volar/language-service@2.4.4)(prettier@3.3.3) + volar-service-typescript: 0.0.61(@volar/language-service@2.4.4) + volar-service-typescript-twoslash-queries: 0.0.61(@volar/language-service@2.4.4) + volar-service-yaml: 0.0.61(@volar/language-service@2.4.4) vscode-html-languageservice: 5.3.1 vscode-uri: 3.0.8 optionalDependencies: @@ -6278,7 +6292,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 remark-smartypants: 3.0.2 - shiki: 1.16.2 + shiki: 1.17.6 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -6287,12 +6301,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.5(astro@4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4))': + '@astrojs/mdx@3.1.6(astro@4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2))': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.1 - astro: 4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4) + astro: 4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 gray-matter: 4.0.3 @@ -6317,13 +6331,13 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/svelte@5.7.0(astro@4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4))(svelte@5.0.0-next.221)(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6))': + '@astrojs/svelte@5.7.0(astro@4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2))(svelte@5.0.0-next.221)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.221)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) - astro: 4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.221)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) + astro: 4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2) svelte: 5.0.0-next.221 - svelte2tsx: 0.7.18(svelte@5.0.0-next.221)(typescript@5.5.4) - typescript: 5.5.4 + svelte2tsx: 0.7.19(svelte@5.0.0-next.221)(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color - vite @@ -6333,7 +6347,7 @@ snapshots: ci-info: 4.0.0 debug: 4.3.7 dlv: 1.1.3 - dset: 3.1.3 + dset: 3.1.4 is-docker: 3.0.0 is-wsl: 3.1.0 which-pm-runs: 1.1.0 @@ -6344,24 +6358,24 @@ snapshots: dependencies: yaml: 2.5.1 - '@azat-io/eslint-config-astro@1.10.0(x24dft4mfum6gcr7sq3rmotbhy)': + '@azat-io/eslint-config-astro@1.10.0(6gyyvi7e5nbldxj7xpksdi46ny)': dependencies: - '@azat-io/eslint-config-typescript': 1.10.0(7gq4k5ct6xn6n7vy6x4q32gdde) - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - astro-eslint-parser: 1.0.2(typescript@5.5.4) + '@azat-io/eslint-config-typescript': 1.10.0(hpbq4o5a4ntdneqouqs2qz7w5m) + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + astro-eslint-parser: 1.0.3(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-astro: 1.2.3(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-astro: 1.2.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-jsx-a11y: 6.10.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-n: 17.10.2(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-perfectionist: 3.4.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) + eslint-plugin-perfectionist: 3.5.0(astro-eslint-parser@1.0.3(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.1(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) eslint-plugin-prefer-arrow: 1.2.3(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-prefer-let: 4.0.0 eslint-plugin-promise: 7.1.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-sonarjs: 2.0.2(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-sonarjs: 2.0.2(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-unicorn: 55.0.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) transitivePeerDependencies: - eslint-import-resolver-node - eslint-import-resolver-webpack @@ -6369,22 +6383,22 @@ snapshots: - eslint-plugin-node-import - supports-color - '@azat-io/eslint-config-typescript@1.10.0(7gq4k5ct6xn6n7vy6x4q32gdde)': + '@azat-io/eslint-config-typescript@1.10.0(hpbq4o5a4ntdneqouqs2qz7w5m)': dependencies: - '@azat-io/eslint-config': 1.10.0(l7livuqvwqjimtkj6axemszzwy) - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@azat-io/eslint-config': 1.10.0(xlxgzclco5qyxstaulypqfsaju) + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-n: 17.10.2(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-perfectionist: 3.4.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) + eslint-plugin-perfectionist: 3.5.0(astro-eslint-parser@1.0.3(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.1(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) eslint-plugin-prefer-arrow: 1.2.3(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-prefer-let: 4.0.0 eslint-plugin-promise: 7.1.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-sonarjs: 2.0.2(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-sonarjs: 2.0.2(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-unicorn: 55.0.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) transitivePeerDependencies: - eslint-import-resolver-node - eslint-import-resolver-webpack @@ -6392,28 +6406,28 @@ snapshots: - eslint-plugin-node-import - supports-color - '@azat-io/eslint-config@1.10.0(l7livuqvwqjimtkj6axemszzwy)': + '@azat-io/eslint-config@1.10.0(xlxgzclco5qyxstaulypqfsaju)': dependencies: eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-n: 17.10.2(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-node-import: 1.0.4(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-perfectionist: 3.4.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) + eslint-plugin-perfectionist: 3.5.0(astro-eslint-parser@1.0.3(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.1(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) eslint-plugin-prefer-arrow: 1.2.3(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-prefer-let: 4.0.0 eslint-plugin-promise: 7.1.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-sonarjs: 2.0.2(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-sonarjs: 2.0.2(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-unicorn: 55.0.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) globals: 15.9.0 - '@azat-io/stylelint-config@0.1.1(stylelint-config-recess-order@5.1.0(stylelint@16.9.0(typescript@5.5.4)))(stylelint-gamut@1.3.4(stylelint@16.9.0(typescript@5.5.4)))(stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.5.4)))(stylelint-plugin-logical-css@1.2.1(stylelint@16.9.0(typescript@5.5.4)))(stylelint@16.9.0(typescript@5.5.4))': + '@azat-io/stylelint-config@0.1.1(stylelint-config-recess-order@5.1.0(stylelint@16.9.0(typescript@5.6.2)))(stylelint-gamut@1.3.4(stylelint@16.9.0(typescript@5.6.2)))(stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.6.2)))(stylelint-plugin-logical-css@1.2.1(stylelint@16.9.0(typescript@5.6.2)))(stylelint@16.9.0(typescript@5.6.2))': dependencies: - stylelint: 16.9.0(typescript@5.5.4) - stylelint-config-recess-order: 5.1.0(stylelint@16.9.0(typescript@5.5.4)) - stylelint-gamut: 1.3.4(stylelint@16.9.0(typescript@5.5.4)) - stylelint-order: 6.0.4(stylelint@16.9.0(typescript@5.5.4)) - stylelint-plugin-logical-css: 1.2.1(stylelint@16.9.0(typescript@5.5.4)) + stylelint: 16.9.0(typescript@5.6.2) + stylelint-config-recess-order: 5.1.0(stylelint@16.9.0(typescript@5.6.2)) + stylelint-gamut: 1.3.4(stylelint@16.9.0(typescript@5.6.2)) + stylelint-order: 6.0.4(stylelint@16.9.0(typescript@5.6.2)) + stylelint-plugin-logical-css: 1.2.1(stylelint@16.9.0(typescript@5.6.2)) '@babel/code-frame@7.24.7': dependencies: @@ -7288,66 +7302,66 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@commitlint/cli@19.4.1(@types/node@22.5.4)(typescript@5.5.4)': + '@commitlint/cli@19.5.0(@types/node@22.5.4)(typescript@5.6.2)': dependencies: - '@commitlint/format': 19.3.0 - '@commitlint/lint': 19.4.1 - '@commitlint/load': 19.4.0(@types/node@22.5.4)(typescript@5.5.4) - '@commitlint/read': 19.4.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/format': 19.5.0 + '@commitlint/lint': 19.5.0 + '@commitlint/load': 19.5.0(@types/node@22.5.4)(typescript@5.6.2) + '@commitlint/read': 19.5.0 + '@commitlint/types': 19.5.0 + tinyexec: 0.3.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - typescript - '@commitlint/config-conventional@19.4.1': + '@commitlint/config-conventional@19.5.0': dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 conventional-changelog-conventionalcommits: 7.0.2 - '@commitlint/config-validator@19.0.3': + '@commitlint/config-validator@19.5.0': dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 ajv: 8.17.1 - '@commitlint/ensure@19.0.3': + '@commitlint/ensure@19.5.0': dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - '@commitlint/execute-rule@19.0.0': {} + '@commitlint/execute-rule@19.5.0': {} - '@commitlint/format@19.3.0': + '@commitlint/format@19.5.0': dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 chalk: 5.3.0 - '@commitlint/is-ignored@19.2.2': + '@commitlint/is-ignored@19.5.0': dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 semver: 7.6.3 - '@commitlint/lint@19.4.1': + '@commitlint/lint@19.5.0': dependencies: - '@commitlint/is-ignored': 19.2.2 - '@commitlint/parse': 19.0.3 - '@commitlint/rules': 19.4.1 - '@commitlint/types': 19.0.3 + '@commitlint/is-ignored': 19.5.0 + '@commitlint/parse': 19.5.0 + '@commitlint/rules': 19.5.0 + '@commitlint/types': 19.5.0 - '@commitlint/load@19.4.0(@types/node@22.5.4)(typescript@5.5.4)': + '@commitlint/load@19.5.0(@types/node@22.5.4)(typescript@5.6.2)': dependencies: - '@commitlint/config-validator': 19.0.3 - '@commitlint/execute-rule': 19.0.0 - '@commitlint/resolve-extends': 19.1.0 - '@commitlint/types': 19.0.3 + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.5.4) - cosmiconfig-typescript-loader: 5.0.0(@types/node@22.5.4)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.2) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.5.4)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -7355,46 +7369,45 @@ snapshots: - '@types/node' - typescript - '@commitlint/message@19.0.0': {} + '@commitlint/message@19.5.0': {} - '@commitlint/parse@19.0.3': + '@commitlint/parse@19.5.0': dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 - '@commitlint/read@19.4.0': + '@commitlint/read@19.5.0': dependencies: - '@commitlint/top-level': 19.0.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/top-level': 19.5.0 + '@commitlint/types': 19.5.0 git-raw-commits: 4.0.0 minimist: 1.2.8 + tinyexec: 0.3.0 - '@commitlint/resolve-extends@19.1.0': + '@commitlint/resolve-extends@19.5.0': dependencies: - '@commitlint/config-validator': 19.0.3 - '@commitlint/types': 19.0.3 + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 global-directory: 4.0.1 import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - '@commitlint/rules@19.4.1': + '@commitlint/rules@19.5.0': dependencies: - '@commitlint/ensure': 19.0.3 - '@commitlint/message': 19.0.0 - '@commitlint/to-lines': 19.0.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/ensure': 19.5.0 + '@commitlint/message': 19.5.0 + '@commitlint/to-lines': 19.5.0 + '@commitlint/types': 19.5.0 - '@commitlint/to-lines@19.0.0': {} + '@commitlint/to-lines@19.5.0': {} - '@commitlint/top-level@19.0.0': + '@commitlint/top-level@19.5.0': dependencies: find-up: 7.0.0 - '@commitlint/types@19.0.3': + '@commitlint/types@19.5.0': dependencies: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 @@ -7954,23 +7967,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@microsoft/api-extractor-model@7.29.4(@types/node@22.5.4)': + '@microsoft/api-extractor-model@7.29.6(@types/node@22.5.4)': dependencies: '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) + '@rushstack/node-core-library': 5.7.0(@types/node@22.5.4) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.47.4(@types/node@22.5.4)': + '@microsoft/api-extractor@7.47.7(@types/node@22.5.4)': dependencies: - '@microsoft/api-extractor-model': 7.29.4(@types/node@22.5.4) + '@microsoft/api-extractor-model': 7.29.6(@types/node@22.5.4) '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) + '@rushstack/node-core-library': 5.7.0(@types/node@22.5.4) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.13.3(@types/node@22.5.4) - '@rushstack/ts-command-line': 4.22.3(@types/node@22.5.4) + '@rushstack/terminal': 0.14.0(@types/node@22.5.4) + '@rushstack/ts-command-line': 4.22.6(@types/node@22.5.4) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -7993,10 +8006,10 @@ snapshots: dependencies: nanostores: 0.11.3 - '@nanostores/vue@0.10.0(nanostores@0.11.3)(vue@3.5.3(typescript@5.5.4))': + '@nanostores/vue@0.10.0(nanostores@0.11.3)(vue@3.5.5(typescript@5.6.2))': dependencies: nanostores: 0.11.3 - vue: 3.5.3(typescript@5.5.4) + vue: 3.5.5(typescript@5.6.2) '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: @@ -8023,12 +8036,12 @@ snapshots: '@pkgr/core@0.1.1': {} - '@playform/compress@0.1.1(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4)': + '@playform/compress@0.1.1(@types/node@22.5.4)(rollup@4.21.3)(typescript@5.6.2)': dependencies: '@playform/pipe': 0.1.0 '@types/csso': 5.0.4 '@types/html-minifier-terser': 7.0.2 - astro: 4.15.4(@types/node@22.5.4)(lightningcss@1.25.1)(rollup@4.21.2)(terser@5.31.3)(typescript@5.5.4) + astro: 4.15.5(@types/node@22.5.4)(lightningcss@1.25.1)(rollup@4.21.3)(terser@5.31.3)(typescript@5.6.2) csso: 5.0.5 deepmerge-ts: 7.1.0 html-minifier-terser: 7.2.0 @@ -8054,76 +8067,76 @@ snapshots: deepmerge-ts: 7.1.0 fast-glob: 3.3.2 - '@poppanator/sveltekit-svg@5.0.0-svelte5.3(rollup@4.21.2)(svelte@5.0.0-next.221)(svgo@3.3.2)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6))': + '@poppanator/sveltekit-svg@5.0.0-svelte5.3(rollup@4.21.3)(svelte@5.0.0-next.221)(svgo@3.3.2)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0))': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) svelte: 5.0.0-next.221 svgo: 3.3.2 - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) transitivePeerDependencies: - rollup '@resvg/resvg-wasm@2.4.0': {} - '@rollup/pluginutils@5.1.0(rollup@4.21.2)': + '@rollup/pluginutils@5.1.0(rollup@4.21.3)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 - '@rollup/rollup-android-arm-eabi@4.21.2': + '@rollup/rollup-android-arm-eabi@4.21.3': optional: true - '@rollup/rollup-android-arm64@4.21.2': + '@rollup/rollup-android-arm64@4.21.3': optional: true - '@rollup/rollup-darwin-arm64@4.21.2': + '@rollup/rollup-darwin-arm64@4.21.3': optional: true - '@rollup/rollup-darwin-x64@4.21.2': + '@rollup/rollup-darwin-x64@4.21.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + '@rollup/rollup-linux-arm-gnueabihf@4.21.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.21.2': + '@rollup/rollup-linux-arm-musleabihf@4.21.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.21.2': + '@rollup/rollup-linux-arm64-gnu@4.21.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.21.2': + '@rollup/rollup-linux-arm64-musl@4.21.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.21.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.21.2': + '@rollup/rollup-linux-riscv64-gnu@4.21.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.21.2': + '@rollup/rollup-linux-s390x-gnu@4.21.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.21.2': + '@rollup/rollup-linux-x64-gnu@4.21.3': optional: true - '@rollup/rollup-linux-x64-musl@4.21.2': + '@rollup/rollup-linux-x64-musl@4.21.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.21.2': + '@rollup/rollup-win32-arm64-msvc@4.21.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.21.2': + '@rollup/rollup-win32-ia32-msvc@4.21.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.21.2': + '@rollup/rollup-win32-x64-msvc@4.21.3': optional: true '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@5.5.1(@types/node@22.5.4)': + '@rushstack/node-core-library@5.7.0(@types/node@22.5.4)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -8141,16 +8154,16 @@ snapshots: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.13.3(@types/node@22.5.4)': + '@rushstack/terminal@0.14.0(@types/node@22.5.4)': dependencies: - '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) + '@rushstack/node-core-library': 5.7.0(@types/node@22.5.4) supports-color: 8.1.1 optionalDependencies: '@types/node': 22.5.4 - '@rushstack/ts-command-line@4.22.3(@types/node@22.5.4)': + '@rushstack/ts-command-line@4.22.6(@types/node@22.5.4)': dependencies: - '@rushstack/terminal': 0.13.3(@types/node@22.5.4) + '@rushstack/terminal': 0.14.0(@types/node@22.5.4) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -8159,16 +8172,35 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/core@1.16.2': + '@shikijs/core@1.17.6': dependencies: - '@shikijs/vscode-textmate': 9.2.0 + '@shikijs/engine-javascript': 1.17.6 + '@shikijs/engine-oniguruma': 1.17.6 + '@shikijs/types': 1.17.6 + '@shikijs/vscode-textmate': 9.2.2 '@types/hast': 3.0.4 + hast-util-to-html: 9.0.2 + + '@shikijs/engine-javascript@1.17.6': + dependencies: + '@shikijs/types': 1.17.6 + oniguruma-to-js: 0.4.3 + + '@shikijs/engine-oniguruma@1.17.6': + dependencies: + '@shikijs/types': 1.17.6 + '@shikijs/vscode-textmate': 9.2.2 - '@shikijs/transformers@1.16.2': + '@shikijs/transformers@1.17.6': dependencies: - shiki: 1.16.2 + shiki: 1.17.6 - '@shikijs/vscode-textmate@9.2.0': {} + '@shikijs/types@1.17.6': + dependencies: + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.2.2': {} '@shuding/opentype.js@1.4.0-beta.0': dependencies: @@ -8177,26 +8209,26 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.221)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)))(svelte@5.0.0-next.221)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.221)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)))(svelte@5.0.0-next.221)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.221)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.221)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) debug: 4.3.7 svelte: 5.0.0-next.221 - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.221)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6))': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.221)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.221)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)))(svelte@5.0.0-next.221)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.221)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)))(svelte@5.0.0-next.221)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) debug: 4.3.7 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.11 svelte: 5.0.0-next.221 svelte-hmr: 0.16.0(svelte@5.0.0-next.221) - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) - vitefu: 0.2.5(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) + vitefu: 0.2.5(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) transitivePeerDependencies: - supports-color @@ -8245,11 +8277,6 @@ snapshots: dependencies: '@types/ms': 0.7.34 - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.5 @@ -8262,8 +8289,6 @@ snapshots: '@types/html-minifier-terser@7.0.2': {} - '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} '@types/mdast@4.0.4': @@ -8300,59 +8325,59 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 7.16.1 - '@typescript-eslint/type-utils': 7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/type-utils': 7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/visitor-keys': 7.16.1 eslint: 9.10.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 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.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 eslint: 9.10.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 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/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.7 eslint: 9.10.0(jiti@1.21.6) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/rule-tester@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) ajv: 6.12.6 eslint: 9.10.0(jiti@1.21.6) json-stable-stringify-without-jsonify: 1.0.1 @@ -8372,31 +8397,31 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.4.0': + '@typescript-eslint/scope-manager@8.5.0': dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 - '@typescript-eslint/type-utils@7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) - '@typescript-eslint/utils': 7.16.1(eslint@9.10.0(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.10.0(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 eslint: 9.10.0(jiti@1.21.6) - 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/type-utils@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 - 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: - eslint - supports-color @@ -8405,9 +8430,9 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.4.0': {} + '@typescript-eslint/types@8.5.0': {} - '@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 @@ -8416,13 +8441,13 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.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/typescript-estree@7.18.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 @@ -8430,56 +8455,56 @@ snapshots: 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) + semver: 7.6.0 + 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.4.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.5.0(typescript@5.6.2)': dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.7 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.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@7.16.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 7.16.1 '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(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) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) transitivePeerDependencies: - supports-color @@ -8495,9 +8520,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.4.0': + '@typescript-eslint/visitor-keys@8.5.0': dependencies: - '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/types': 8.5.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -8508,7 +8533,7 @@ snapshots: satori: 0.10.9 yoga-wasm-web: 0.3.3 - '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6))': + '@vitest/coverage-v8@2.1.1(vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -8522,61 +8547,68 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + vitest: 2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) transitivePeerDependencies: - supports-color - '@vitest/expect@2.0.5': + '@vitest/expect@2.1.1': dependencies: - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.0.5': + '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0))': + dependencies: + '@vitest/spy': 2.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.11 + optionalDependencies: + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) + + '@vitest/pretty-format@2.1.1': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.0.5': + '@vitest/runner@2.1.1': dependencies: - '@vitest/utils': 2.0.5 + '@vitest/utils': 2.1.1 pathe: 1.1.2 - '@vitest/snapshot@2.0.5': + '@vitest/snapshot@2.1.1': dependencies: - '@vitest/pretty-format': 2.0.5 + '@vitest/pretty-format': 2.1.1 magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@2.0.5': + '@vitest/spy@2.1.1': dependencies: - tinyspy: 3.0.0 + tinyspy: 3.0.2 - '@vitest/utils@2.0.5': + '@vitest/utils@2.1.1': dependencies: - '@vitest/pretty-format': 2.0.5 - estree-walker: 3.0.3 + '@vitest/pretty-format': 2.1.1 loupe: 3.1.1 tinyrainbow: 1.2.0 - '@volar/kit@2.4.2(typescript@5.5.4)': + '@volar/kit@2.4.4(typescript@5.6.2)': dependencies: - '@volar/language-service': 2.4.2 - '@volar/typescript': 2.4.2 + '@volar/language-service': 2.4.4 + '@volar/typescript': 2.4.4 typesafe-path: 0.2.2 - typescript: 5.5.4 + typescript: 5.6.2 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - '@volar/language-core@2.4.2': + '@volar/language-core@2.4.4': dependencies: - '@volar/source-map': 2.4.2 + '@volar/source-map': 2.4.4 - '@volar/language-server@2.4.2': + '@volar/language-server@2.4.4': dependencies: - '@volar/language-core': 2.4.2 - '@volar/language-service': 2.4.2 - '@volar/typescript': 2.4.2 + '@volar/language-core': 2.4.4 + '@volar/language-service': 2.4.4 + '@volar/typescript': 2.4.4 path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 @@ -8584,18 +8616,18 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - '@volar/language-service@2.4.2': + '@volar/language-service@2.4.4': dependencies: - '@volar/language-core': 2.4.2 + '@volar/language-core': 2.4.4 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - '@volar/source-map@2.4.2': {} + '@volar/source-map@2.4.4': {} - '@volar/typescript@2.4.2': + '@volar/typescript@2.4.4': dependencies: - '@volar/language-core': 2.4.2 + '@volar/language-core': 2.4.4 path-browserify: 1.0.1 vscode-uri: 3.0.8 @@ -8609,77 +8641,77 @@ snapshots: '@vscode/l10n@0.0.18': {} - '@vue/compiler-core@3.5.3': + '@vue/compiler-core@3.5.5': dependencies: '@babel/parser': 7.25.6 - '@vue/shared': 3.5.3 + '@vue/shared': 3.5.5 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.3': + '@vue/compiler-dom@3.5.5': dependencies: - '@vue/compiler-core': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/compiler-core': 3.5.5 + '@vue/shared': 3.5.5 - '@vue/compiler-sfc@3.5.3': + '@vue/compiler-sfc@3.5.5': dependencies: '@babel/parser': 7.25.6 - '@vue/compiler-core': 3.5.3 - '@vue/compiler-dom': 3.5.3 - '@vue/compiler-ssr': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/compiler-core': 3.5.5 + '@vue/compiler-dom': 3.5.5 + '@vue/compiler-ssr': 3.5.5 + '@vue/shared': 3.5.5 estree-walker: 2.0.2 magic-string: 0.30.11 postcss: 8.4.45 - source-map-js: 1.2.0 + source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.3': + '@vue/compiler-ssr@3.5.5': dependencies: - '@vue/compiler-dom': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/compiler-dom': 3.5.5 + '@vue/shared': 3.5.5 '@vue/compiler-vue2@2.7.16': dependencies: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@2.0.29(typescript@5.5.4)': + '@vue/language-core@2.1.6(typescript@5.6.2)': dependencies: - '@volar/language-core': 2.4.2 - '@vue/compiler-dom': 3.5.3 + '@volar/language-core': 2.4.4 + '@vue/compiler-dom': 3.5.5 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.3 + '@vue/shared': 3.5.5 computeds: 0.0.1 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 - '@vue/reactivity@3.5.3': + '@vue/reactivity@3.5.5': dependencies: - '@vue/shared': 3.5.3 + '@vue/shared': 3.5.5 - '@vue/runtime-core@3.5.3': + '@vue/runtime-core@3.5.5': dependencies: - '@vue/reactivity': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/reactivity': 3.5.5 + '@vue/shared': 3.5.5 - '@vue/runtime-dom@3.5.3': + '@vue/runtime-dom@3.5.5': dependencies: - '@vue/reactivity': 3.5.3 - '@vue/runtime-core': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/reactivity': 3.5.5 + '@vue/runtime-core': 3.5.5 + '@vue/shared': 3.5.5 csstype: 3.1.3 - '@vue/server-renderer@3.5.3(vue@3.5.3(typescript@5.5.4))': + '@vue/server-renderer@3.5.5(vue@3.5.5(typescript@5.6.2))': dependencies: - '@vue/compiler-ssr': 3.5.3 - '@vue/shared': 3.5.3 - vue: 3.5.3(typescript@5.5.4) + '@vue/compiler-ssr': 3.5.5 + '@vue/shared': 3.5.5 + vue: 3.5.5(typescript@5.6.2) - '@vue/shared@3.5.3': {} + '@vue/shared@3.5.5': {} JSONStream@1.3.5: dependencies: @@ -8738,7 +8770,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@3.2.1: dependencies: @@ -8767,9 +8799,7 @@ snapshots: dependencies: deep-equal: 2.2.3 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 + aria-query@5.3.1: {} array-buffer-byte-length@1.0.1: dependencies: @@ -8852,12 +8882,12 @@ snapshots: astring@1.9.0: {} - astro-eslint-parser@1.0.2(typescript@5.5.4): + astro-eslint-parser@1.0.3(typescript@5.6.2): dependencies: '@astrojs/compiler': 2.10.3 - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) astrojs-compiler-sync: 1.0.0(@astrojs/compiler@2.10.3) debug: 4.3.7 entities: 4.5.0 @@ -8871,7 +8901,7 @@ snapshots: - supports-color - typescript - astro@4.15.4(@types/node@22.5.4)(lightningcss@1.25.1)(rollup@4.21.2)(terser@5.31.3)(typescript@5.5.4): + astro@4.15.5(@types/node@22.5.4)(lightningcss@1.25.1)(rollup@4.21.3)(terser@5.31.3)(typescript@5.6.2): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 @@ -8881,11 +8911,11 @@ snapshots: '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) '@babel/types': 7.25.6 '@oslojs/encoding': 0.4.1 - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 acorn: 8.12.1 - aria-query: 5.3.0 + aria-query: 5.3.1 axobject-query: 4.1.0 boxen: 7.1.1 ci-info: 4.0.0 @@ -8898,7 +8928,7 @@ snapshots: devalue: 5.0.0 diff: 5.2.0 dlv: 1.1.3 - dset: 3.1.3 + dset: 3.1.4 es-module-lexer: 1.5.4 esbuild: 0.21.5 estree-walker: 3.0.3 @@ -8919,26 +8949,25 @@ snapshots: ora: 8.1.0 p-limit: 6.1.0 p-queue: 8.0.1 - path-to-regexp: 6.2.2 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.1 semver: 7.6.3 - shiki: 1.16.2 + shiki: 1.17.6 string-width: 7.2.0 strip-ansi: 7.1.0 tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.5.4) + tsconfck: 3.1.3(typescript@5.6.2) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.25.1)(terser@5.31.3) - vitefu: 1.0.2(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.25.1)(terser@5.31.3)) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.25.1)(terser@5.31.3) + vitefu: 1.0.2(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.2(zod@3.23.8) - zod-to-ts: 1.2.0(typescript@5.5.4)(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-ts: 1.2.0(typescript@5.6.2)(zod@3.23.8) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -8954,7 +8983,7 @@ snapshots: - terser - typescript - astro@4.15.4(@types/node@22.5.4)(lightningcss@1.26.0)(rollup@4.21.2)(terser@5.31.6)(typescript@5.5.4): + astro@4.15.5(@types/node@22.5.4)(lightningcss@1.27.0)(rollup@4.21.3)(terser@5.32.0)(typescript@5.6.2): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 @@ -8964,11 +8993,11 @@ snapshots: '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) '@babel/types': 7.25.6 '@oslojs/encoding': 0.4.1 - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 acorn: 8.12.1 - aria-query: 5.3.0 + aria-query: 5.3.1 axobject-query: 4.1.0 boxen: 7.1.1 ci-info: 4.0.0 @@ -8981,7 +9010,7 @@ snapshots: devalue: 5.0.0 diff: 5.2.0 dlv: 1.1.3 - dset: 3.1.3 + dset: 3.1.4 es-module-lexer: 1.5.4 esbuild: 0.21.5 estree-walker: 3.0.3 @@ -9002,26 +9031,25 @@ snapshots: ora: 8.1.0 p-limit: 6.1.0 p-queue: 8.0.1 - path-to-regexp: 6.2.2 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.1 semver: 7.6.3 - shiki: 1.16.2 + shiki: 1.17.6 string-width: 7.2.0 strip-ansi: 7.1.0 tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.5.4) + tsconfck: 3.1.3(typescript@5.6.2) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) - vitefu: 1.0.2(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) + vitefu: 1.0.2(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.2(zod@3.23.8) - zod-to-ts: 1.2.0(typescript@5.5.4)(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-ts: 1.2.0(typescript@5.6.2)(zod@3.23.8) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -9120,8 +9148,8 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001658 - electron-to-chromium: 1.5.18 + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.22 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -9173,7 +9201,7 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001658: {} + caniuse-lite@1.0.30001660: {} ccount@2.0.1: {} @@ -9382,21 +9410,21 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@5.0.0(@types/node@22.5.4)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4): + cosmiconfig-typescript-loader@5.0.0(@types/node@22.5.4)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2): dependencies: '@types/node': 22.5.4 - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.2) jiti: 1.21.6 - typescript: 5.5.4 + typescript: 5.6.2 - cosmiconfig@9.0.0(typescript@5.5.4): + cosmiconfig@9.0.0(typescript@5.6.2): 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.2 cross-spawn@7.0.3: dependencies: @@ -9519,12 +9547,12 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-what@6.1.0: {} @@ -9692,11 +9720,11 @@ snapshots: dotenv@16.4.5: {} - dset@3.1.3: {} + dset@3.1.4: {} eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.18: {} + electron-to-chromium@1.5.22: {} emmet@2.4.7: dependencies: @@ -9879,51 +9907,51 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.1 eslint: 9.10.0(jiti@1.21.6) - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)) fast-glob: 3.3.2 - get-tsconfig: 4.8.0 - is-bun-module: 1.1.0 + get-tsconfig: 4.8.1 + is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.10.0(jiti@1.21.6)): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.10.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color - eslint-plugin-astro@1.2.3(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4): + eslint-plugin-astro@1.2.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@jridgewell/sourcemap-codec': 1.5.0 - '@typescript-eslint/types': 7.18.0 - astro-eslint-parser: 1.0.2(typescript@5.5.4) + '@typescript-eslint/types': 8.5.0 + astro-eslint-parser: 1.0.3(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) eslint-compat-utils: 0.5.1(eslint@9.10.0(jiti@1.21.6)) globals: 15.9.0 @@ -9946,7 +9974,7 @@ snapshots: eslint: 9.10.0(jiti@1.21.6) estraverse: 5.3.0 - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -9957,7 +9985,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.10.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.10.0(jiti@1.21.6)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.10.0(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -9968,7 +9996,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -10000,7 +10028,7 @@ snapshots: enhanced-resolve: 5.17.1 eslint: 9.10.0(jiti@1.21.6) eslint-plugin-es-x: 7.8.0(eslint@9.10.0(jiti@1.21.6)) - get-tsconfig: 4.8.0 + get-tsconfig: 4.8.1 globals: 15.9.0 ignore: 5.3.2 minimatch: 9.0.5 @@ -10010,17 +10038,17 @@ snapshots: dependencies: eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-perfectionist@3.4.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))): + eslint-plugin-perfectionist@3.5.0(astro-eslint-parser@1.0.3(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(svelte-eslint-parser@0.41.1(svelte@5.0.0-next.221))(svelte@5.0.0-next.221)(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))): dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) minimatch: 9.0.5 natural-compare-lite: 1.4.0 optionalDependencies: - astro-eslint-parser: 1.0.2(typescript@5.5.4) + astro-eslint-parser: 1.0.3(typescript@5.6.2) svelte: 5.0.0-next.221 - svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.221) + svelte-eslint-parser: 0.41.1(svelte@5.0.0-next.221) vue-eslint-parser: 9.4.3(eslint@9.10.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color @@ -10042,7 +10070,7 @@ snapshots: dependencies: eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-react@7.35.2(eslint@9.10.0(jiti@1.21.6)): + eslint-plugin-react@7.36.1(eslint@9.10.0(jiti@1.21.6)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -10064,7 +10092,7 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-sonarjs@2.0.2(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)): + eslint-plugin-sonarjs@2.0.2(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)): dependencies: '@babel/core': 7.24.3 '@babel/eslint-parser': 7.24.1(@babel/core@7.24.3)(eslint@9.10.0(jiti@1.21.6)) @@ -10073,14 +10101,14 @@ snapshots: '@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.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) builtin-modules: 3.3.0 bytes: 3.1.2 eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-jsx-a11y: 6.10.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-react: 7.35.2(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-react: 7.36.1(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-react-hooks: 4.6.0(eslint@9.10.0(jiti@1.21.6)) eslint-scope: 8.0.1 functional-red-black-tree: 1.0.1 @@ -10088,7 +10116,7 @@ snapshots: minimatch: 9.0.5 scslre: 0.3.0 semver: 7.6.0 - typescript: 5.5.4 + typescript: 5.6.2 vue-eslint-parser: 9.4.3(eslint@9.10.0(jiti@1.21.6)) transitivePeerDependencies: - '@typescript-eslint/parser' @@ -10116,13 +10144,13 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)): + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) - vitest: 2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + vitest: 2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript @@ -10348,7 +10376,7 @@ snapshots: figures@6.1.0: dependencies: - is-unicode-supported: 2.0.0 + is-unicode-supported: 2.1.0 file-entry-cache@8.0.0: dependencies: @@ -10469,7 +10497,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.8.0: + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -10638,7 +10666,7 @@ snapshots: estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 @@ -10672,12 +10700,12 @@ snapshots: devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.7 + style-to-object: 1.0.8 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -10774,7 +10802,7 @@ snapshots: inline-style-parser@0.1.1: {} - inline-style-parser@0.2.3: {} + inline-style-parser@0.2.4: {} internal-slot@1.0.7: dependencies: @@ -10826,7 +10854,7 @@ snapshots: dependencies: builtin-modules: 3.3.0 - is-bun-module@1.1.0: + is-bun-module@1.2.1: dependencies: semver: 7.6.3 @@ -10933,7 +10961,7 @@ snapshots: is-unicode-supported@1.3.0: {} - is-unicode-supported@2.0.0: {} + is-unicode-supported@2.1.0: {} is-weakmap@2.0.2: {} @@ -11079,58 +11107,58 @@ snapshots: lightningcss-darwin-arm64@1.25.1: optional: true - lightningcss-darwin-arm64@1.26.0: + lightningcss-darwin-arm64@1.27.0: optional: true lightningcss-darwin-x64@1.25.1: optional: true - lightningcss-darwin-x64@1.26.0: + lightningcss-darwin-x64@1.27.0: optional: true lightningcss-freebsd-x64@1.25.1: optional: true - lightningcss-freebsd-x64@1.26.0: + lightningcss-freebsd-x64@1.27.0: optional: true lightningcss-linux-arm-gnueabihf@1.25.1: optional: true - lightningcss-linux-arm-gnueabihf@1.26.0: + lightningcss-linux-arm-gnueabihf@1.27.0: optional: true lightningcss-linux-arm64-gnu@1.25.1: optional: true - lightningcss-linux-arm64-gnu@1.26.0: + lightningcss-linux-arm64-gnu@1.27.0: optional: true lightningcss-linux-arm64-musl@1.25.1: optional: true - lightningcss-linux-arm64-musl@1.26.0: + lightningcss-linux-arm64-musl@1.27.0: optional: true lightningcss-linux-x64-gnu@1.25.1: optional: true - lightningcss-linux-x64-gnu@1.26.0: + lightningcss-linux-x64-gnu@1.27.0: optional: true lightningcss-linux-x64-musl@1.25.1: optional: true - lightningcss-linux-x64-musl@1.26.0: + lightningcss-linux-x64-musl@1.27.0: optional: true - lightningcss-win32-arm64-msvc@1.26.0: + lightningcss-win32-arm64-msvc@1.27.0: optional: true lightningcss-win32-x64-msvc@1.25.1: optional: true - lightningcss-win32-x64-msvc@1.26.0: + lightningcss-win32-x64-msvc@1.27.0: optional: true lightningcss@1.25.1: @@ -11147,20 +11175,20 @@ snapshots: lightningcss-linux-x64-musl: 1.25.1 lightningcss-win32-x64-msvc: 1.25.1 - lightningcss@1.26.0: + lightningcss@1.27.0: dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.26.0 - lightningcss-darwin-x64: 1.26.0 - lightningcss-freebsd-x64: 1.26.0 - lightningcss-linux-arm-gnueabihf: 1.26.0 - lightningcss-linux-arm64-gnu: 1.26.0 - lightningcss-linux-arm64-musl: 1.26.0 - lightningcss-linux-x64-gnu: 1.26.0 - lightningcss-linux-x64-musl: 1.26.0 - lightningcss-win32-arm64-msvc: 1.26.0 - lightningcss-win32-x64-msvc: 1.26.0 + lightningcss-darwin-arm64: 1.27.0 + lightningcss-darwin-x64: 1.27.0 + lightningcss-freebsd-x64: 1.27.0 + lightningcss-linux-arm-gnueabihf: 1.27.0 + lightningcss-linux-arm64-gnu: 1.27.0 + lightningcss-linux-arm64-musl: 1.27.0 + lightningcss-linux-x64-gnu: 1.27.0 + lightningcss-linux-x64-musl: 1.27.0 + lightningcss-win32-arm64-msvc: 1.27.0 + lightningcss-win32-x64-msvc: 1.27.0 lilconfig@3.1.2: {} @@ -11258,7 +11286,7 @@ snapshots: dependencies: '@babel/parser': 7.25.6 '@babel/types': 7.25.6 - source-map-js: 1.2.0 + source-map-js: 1.2.1 make-dir@4.0.0: dependencies: @@ -11357,7 +11385,7 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.0: + mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -11388,7 +11416,7 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: mdast-util-from-markdown: 2.0.1 - mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 mdast-util-to-markdown: 2.1.0 @@ -11889,6 +11917,10 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.3.2 + open@9.1.0: dependencies: default-browser: 4.0.0 @@ -11911,7 +11943,7 @@ snapshots: cli-cursor: 5.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 - is-unicode-supported: 2.0.0 + is-unicode-supported: 2.1.0 log-symbols: 6.0.0 stdin-discarder: 0.2.2 string-width: 7.2.0 @@ -12031,8 +12063,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@6.2.2: {} - path-type@4.0.0: {} pathe@1.1.2: {} @@ -12103,7 +12133,7 @@ snapshots: dependencies: nanoid: 3.3.7 picocolors: 1.1.0 - source-map-js: 1.2.0 + source-map-js: 1.2.1 preferred-pm@4.0.0: dependencies: @@ -12190,7 +12220,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 @@ -12202,6 +12232,8 @@ snapshots: dependencies: '@babel/runtime': 7.25.6 + regex@4.3.2: {} + regexp-ast-analysis@0.7.1: dependencies: '@eslint-community/regexpp': 4.10.0 @@ -12220,10 +12252,10 @@ snapshots: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 + regenerate-unicode-properties: 10.2.0 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 + unicode-match-property-value-ecmascript: 2.2.0 regjsparser@0.10.0: dependencies: @@ -12384,26 +12416,26 @@ snapshots: reusify@1.0.4: {} - rollup@4.21.2: + rollup@4.21.3: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.2 - '@rollup/rollup-android-arm64': 4.21.2 - '@rollup/rollup-darwin-arm64': 4.21.2 - '@rollup/rollup-darwin-x64': 4.21.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 - '@rollup/rollup-linux-arm-musleabihf': 4.21.2 - '@rollup/rollup-linux-arm64-gnu': 4.21.2 - '@rollup/rollup-linux-arm64-musl': 4.21.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 - '@rollup/rollup-linux-riscv64-gnu': 4.21.2 - '@rollup/rollup-linux-s390x-gnu': 4.21.2 - '@rollup/rollup-linux-x64-gnu': 4.21.2 - '@rollup/rollup-linux-x64-musl': 4.21.2 - '@rollup/rollup-win32-arm64-msvc': 4.21.2 - '@rollup/rollup-win32-ia32-msvc': 4.21.2 - '@rollup/rollup-win32-x64-msvc': 4.21.2 + '@rollup/rollup-android-arm-eabi': 4.21.3 + '@rollup/rollup-android-arm64': 4.21.3 + '@rollup/rollup-darwin-arm64': 4.21.3 + '@rollup/rollup-darwin-x64': 4.21.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.3 + '@rollup/rollup-linux-arm-musleabihf': 4.21.3 + '@rollup/rollup-linux-arm64-gnu': 4.21.3 + '@rollup/rollup-linux-arm64-musl': 4.21.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.3 + '@rollup/rollup-linux-riscv64-gnu': 4.21.3 + '@rollup/rollup-linux-s390x-gnu': 4.21.3 + '@rollup/rollup-linux-x64-gnu': 4.21.3 + '@rollup/rollup-linux-x64-musl': 4.21.3 + '@rollup/rollup-win32-arm64-msvc': 4.21.3 + '@rollup/rollup-win32-ia32-msvc': 4.21.3 + '@rollup/rollup-win32-x64-msvc': 4.21.3 fsevents: 2.3.3 run-applescript@5.0.0: @@ -12554,19 +12586,22 @@ snapshots: shebang-regex@3.0.0: {} - shiki-magic-move@0.4.4(shiki@1.16.2)(svelte@5.0.0-next.221)(vue@3.5.3(typescript@5.5.4)): + shiki-magic-move@0.4.4(shiki@1.17.6)(svelte@5.0.0-next.221)(vue@3.5.5(typescript@5.6.2)): dependencies: diff-match-patch-es: 0.1.0 ohash: 1.1.3 optionalDependencies: - shiki: 1.16.2 + shiki: 1.17.6 svelte: 5.0.0-next.221 - vue: 3.5.3(typescript@5.5.4) + vue: 3.5.5(typescript@5.6.2) - shiki@1.16.2: + shiki@1.17.6: dependencies: - '@shikijs/core': 1.16.2 - '@shikijs/vscode-textmate': 9.2.0 + '@shikijs/core': 1.17.6 + '@shikijs/engine-javascript': 1.17.6 + '@shikijs/engine-oniguruma': 1.17.6 + '@shikijs/types': 1.17.6 + '@shikijs/vscode-textmate': 9.2.2 '@types/hast': 3.0.4 side-channel@1.0.6: @@ -12605,7 +12640,7 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - source-map-js@1.2.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: dependencies: @@ -12725,7 +12760,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 strip-bom-string@1.0.0: {} @@ -12747,31 +12782,31 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - style-to-object@1.0.7: + style-to-object@1.0.8: dependencies: - inline-style-parser: 0.2.3 + inline-style-parser: 0.2.4 - stylelint-config-recess-order@5.1.0(stylelint@16.9.0(typescript@5.5.4)): + stylelint-config-recess-order@5.1.0(stylelint@16.9.0(typescript@5.6.2)): dependencies: - stylelint: 16.9.0(typescript@5.5.4) - stylelint-order: 6.0.4(stylelint@16.9.0(typescript@5.5.4)) + stylelint: 16.9.0(typescript@5.6.2) + stylelint-order: 6.0.4(stylelint@16.9.0(typescript@5.6.2)) - stylelint-gamut@1.3.4(stylelint@16.9.0(typescript@5.5.4)): + stylelint-gamut@1.3.4(stylelint@16.9.0(typescript@5.6.2)): dependencies: colorjs.io: 0.4.5 - stylelint: 16.9.0(typescript@5.5.4) + stylelint: 16.9.0(typescript@5.6.2) - stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.5.4)): + stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.6.2)): dependencies: postcss: 8.4.45 postcss-sorting: 8.0.2(postcss@8.4.45) - stylelint: 16.9.0(typescript@5.5.4) + stylelint: 16.9.0(typescript@5.6.2) - stylelint-plugin-logical-css@1.2.1(stylelint@16.9.0(typescript@5.5.4)): + stylelint-plugin-logical-css@1.2.1(stylelint@16.9.0(typescript@5.6.2)): dependencies: - stylelint: 16.9.0(typescript@5.5.4) + stylelint: 16.9.0(typescript@5.6.2) - stylelint@16.9.0(typescript@5.5.4): + stylelint@16.9.0(typescript@5.6.2): dependencies: '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) '@csstools/css-tokenizer': 3.0.1 @@ -12780,7 +12815,7 @@ snapshots: '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.2) css-functions-list: 3.2.2 css-tree: 2.3.1 debug: 4.3.7 @@ -12839,7 +12874,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.0.1(svelte@5.0.0-next.221)(typescript@5.5.4): + svelte-check@4.0.2(svelte@5.0.0-next.221)(typescript@5.6.2): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -12847,11 +12882,11 @@ snapshots: picocolors: 1.1.0 sade: 1.8.1 svelte: 5.0.0-next.221 - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.41.0(svelte@5.0.0-next.221): + svelte-eslint-parser@0.41.1(svelte@5.0.0-next.221): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -12865,12 +12900,12 @@ snapshots: dependencies: svelte: 5.0.0-next.221 - svelte2tsx@0.7.18(svelte@5.0.0-next.221)(typescript@5.5.4): + svelte2tsx@0.7.19(svelte@5.0.0-next.221)(typescript@5.6.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 svelte: 5.0.0-next.221 - typescript: 5.5.4 + typescript: 5.6.2 svelte@5.0.0-next.221: dependencies: @@ -12879,7 +12914,7 @@ snapshots: '@types/estree': 1.0.5 acorn: 8.12.1 acorn-typescript: 1.4.13(acorn@8.12.1) - aria-query: 5.3.0 + aria-query: 5.3.1 axobject-query: 4.1.0 esm-env: 1.0.0 esrap: 1.2.2 @@ -12941,7 +12976,7 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - terser@5.31.6: + terser@5.32.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 @@ -12971,7 +13006,7 @@ snapshots: tinyrainbow@1.2.0: {} - tinyspy@3.0.0: {} + tinyspy@3.0.2: {} titleize@3.0.0: {} @@ -12985,15 +13020,15 @@ snapshots: trough@2.2.0: {} - 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-dedent@2.2.0: {} - tsconfck@3.1.3(typescript@5.5.4): + tsconfck@3.1.3(typescript@5.6.2): optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 tsconfig-paths@3.15.0: dependencies: @@ -13054,7 +13089,7 @@ snapshots: typescript@5.4.2: {} - typescript@5.5.4: {} + typescript@5.6.2: {} ufo@1.5.4: {} @@ -13069,14 +13104,14 @@ snapshots: undici-types@6.19.8: {} - unicode-canonical-property-names-ecmascript@2.0.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-canonical-property-names-ecmascript: 2.0.1 unicode-property-aliases-ecmascript: 2.1.0 - unicode-match-property-value-ecmascript@2.1.0: {} + unicode-match-property-value-ecmascript@2.2.0: {} unicode-property-aliases-ecmascript@2.1.0: {} @@ -13199,13 +13234,12 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6): + vite-node@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - tinyrainbow: 1.2.0 - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -13217,21 +13251,20 @@ snapshots: - supports-color - terser - vite-plugin-dts@4.1.1(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)): + vite-plugin-dts@4.2.1(@types/node@22.5.4)(rollup@4.21.3)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)): dependencies: - '@microsoft/api-extractor': 7.47.4(@types/node@22.5.4) - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) - '@volar/typescript': 2.4.2 - '@vue/language-core': 2.0.29(typescript@5.5.4) + '@microsoft/api-extractor': 7.47.7(@types/node@22.5.4) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) + '@volar/typescript': 2.4.4 + '@vue/language-core': 2.1.6(typescript@5.6.2) compare-versions: 6.1.1 debug: 4.3.7 kolorist: 1.8.0 local-pkg: 0.5.0 magic-string: 0.30.11 - typescript: 5.5.4 - vue-tsc: 2.0.29(typescript@5.5.4) + typescript: 5.6.2 optionalDependencies: - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) transitivePeerDependencies: - '@types/node' - rollup @@ -13240,68 +13273,65 @@ snapshots: vite-plugin-lightningcss@0.0.5: dependencies: browserslist: 4.23.3 - lightningcss: 1.26.0 + lightningcss: 1.27.0 - vite@5.4.3(@types/node@22.5.4)(lightningcss@1.25.1)(terser@5.31.3): + vite@5.4.5(@types/node@22.5.4)(lightningcss@1.25.1)(terser@5.31.3): dependencies: esbuild: 0.21.5 postcss: 8.4.45 - rollup: 4.21.2 + rollup: 4.21.3 optionalDependencies: '@types/node': 22.5.4 fsevents: 2.3.3 lightningcss: 1.25.1 terser: 5.31.3 - vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6): + vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.45 - rollup: 4.21.2 + rollup: 4.21.3 optionalDependencies: '@types/node': 22.5.4 fsevents: 2.3.3 - lightningcss: 1.26.0 - terser: 5.31.6 + lightningcss: 1.27.0 + terser: 5.32.0 - vitefu@0.2.5(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)): + vitefu@0.2.5(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)): optionalDependencies: - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) - vitefu@1.0.2(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.25.1)(terser@5.31.3)): + vitefu@1.0.2(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)): optionalDependencies: - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.25.1)(terser@5.31.3) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) - vitefu@1.0.2(vite@5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6)): - optionalDependencies: - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) - - vitest@2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6): + vitest@2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0): dependencies: - '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.5 - '@vitest/pretty-format': 2.0.5 - '@vitest/runner': 2.0.5 - '@vitest/snapshot': 2.0.5 - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 + '@vitest/expect': 2.1.1 + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0)) + '@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 chai: 5.1.1 debug: 4.3.7 - execa: 8.0.1 magic-string: 0.30.11 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.9.0 + tinyexec: 0.3.0 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.3(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) - vite-node: 2.0.5(@types/node@22.5.4)(lightningcss@1.26.0)(terser@5.31.6) + vite: 5.4.5(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) + vite-node: 2.1.1(@types/node@22.5.4)(lightningcss@1.27.0)(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.5.4 transitivePeerDependencies: - less - lightningcss + - msw - sass - sass-embedded - stylus @@ -13309,45 +13339,45 @@ snapshots: - supports-color - terser - volar-service-css@0.0.61(@volar/language-service@2.4.2): + volar-service-css@0.0.61(@volar/language-service@2.4.4): dependencies: vscode-css-languageservice: 6.3.1 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.4.2 + '@volar/language-service': 2.4.4 - volar-service-emmet@0.0.61(@volar/language-service@2.4.2): + volar-service-emmet@0.0.61(@volar/language-service@2.4.4): dependencies: '@emmetio/css-parser': 0.4.0 '@emmetio/html-matcher': 1.3.0 '@vscode/emmet-helper': 2.9.3 vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.4.2 + '@volar/language-service': 2.4.4 - volar-service-html@0.0.61(@volar/language-service@2.4.2): + volar-service-html@0.0.61(@volar/language-service@2.4.4): dependencies: vscode-html-languageservice: 5.3.1 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.4.2 + '@volar/language-service': 2.4.4 - volar-service-prettier@0.0.61(@volar/language-service@2.4.2)(prettier@3.3.3): + volar-service-prettier@0.0.61(@volar/language-service@2.4.4)(prettier@3.3.3): dependencies: vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.4.2 + '@volar/language-service': 2.4.4 prettier: 3.3.3 - volar-service-typescript-twoslash-queries@0.0.61(@volar/language-service@2.4.2): + volar-service-typescript-twoslash-queries@0.0.61(@volar/language-service@2.4.4): dependencies: vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.4.2 + '@volar/language-service': 2.4.4 - volar-service-typescript@0.0.61(@volar/language-service@2.4.2): + volar-service-typescript@0.0.61(@volar/language-service@2.4.4): dependencies: path-browserify: 1.0.1 semver: 7.6.3 @@ -13356,14 +13386,14 @@ snapshots: vscode-nls: 5.2.0 vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.4.2 + '@volar/language-service': 2.4.4 - volar-service-yaml@0.0.61(@volar/language-service@2.4.2): + volar-service-yaml@0.0.61(@volar/language-service@2.4.4): dependencies: vscode-uri: 3.0.8 yaml-language-server: 1.15.0 optionalDependencies: - '@volar/language-service': 2.4.2 + '@volar/language-service': 2.4.4 vscode-css-languageservice@6.3.1: dependencies: @@ -13434,22 +13464,15 @@ snapshots: transitivePeerDependencies: - supports-color - vue-tsc@2.0.29(typescript@5.5.4): - dependencies: - '@volar/typescript': 2.4.2 - '@vue/language-core': 2.0.29(typescript@5.5.4) - semver: 7.6.3 - typescript: 5.5.4 - - vue@3.5.3(typescript@5.5.4): + vue@3.5.5(typescript@5.6.2): dependencies: - '@vue/compiler-dom': 3.5.3 - '@vue/compiler-sfc': 3.5.3 - '@vue/runtime-dom': 3.5.3 - '@vue/server-renderer': 3.5.3(vue@3.5.3(typescript@5.5.4)) - '@vue/shared': 3.5.3 + '@vue/compiler-dom': 3.5.5 + '@vue/compiler-sfc': 3.5.5 + '@vue/runtime-dom': 3.5.5 + '@vue/server-renderer': 3.5.5(vue@3.5.5(typescript@5.6.2)) + '@vue/shared': 3.5.5 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 web-namespaces@2.0.1: {} @@ -13584,13 +13607,13 @@ snapshots: zimmerframe@1.1.2: {} - zod-to-json-schema@3.23.2(zod@3.23.8): + zod-to-json-schema@3.23.3(zod@3.23.8): dependencies: zod: 3.23.8 - zod-to-ts@1.2.0(typescript@5.5.4)(zod@3.23.8): + zod-to-ts@1.2.0(typescript@5.6.2)(zod@3.23.8): dependencies: - typescript: 5.5.4 + typescript: 5.6.2 zod: 3.23.8 zod@3.23.8: {} diff --git a/rules/sort-astro-attributes.ts b/rules/sort-astro-attributes.ts index 0629a6bf6..850b60bcc 100644 --- a/rules/sort-astro-attributes.ts +++ b/rules/sort-astro-attributes.ts @@ -26,7 +26,9 @@ type Group = | 'unknown' | T[number] -type MESSAGE_ID = 'unexpectedAstroAttributesOrder' +type MESSAGE_ID = + | 'unexpectedAstroAttributesGroupOrder' + | 'unexpectedAstroAttributesOrder' type Options = [ Partial<{ @@ -105,6 +107,8 @@ export default createEslintRule, MESSAGE_ID>({ }, ], messages: { + unexpectedAstroAttributesGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedAstroAttributesOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -201,10 +205,15 @@ export default createEslintRule, MESSAGE_ID>({ isPositive(compare(left, right, options))) ) { context.report({ - messageId: 'unexpectedAstroAttributesOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedAstroAttributesGroupOrder' + : 'unexpectedAstroAttributesOrder', data: { left: left.name, right: right.name, + leftGroup: left.group, + rightGroup: right.group, }, node: right.node, fix: fixer => { diff --git a/rules/sort-classes.ts b/rules/sort-classes.ts index 132d9fe8f..4c02740f7 100644 --- a/rules/sort-classes.ts +++ b/rules/sort-classes.ts @@ -20,8 +20,8 @@ import { customGroupSortJsonSchema, } from './sort-classes.types' import { sortNodesByDependencies } from '../utils/sort-nodes-by-dependencies' -import { isPartitionComment } from '../utils/is-partition-comment' -import { getCommentBefore } from '../utils/get-comment-before' +import { hasPartitionComment } from '../utils/is-partition-comment' +import { getCommentsBefore } from '../utils/get-comments-before' import { createEslintRule } from '../utils/create-eslint-rule' import { getGroupNumber } from '../utils/get-group-number' import { getSourceCode } from '../utils/get-source-code' @@ -365,12 +365,11 @@ export default createEslintRule({ let formattedNodes: SortingNodeWithDependencies[][] = node.body.reduce( (accumulator: SortingNodeWithDependencies[][], member) => { - let comment = getCommentBefore(member, sourceCode) + let comments = getCommentsBefore(member, sourceCode) if ( options.partitionByComment && - comment && - isPartitionComment(options.partitionByComment, comment.value) + hasPartitionComment(options.partitionByComment, comments) ) { accumulator.push([]) } diff --git a/rules/sort-enums.ts b/rules/sort-enums.ts index cd20c7e10..5580301e8 100644 --- a/rules/sort-enums.ts +++ b/rules/sort-enums.ts @@ -4,9 +4,9 @@ import type { SortingNodeWithDependencies } from '../utils/sort-nodes-by-depende import type { CompareOptions } from '../utils/compare' import { sortNodesByDependencies } from '../utils/sort-nodes-by-dependencies' -import { isPartitionComment } from '../utils/is-partition-comment' +import { hasPartitionComment } from '../utils/is-partition-comment' +import { getCommentsBefore } from '../utils/get-comments-before' import { createEslintRule } from '../utils/create-eslint-rule' -import { getCommentBefore } from '../utils/get-comment-before' import { getSourceCode } from '../utils/get-source-code' import { toSingleLine } from '../utils/to-single-line' import { rangeToDiff } from '../utils/range-to-diff' @@ -164,6 +164,10 @@ export default createEslintRule({ if ('right' in nodeValue) { checkNode(nodeValue.right) } + + if ('expressions' in nodeValue) { + nodeValue.expressions.forEach(checkNode) + } } checkNode(expression) @@ -172,12 +176,11 @@ export default createEslintRule({ let formattedMembers: SortingNodeWithDependencies[][] = members.reduce( (accumulator: SortingNodeWithDependencies[][], member) => { - let comment = getCommentBefore(member, sourceCode) + let comments = getCommentsBefore(member, sourceCode) if ( partitionComment && - comment && - isPartitionComment(partitionComment, comment.value) + hasPartitionComment(partitionComment, comments) ) { accumulator.push([]) } diff --git a/rules/sort-imports.ts b/rules/sort-imports.ts index 6a01b539b..350760ff2 100644 --- a/rules/sort-imports.ts +++ b/rules/sort-imports.ts @@ -7,7 +7,7 @@ import { minimatch } from 'minimatch' import type { SortingNode } from '../typings' import { validateGroupsConfiguration } from '../utils/validate-groups-configuration' -import { getCommentBefore } from '../utils/get-comment-before' +import { getCommentsBefore } from '../utils/get-comments-before' import { createEslintRule } from '../utils/create-eslint-rule' import { getLinesBetween } from '../utils/get-lines-between' import { getGroupNumber } from '../utils/get-group-number' @@ -24,6 +24,7 @@ import { compare } from '../utils/compare' type MESSAGE_ID = | 'missedSpacingBetweenImports' + | 'unexpectedImportsGroupOrder' | 'extraSpacingBetweenImports' | 'unexpectedImportsOrder' @@ -190,6 +191,8 @@ export default createEslintRule, MESSAGE_ID>({ }, ], messages: { + unexpectedImportsGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedImportsOrder: 'Expected "{{right}}" to come before "{{left}}".', missedSpacingBetweenImports: 'Missed spacing between "{{left}}" and "{{right}}" imports.', @@ -508,13 +511,10 @@ export default createEslintRule, MESSAGE_ID>({ left: SortingNode, right: SortingNode, ): boolean => - !!sourceCode.getTokensBetween( - left.node, - getCommentBefore(right.node, sourceCode) || right.node, - { - includeComments: true, - }, - ).length + getCommentsBefore(right.node, sourceCode).length > 0 || + !!sourceCode.getTokensBetween(left.node, right.node, { + includeComments: false, + }).length let fix = ( fixer: TSESLint.RuleFixer, @@ -665,10 +665,15 @@ export default createEslintRule, MESSAGE_ID>({ isPositive(compare(left, right, options)))) ) { context.report({ - messageId: 'unexpectedImportsOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedImportsGroupOrder' + : 'unexpectedImportsOrder', data: { left: left.name, + leftGroup: left.group, right: right.name, + rightGroup: right.group, }, node: right.node, fix: fixer => fix(fixer, nodeList), diff --git a/rules/sort-interfaces.ts b/rules/sort-interfaces.ts index 3b91d34a2..d4d57d180 100644 --- a/rules/sort-interfaces.ts +++ b/rules/sort-interfaces.ts @@ -19,7 +19,9 @@ import { complete } from '../utils/complete' import { pairwise } from '../utils/pairwise' import { compare } from '../utils/compare' -type MESSAGE_ID = 'unexpectedInterfacePropertiesOrder' +type MESSAGE_ID = + | 'unexpectedInterfacePropertiesGroupOrder' + | 'unexpectedInterfacePropertiesOrder' type Group = 'multiline' | 'unknown' | T[number] @@ -121,6 +123,8 @@ export default createEslintRule, MESSAGE_ID>({ }, ], messages: { + unexpectedInterfacePropertiesGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedInterfacePropertiesOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -310,11 +314,18 @@ export default createEslintRule, MESSAGE_ID>({ for (let nodes of formattedMembers) { pairwise(nodes, (left, right, iteration) => { if (checkOrder(nodes, left, right, iteration)) { + let leftNum = getGroupNumber(options.groups, left) + let rightNum = getGroupNumber(options.groups, right) context.report({ - messageId: 'unexpectedInterfacePropertiesOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedInterfacePropertiesGroupOrder' + : 'unexpectedInterfacePropertiesOrder', data: { left: toSingleLine(left.name), + leftGroup: left.group, right: toSingleLine(right.name), + rightGroup: right.group, }, node: right.node, fix: fixer => { diff --git a/rules/sort-intersection-types.ts b/rules/sort-intersection-types.ts index 12f4d8d62..5653eb9f3 100644 --- a/rules/sort-intersection-types.ts +++ b/rules/sort-intersection-types.ts @@ -15,7 +15,9 @@ import { complete } from '../utils/complete' import { pairwise } from '../utils/pairwise' import { compare } from '../utils/compare' -type MESSAGE_ID = 'unexpectedIntersectionTypesOrder' +type MESSAGE_ID = + | 'unexpectedIntersectionTypesGroupOrder' + | 'unexpectedIntersectionTypesOrder' type Group = | 'intersection' @@ -91,6 +93,8 @@ export default createEslintRule({ }, ], messages: { + unexpectedIntersectionTypesGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedIntersectionTypesOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -215,10 +219,15 @@ export default createEslintRule({ (leftNum === rightNum && isPositive(compare(left, right, options))) ) { context.report({ - messageId: 'unexpectedIntersectionTypesOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedIntersectionTypesGroupOrder' + : 'unexpectedIntersectionTypesOrder', data: { left: toSingleLine(left.name), + leftGroup: left.group, right: toSingleLine(right.name), + rightGroup: right.group, }, node: right.node, fix: fixer => { diff --git a/rules/sort-jsx-props.ts b/rules/sort-jsx-props.ts index aaca0a138..874a7430a 100644 --- a/rules/sort-jsx-props.ts +++ b/rules/sort-jsx-props.ts @@ -18,7 +18,7 @@ import { pairwise } from '../utils/pairwise' import { complete } from '../utils/complete' import { compare } from '../utils/compare' -type MESSAGE_ID = 'unexpectedJSXPropsOrder' +type MESSAGE_ID = 'unexpectedJSXPropsGroupOrder' | 'unexpectedJSXPropsOrder' type Group = | 'multiline' @@ -112,6 +112,8 @@ export default createEslintRule, MESSAGE_ID>({ }, ], messages: { + unexpectedJSXPropsGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedJSXPropsOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -211,10 +213,15 @@ export default createEslintRule, MESSAGE_ID>({ isPositive(compare(left, right, options))) ) { context.report({ - messageId: 'unexpectedJSXPropsOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedJSXPropsGroupOrder' + : 'unexpectedJSXPropsOrder', data: { left: left.name, + leftGroup: left.group, right: right.name, + rightGroup: right.group, }, node: right.node, fix: fixer => { diff --git a/rules/sort-object-types.ts b/rules/sort-object-types.ts index 7158ffb5e..4fdcd20de 100644 --- a/rules/sort-object-types.ts +++ b/rules/sort-object-types.ts @@ -18,7 +18,9 @@ import { complete } from '../utils/complete' import { pairwise } from '../utils/pairwise' import { compare } from '../utils/compare' -type MESSAGE_ID = 'unexpectedObjectTypesOrder' +type MESSAGE_ID = + | 'unexpectedObjectTypesGroupOrder' + | 'unexpectedObjectTypesOrder' type Group = 'multiline' | 'unknown' | T[number] @@ -111,6 +113,8 @@ export default createEslintRule, MESSAGE_ID>({ }, ], messages: { + unexpectedObjectTypesGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedObjectTypesOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -277,10 +281,15 @@ export default createEslintRule, MESSAGE_ID>({ if (compareValue) { context.report({ - messageId: 'unexpectedObjectTypesOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedObjectTypesGroupOrder' + : 'unexpectedObjectTypesOrder', data: { left: toSingleLine(left.name), + leftGroup: left.group, right: toSingleLine(right.name), + rightGroup: right.group, }, node: right.node, fix: fixer => { diff --git a/rules/sort-objects.ts b/rules/sort-objects.ts index 268be2b06..dad083560 100644 --- a/rules/sort-objects.ts +++ b/rules/sort-objects.ts @@ -7,8 +7,8 @@ import type { SortingNodeWithDependencies } from '../utils/sort-nodes-by-depende import { validateGroupsConfiguration } from '../utils/validate-groups-configuration' import { sortNodesByDependencies } from '../utils/sort-nodes-by-dependencies' -import { isPartitionComment } from '../utils/is-partition-comment' -import { getCommentBefore } from '../utils/get-comment-before' +import { hasPartitionComment } from '../utils/is-partition-comment' +import { getCommentsBefore } from '../utils/get-comments-before' import { createEslintRule } from '../utils/create-eslint-rule' import { getLinesBetween } from '../utils/get-lines-between' import { getGroupNumber } from '../utils/get-group-number' @@ -23,12 +23,13 @@ import { sortNodes } from '../utils/sort-nodes' import { complete } from '../utils/complete' import { pairwise } from '../utils/pairwise' -type MESSAGE_ID = 'unexpectedObjectsOrder' +type MESSAGE_ID = 'unexpectedObjectsGroupOrder' | 'unexpectedObjectsOrder' export enum Position { 'exception' = 'exception', 'ignore' = 'ignore', } + type Group = 'unknown' | string type SortingNodeWithPosition = SortingNodeWithDependencies & { position: Position @@ -155,6 +156,8 @@ export default createEslintRule({ }, ], messages: { + unexpectedObjectsGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedObjectsOrder: 'Expected "{{right}}" to come before "{{left}}".', }, }, @@ -263,6 +266,92 @@ export default createEslintRule({ } let sourceCode = getSourceCode(context) + + let extractDependencies = ( + init: TSESTree.AssignmentPattern, + ): string[] => { + let dependencies: string[] = [] + + let checkNode = (nodeValue: TSESTree.Node) => { + /** + * No need to check the body of functions and arrow functions + */ + if ( + nodeValue.type === 'ArrowFunctionExpression' || + nodeValue.type === 'FunctionExpression' + ) { + return + } + + if (nodeValue.type === 'Identifier') { + dependencies.push(nodeValue.name) + } + + if (nodeValue.type === 'Property') { + traverseNode(nodeValue.key) + traverseNode(nodeValue.value) + } + + if (nodeValue.type === 'ConditionalExpression') { + traverseNode(nodeValue.test) + traverseNode(nodeValue.consequent) + traverseNode(nodeValue.alternate) + } + + if ( + 'expression' in nodeValue && + typeof nodeValue.expression !== 'boolean' + ) { + traverseNode(nodeValue.expression) + } + + if ('object' in nodeValue) { + traverseNode(nodeValue.object) + } + + if ('callee' in nodeValue) { + traverseNode(nodeValue.callee) + } + + if ('left' in nodeValue) { + traverseNode(nodeValue.left) + } + + if ('right' in nodeValue) { + traverseNode(nodeValue.right as TSESTree.Node) + } + + if ('elements' in nodeValue) { + nodeValue.elements + .filter(currentNode => currentNode !== null) + .forEach(traverseNode) + } + + if ('argument' in nodeValue && nodeValue.argument) { + traverseNode(nodeValue.argument) + } + + if ('arguments' in nodeValue) { + nodeValue.arguments.forEach(traverseNode) + } + + if ('properties' in nodeValue) { + nodeValue.properties.forEach(traverseNode) + } + + if ('expressions' in nodeValue) { + nodeValue.expressions.forEach(traverseNode) + } + } + + let traverseNode = (nodeValue: TSESTree.Node) => { + checkNode(nodeValue) + } + + traverseNode(init) + return dependencies + } + let formatProperties = ( props: ( | TSESTree.ObjectLiteralElement @@ -280,13 +369,12 @@ export default createEslintRule({ return accumulator } - let comment = getCommentBefore(prop, sourceCode) + let comments = getCommentsBefore(prop, sourceCode) let lastProp = accumulator.at(-1)?.at(-1) if ( options.partitionByComment && - comment && - isPartitionComment(options.partitionByComment, comment.value) + hasPartitionComment(options.partitionByComment, comments) ) { accumulator.push([]) } @@ -320,68 +408,7 @@ export default createEslintRule({ } if (prop.value.type === 'AssignmentPattern') { - let addDependencies = (value: TSESTree.AssignmentPattern) => { - if (value.right.type === 'Identifier') { - dependencies.push(value.right.name) - } - - let handleComplexExpression = ( - expression: - | TSESTree.ArrowFunctionExpression - | TSESTree.ConditionalExpression - | TSESTree.LogicalExpression - | TSESTree.BinaryExpression - | TSESTree.CallExpression, - ) => { - let nodes = [] - - switch (expression.type) { - case 'ArrowFunctionExpression': - nodes.push(expression.body) - break - - case 'ConditionalExpression': - nodes.push(expression.consequent, expression.alternate) - break - - case 'LogicalExpression': - case 'BinaryExpression': - nodes.push(expression.left, expression.right) - break - - case 'CallExpression': - nodes.push(...expression.arguments) - break - } - - nodes.forEach(nestedNode => { - if (nestedNode.type === 'Identifier') { - dependencies.push(nestedNode.name) - } - - if ( - nestedNode.type === 'BinaryExpression' || - nestedNode.type === 'ConditionalExpression' - ) { - handleComplexExpression(nestedNode) - } - }) - } - - switch (value.right.type) { - case 'ArrowFunctionExpression': - case 'ConditionalExpression': - case 'LogicalExpression': - case 'BinaryExpression': - case 'CallExpression': - handleComplexExpression(value.right) - break - - default: - } - } - - addDependencies(prop.value) + dependencies = extractDependencies(prop.value) } setCustomGroups(options.customGroups, name) @@ -435,12 +462,18 @@ export default createEslintRule({ makeFixes(fixer, nodes, sortedNodes, sourceCode, { partitionComment: options.partitionByComment, }) - + let leftNum = getGroupNumber(options.groups, left) + let rightNum = getGroupNumber(options.groups, right) context.report({ - messageId: 'unexpectedObjectsOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedObjectsGroupOrder' + : 'unexpectedObjectsOrder', data: { left: toSingleLine(left.name), + leftGroup: left.group, right: toSingleLine(right.name), + rightGroup: right.group, }, node: right.node, fix, diff --git a/rules/sort-svelte-attributes.ts b/rules/sort-svelte-attributes.ts index 9ab64a182..ce15d517c 100644 --- a/rules/sort-svelte-attributes.ts +++ b/rules/sort-svelte-attributes.ts @@ -19,7 +19,9 @@ import { complete } from '../utils/complete' import { pairwise } from '../utils/pairwise' import { compare } from '../utils/compare' -type MESSAGE_ID = 'unexpectedSvelteAttributesOrder' +type MESSAGE_ID = + | 'unexpectedSvelteAttributesGroupOrder' + | 'unexpectedSvelteAttributesOrder' type Group = | 'svelte-shorthand' @@ -105,6 +107,8 @@ export default createEslintRule, MESSAGE_ID>({ }, ], messages: { + unexpectedSvelteAttributesGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedSvelteAttributesOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -208,10 +212,15 @@ export default createEslintRule, MESSAGE_ID>({ isPositive(compare(left, right, options))) ) { context.report({ - messageId: 'unexpectedSvelteAttributesOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedSvelteAttributesGroupOrder' + : 'unexpectedSvelteAttributesOrder', data: { left: left.name, + leftGroup: left.group, right: right.name, + rightGroup: right.group, }, node: right.node, fix: fixer => { diff --git a/rules/sort-union-types.ts b/rules/sort-union-types.ts index a58fa3370..befd28981 100644 --- a/rules/sort-union-types.ts +++ b/rules/sort-union-types.ts @@ -15,7 +15,7 @@ import { complete } from '../utils/complete' import { pairwise } from '../utils/pairwise' import { compare } from '../utils/compare' -type MESSAGE_ID = 'unexpectedUnionTypesOrder' +type MESSAGE_ID = 'unexpectedUnionTypesGroupOrder' | 'unexpectedUnionTypesOrder' type Group = | 'intersection' @@ -91,6 +91,8 @@ export default createEslintRule({ }, ], messages: { + unexpectedUnionTypesGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedUnionTypesOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -215,10 +217,15 @@ export default createEslintRule({ (leftNum === rightNum && isPositive(compare(left, right, options))) ) { context.report({ - messageId: 'unexpectedUnionTypesOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedUnionTypesGroupOrder' + : 'unexpectedUnionTypesOrder', data: { left: toSingleLine(left.name), + leftGroup: left.group, right: toSingleLine(right.name), + rightGroup: right.group, }, node: right.node, fix: fixer => { diff --git a/rules/sort-variable-declarations.ts b/rules/sort-variable-declarations.ts index 76f47dd7d..067e668ec 100644 --- a/rules/sort-variable-declarations.ts +++ b/rules/sort-variable-declarations.ts @@ -80,12 +80,7 @@ export default createEslintRule({ let sourceCode = getSourceCode(context) - let extractDependencies = ( - init: TSESTree.Expression | null, - ): string[] => { - if (!init) { - return [] - } + let extractDependencies = (init: TSESTree.Expression): string[] => { let dependencies: string[] = [] let checkNode = (nodeValue: TSESTree.Node) => { @@ -181,7 +176,10 @@ export default createEslintRule({ ;({ name } = declaration.id) } - let dependencies = extractDependencies(declaration.init) + let dependencies: string[] = [] + if (declaration.init) { + dependencies = extractDependencies(declaration.init) + } return { size: rangeToDiff(declaration.range), diff --git a/rules/sort-vue-attributes.ts b/rules/sort-vue-attributes.ts index 64405dfbc..291aa9a0f 100644 --- a/rules/sort-vue-attributes.ts +++ b/rules/sort-vue-attributes.ts @@ -18,7 +18,9 @@ import { complete } from '../utils/complete' import { pairwise } from '../utils/pairwise' import { compare } from '../utils/compare' -type MESSAGE_ID = 'unexpectedVueAttributesOrder' +type MESSAGE_ID = + | 'unexpectedVueAttributesGroupOrder' + | 'unexpectedVueAttributesOrder' type Group = | 'multiline' @@ -103,6 +105,8 @@ export default createEslintRule, MESSAGE_ID>({ }, ], messages: { + unexpectedVueAttributesGroupOrder: + 'Expected "{{right}}" ({{rightGroup}}) to come before "{{left}}" ({{leftGroup}}).', unexpectedVueAttributesOrder: 'Expected "{{right}}" to come before "{{left}}".', }, @@ -212,10 +216,15 @@ export default createEslintRule, MESSAGE_ID>({ isPositive(compare(left, right, options))) ) { context.report({ - messageId: 'unexpectedVueAttributesOrder', + messageId: + leftNum !== rightNum + ? 'unexpectedVueAttributesGroupOrder' + : 'unexpectedVueAttributesOrder', data: { left: left.name, + leftGroup: left.group, right: right.name, + rightGroup: right.group, }, // @ts-ignore node: right.node, diff --git a/test/sort-astro-attributes.test.ts b/test/sort-astro-attributes.test.ts index 8dccc5e02..161e4017b 100644 --- a/test/sort-astro-attributes.test.ts +++ b/test/sort-astro-attributes.test.ts @@ -275,10 +275,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'c', + leftGroup: 'shorthand', right: 'dd', + rightGroup: 'unknown', }, }, ], @@ -358,10 +360,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'multiline', }, }, ], @@ -440,17 +444,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'primary', }, }, { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'secondary', }, }, ], @@ -704,10 +712,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'c', + leftGroup: 'shorthand', right: 'dd', + rightGroup: 'unknown', }, }, ], @@ -790,10 +800,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'multiline', }, }, ], @@ -872,17 +884,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'primary', }, }, { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'secondary', }, }, ], @@ -1135,10 +1151,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'c', + leftGroup: 'shorthand', right: 'dd', + rightGroup: 'unknown', }, }, { @@ -1225,10 +1243,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'multiline', }, }, { @@ -1314,17 +1334,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'primary', }, }, { - messageId: 'unexpectedAstroAttributesOrder', + messageId: 'unexpectedAstroAttributesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'secondary', }, }, ], diff --git a/test/sort-classes.test.ts b/test/sort-classes.test.ts index 4267b6110..902505393 100644 --- a/test/sort-classes.test.ts +++ b/test/sort-classes.test.ts @@ -6680,5 +6680,149 @@ describe(ruleName, () => { }, ], }) + + describe('handles complex comment cases', () => { + ruleTester.run(`keeps comments associated to their node`, rule, { + valid: [], + invalid: [ + { + code: dedent` + class Class { + // Ignore this comment + + // B1 + b + + /** + * Ignore this comment as well + */ + + // A4 + // A3 + /* + * A2 + */ + // A1 + a + } + `, + output: dedent` + class Class { + // Ignore this comment + + // A4 + // A3 + /* + * A2 + */ + // A1 + a + + /** + * Ignore this comment as well + */ + + // B1 + b + } + `, + options: [ + { + type: 'alphabetical', + }, + ], + errors: [ + { + messageId: 'unexpectedClassesOrder', + data: { + left: 'b', + right: 'a', + }, + }, + ], + }, + ], + }) + + ruleTester.run(`handles partition comments`, rule, { + valid: [], + invalid: [ + { + code: dedent` + class Class { + // Ignore this comment + + // C2 + // C1 + c + + // B2 + /** + * B1 + */ + b + + // Above a partition comment ignore me + // PartitionComment: 1 + /** + * D2 + */ + // D1 + d + + a + } + `, + output: dedent` + class Class { + // Ignore this comment + + // B2 + /** + * B1 + */ + b + + // C2 + // C1 + c + + // Above a partition comment ignore me + // PartitionComment: 1 + a + + /** + * D2 + */ + // D1 + d + } + `, + options: [ + { + type: 'alphabetical', + partitionByComment: 'PartitionComment:*', + }, + ], + errors: [ + { + messageId: 'unexpectedClassesOrder', + data: { + left: 'c', + right: 'b', + }, + }, + { + messageId: 'unexpectedClassesOrder', + data: { + left: 'd', + right: 'a', + }, + }, + ], + }, + ], + }) + }) }) }) diff --git a/test/sort-enums.test.ts b/test/sort-enums.test.ts index cd47cf8f6..4adb40490 100644 --- a/test/sort-enums.test.ts +++ b/test/sort-enums.test.ts @@ -1704,209 +1704,380 @@ describe(ruleName, () => { }, ) - ruleTester.run(`${ruleName}: works with dependencies`, rule, { - valid: [], - invalid: [ - { - code: dedent` - enum Enum { - C = 'C', - B = 0, - A = B, - } - `, - output: dedent` - enum Enum { - B = 0, - A = B, - C = 'C', - } - `, - options: [ - { - type: 'alphabetical', - }, - ], - errors: [ - { - messageId: 'unexpectedEnumsOrder', - data: { - left: 'C', - right: 'B', + describe('detects dependencies', () => { + ruleTester.run(`${ruleName}: works with dependencies`, rule, { + valid: [], + invalid: [ + { + code: dedent` + enum Enum { + C = 'C', + B = 0, + A = B, + } + `, + output: dedent` + enum Enum { + B = 0, + A = B, + C = 'C', + } + `, + options: [ + { + type: 'alphabetical', }, - }, - ], - }, - { - code: dedent` - enum Enum { - C = 'C', - B = 0, - A = Enum.B, - } - `, - output: dedent` - enum Enum { - B = 0, - A = Enum.B, - C = 'C', - } - `, - options: [ - { - type: 'alphabetical', - }, - ], - errors: [ - { - messageId: 'unexpectedEnumsOrder', - data: { - left: 'C', - right: 'B', + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'C', + right: 'B', + }, }, - }, - ], - }, - { - code: dedent` - enum Enum { - C = 3, - B = 0, - A = 1 | 2 | B | Enum.B, - } - `, - output: dedent` - enum Enum { - B = 0, - A = 1 | 2 | B | Enum.B, - C = 3, - } - `, - options: [ - { - type: 'alphabetical', - }, - ], - errors: [ - { - messageId: 'unexpectedEnumsOrder', - data: { - left: 'C', - right: 'B', + ], + }, + { + code: dedent` + enum Enum { + C = 'C', + B = 0, + A = Enum.B, + } + `, + output: dedent` + enum Enum { + B = 0, + A = Enum.B, + C = 'C', + } + `, + options: [ + { + type: 'alphabetical', }, - }, - ], - }, - { - code: dedent` - enum Enum { - B = 'B', - A = AnotherEnum.B, - C = 'C', - } - `, - output: dedent` - enum Enum { - A = AnotherEnum.B, - B = 'B', - C = 'C', - } - `, - options: [ - { - type: 'alphabetical', - }, - ], - errors: [ - { - messageId: 'unexpectedEnumsOrder', - data: { - left: 'B', - right: 'A', + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'C', + right: 'B', + }, }, - }, - ], - }, + ], + }, + { + code: dedent` + enum Enum { + C = 3, + B = 0, + A = 1 | 2 | B | Enum.B, + } + `, + output: dedent` + enum Enum { + B = 0, + A = 1 | 2 | B | Enum.B, + C = 3, + } + `, + options: [ + { + type: 'alphabetical', + }, + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'C', + right: 'B', + }, + }, + ], + }, + { + code: dedent` + enum Enum { + B = 'B', + A = AnotherEnum.B, + C = 'C', + } + `, + output: dedent` + enum Enum { + A = AnotherEnum.B, + B = 'B', + C = 'C', + } + `, + options: [ + { + type: 'alphabetical', + }, + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'B', + right: 'A', + }, + }, + ], + }, + { + code: dedent` + enum Enum { + A = Enum.C, + B = 10, + C = 10, + } + `, + output: dedent` + enum Enum { + C = 10, + A = Enum.C, + B = 10, + } + `, + options: [ + { + type: 'alphabetical', + }, + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'B', + right: 'C', + }, + }, + ], + }, + ], + }) + + ruleTester.run( + `${ruleName} detects dependencies in template literal expressions`, + rule, { - code: dedent` - enum Enum { - A = Enum.C, - B = 10, - C = 10, - } - `, - output: dedent` - enum Enum { - C = 10, - A = Enum.C, - B = 10, - } - `, - options: [ + valid: [ { - type: 'alphabetical', - }, - ], - errors: [ - { - messageId: 'unexpectedEnumsOrder', - data: { - left: 'B', - right: 'C', - }, + code: dedent` + enum Enum { + A = \`\${AnotherEnum.D}\`, + D = 'D', + B = \`\${Enum.D}\`, + C = \`\${D}\`, + } + `, + options: [ + { + type: 'alphabetical', + }, + ], }, ], + invalid: [], }, - ], + ) + + ruleTester.run(`${ruleName}: detects circular dependencies`, rule, { + valid: [], + invalid: [ + { + code: dedent` + enum Enum { + A = 'A', + B = F, + C = 'C', + D = B, + E = 'E', + F = D + } + `, + output: dedent` + enum Enum { + A = 'A', + D = B, + F = D, + B = F, + C = 'C', + E = 'E' + } + `, + options: [ + { + type: 'alphabetical', + }, + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'C', + right: 'D', + }, + }, + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'E', + right: 'F', + }, + }, + ], + }, + ], + }) }) - ruleTester.run(`${ruleName}: detects circular dependencies`, rule, { - valid: [], - invalid: [ - { - code: dedent` - enum Enum { - A = 'A', - B = F, - C = 'C', - D = B, - E = 'E', - F = D - } - `, - output: dedent` - enum Enum { - A = 'A', - D = B, - F = D, - B = F, - C = 'C', - E = 'E' - } - `, - options: [ - { - type: 'alphabetical', - }, - ], - errors: [ - { - messageId: 'unexpectedEnumsOrder', - data: { - left: 'C', - right: 'D', + describe('handles complex comment cases', () => { + ruleTester.run(`keeps comments associated to their node`, rule, { + valid: [], + invalid: [ + { + code: dedent` + enum Enum { + // Ignore this comment + + // B2 + /** + * B1 + */ + B = 'B', + + // Ignore this comment + + // A3 + /** + * A2 + */ + // A1 + A = 'A', + } + `, + output: dedent` + enum Enum { + // Ignore this comment + + // A3 + /** + * A2 + */ + // A1 + A = 'A', + + // Ignore this comment + + // B2 + /** + * B1 + */ + B = 'B', + } + `, + options: [ + { + type: 'alphabetical', }, - }, - { - messageId: 'unexpectedEnumsOrder', - data: { - left: 'E', - right: 'F', + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'B', + right: 'A', + }, }, - }, - ], - }, - ], + ], + }, + ], + }) + + ruleTester.run(`handles partition comments`, rule, { + valid: [], + invalid: [ + { + code: dedent` + enum Enum { + // Ignore this comment + + // C2 + // C1 + C = 'C', + + // B2 + /** + * B1 + */ + B = 'B', + + // Above a partition comment ignore me + // PartitionComment: 1 + /** + * D2 + */ + // D1 + D = 'D', + + A = 'A', + } + `, + output: dedent` + enum Enum { + // Ignore this comment + + // B2 + /** + * B1 + */ + B = 'B', + + // C2 + // C1 + C = 'C', + + // Above a partition comment ignore me + // PartitionComment: 1 + A = 'A', + + /** + * D2 + */ + // D1 + D = 'D', + } + `, + options: [ + { + type: 'alphabetical', + partitionByComment: 'PartitionComment:*', + }, + ], + errors: [ + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'C', + right: 'B', + }, + }, + { + messageId: 'unexpectedEnumsOrder', + data: { + left: 'D', + right: 'A', + }, + }, + ], + }, + ], + }) }) }) }) diff --git a/test/sort-imports.test.ts b/test/sort-imports.test.ts index 72a1ccbf6..fa460f2ba 100644 --- a/test/sort-imports.test.ts +++ b/test/sort-imports.test.ts @@ -185,10 +185,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/b', + leftGroup: 'internal', right: '~/i', + rightGroup: 'internal-type', }, }, { @@ -199,10 +201,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: './d', + leftGroup: 'sibling-type', right: 'fs', + rightGroup: 'builtin', }, }, { @@ -220,17 +224,21 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '../../h', + leftGroup: 'parent', right: './index.d.ts', + rightGroup: 'index-type', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '.', + leftGroup: 'index', right: 't', + rightGroup: 'type', }, }, { @@ -321,17 +329,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '.', + leftGroup: 'index', right: 'a', + rightGroup: 'external', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/c', + leftGroup: 'internal', right: 't', + rightGroup: 'type', }, }, { @@ -342,10 +354,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '../../e', + leftGroup: 'parent', right: '~/b', + rightGroup: 'internal', }, }, { @@ -647,6 +661,36 @@ describe(ruleName, () => { invalid: [], }) + ruleTester.run(`${ruleName}(${type}): ignores inline comments`, rule, { + valid: [ + { + code: dedent` + import { a } from 'a' + import { b1, b2 } from 'b' // Comment + import { c } from 'c' + `, + options: [ + { + ...options, + newlinesBetween: 'always', + internalPattern: ['~/**'], + groups: [ + 'type', + ['builtin', 'external'], + 'internal-type', + 'internal', + ['parent-type', 'sibling-type', 'index-type'], + ['parent', 'sibling', 'index'], + 'object', + 'unknown', + ], + }, + ], + }, + ], + invalid: [], + }) + ruleTester.run( `${ruleName}(${type}): ignores comments for counting lines between imports`, rule, @@ -906,10 +950,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: './b', + leftGroup: 'sibling', right: 'c', + rightGroup: 'external', }, }, { @@ -1191,10 +1237,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: 'a', + leftGroup: 'external', right: 'bun:test', + rightGroup: 'builtin', }, }, ], @@ -1338,10 +1386,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/b', + leftGroup: 'internal', right: 'fs', + rightGroup: 'builtin', }, }, { @@ -1439,10 +1489,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: 'bbb', + leftGroup: 'side-effect', right: 'e', + rightGroup: 'external', }, }, { @@ -1672,10 +1724,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/b', + leftGroup: 'internal', right: '~/i', + rightGroup: 'internal-type', }, }, { @@ -1686,10 +1740,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: './d', + leftGroup: 'sibling-type', right: 'fs', + rightGroup: 'builtin', }, }, { @@ -1707,17 +1763,21 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '../../h', + leftGroup: 'parent', right: './index.d.ts', + rightGroup: 'index-type', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '.', + leftGroup: 'index', right: 't', + rightGroup: 'type', }, }, { @@ -1808,17 +1868,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '.', + leftGroup: 'index', right: 'a', + rightGroup: 'external', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/c', + leftGroup: 'internal', right: 't', + rightGroup: 'type', }, }, { @@ -1829,10 +1893,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '../../e', + leftGroup: 'parent', right: '~/b', + rightGroup: 'internal', }, }, { @@ -2134,6 +2200,36 @@ describe(ruleName, () => { invalid: [], }) + ruleTester.run(`${ruleName}(${type}): ignores inline comments`, rule, { + valid: [ + { + code: dedent` + import { a } from 'a' + import { b1, b2 } from 'b' // Comment + import { c } from 'c' + `, + options: [ + { + ...options, + newlinesBetween: 'always', + internalPattern: ['~/**'], + groups: [ + 'type', + ['builtin', 'external'], + 'internal-type', + 'internal', + ['parent-type', 'sibling-type', 'index-type'], + ['parent', 'sibling', 'index'], + 'object', + 'unknown', + ], + }, + ], + }, + ], + invalid: [], + }) + ruleTester.run( `${ruleName}(${type}): ignores comments for counting lines between imports`, rule, @@ -2393,10 +2489,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: './b', + leftGroup: 'sibling', right: 'c', + rightGroup: 'external', }, }, { @@ -2678,10 +2776,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: 'a', + leftGroup: 'external', right: 'bun:test', + rightGroup: 'builtin', }, }, ], @@ -2825,10 +2925,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/b', + leftGroup: 'internal', right: 'fs', + rightGroup: 'builtin', }, }, { @@ -2926,10 +3028,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: 'bbb', + leftGroup: 'side-effect', right: 'e', + rightGroup: 'external', }, }, { @@ -3151,10 +3255,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/b', + leftGroup: 'internal', right: '~/i', + rightGroup: 'internal-type', }, }, { @@ -3165,10 +3271,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: './d', + leftGroup: 'sibling-type', right: 'fs', + rightGroup: 'builtin', }, }, { @@ -3200,17 +3308,21 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '../../h', + leftGroup: 'parent', right: './index.d.ts', + rightGroup: 'index-type', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '.', + leftGroup: 'index', right: 't', + rightGroup: 'type', }, }, { @@ -3308,17 +3420,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '.', + leftGroup: 'index', right: 'a', + rightGroup: 'external', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/c', + leftGroup: 'internal', right: 't', + rightGroup: 'type', }, }, { @@ -3329,10 +3445,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '../../e', + leftGroup: 'parent', right: '~/b', + rightGroup: 'internal', }, }, { @@ -3893,10 +4011,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: './b', + leftGroup: 'sibling', right: 'c', + rightGroup: 'external', }, }, { @@ -4253,10 +4373,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: 'a', + leftGroup: 'external', right: 'bun:test', + rightGroup: 'builtin', }, }, ], @@ -4393,10 +4515,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/b', + leftGroup: 'internal', right: 'fs', + rightGroup: 'builtin', }, }, { @@ -4508,10 +4632,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: 'bbb', + leftGroup: 'side-effect', right: 'e', + rightGroup: 'external', }, }, { @@ -4947,24 +5073,30 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: './cart/CartComponentB.vue', + leftGroup: 'sibling', right: '~/utils/ws.ts', + rightGroup: 'utils', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/utils/ws.ts', + leftGroup: 'utils', right: '~/services/cartService.ts', + rightGroup: 'services', }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/services/cartService.ts', + leftGroup: 'services', right: '~/stores/userStore.ts', + rightGroup: 'stores', }, }, { @@ -4975,10 +5107,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedImportsOrder', + messageId: 'unexpectedImportsGroupOrder', data: { left: '~/composable/useFetch.ts', + leftGroup: 'composable', right: '~/stores/cartStore.ts', + rightGroup: 'stores', }, }, { diff --git a/test/sort-interfaces.test.ts b/test/sort-interfaces.test.ts index 0b94afb27..b842c2fde 100644 --- a/test/sort-interfaces.test.ts +++ b/test/sort-interfaces.test.ts @@ -555,17 +555,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedInterfacePropertiesOrder', + messageId: 'unexpectedInterfacePropertiesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'multiline', }, }, { - messageId: 'unexpectedInterfacePropertiesOrder', + messageId: 'unexpectedInterfacePropertiesGroupOrder', data: { left: 'd', + leftGroup: 'multiline', right: 'g', + rightGroup: 'g', }, }, ], @@ -749,10 +753,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedInterfacePropertiesOrder', + messageId: 'unexpectedInterfacePropertiesGroupOrder', data: { left: 'a', + leftGroup: 'last', right: 'b', + rightGroup: 'unknown', }, }, { @@ -1854,17 +1860,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedInterfacePropertiesOrder', + messageId: 'unexpectedInterfacePropertiesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'multiline', }, }, { - messageId: 'unexpectedInterfacePropertiesOrder', + messageId: 'unexpectedInterfacePropertiesGroupOrder', data: { left: 'd', + leftGroup: 'multiline', right: 'g', + rightGroup: 'g', }, }, ], diff --git a/test/sort-intersection-types.test.ts b/test/sort-intersection-types.test.ts index 729ee2e12..f0e7b0578 100644 --- a/test/sort-intersection-types.test.ts +++ b/test/sort-intersection-types.test.ts @@ -367,38 +367,48 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: "{ name: 'a' }", + leftGroup: 'object', right: 'boolean', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'boolean', + leftGroup: 'keyword', right: 'A', + rightGroup: 'named', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'keyof A', + leftGroup: 'operator', right: 'bigint', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'null', + leftGroup: 'nullish', right: '1', + rightGroup: 'literal', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'A | B', + leftGroup: 'union', right: 'A & B', + rightGroup: 'intersection', }, }, ], @@ -738,38 +748,48 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: "{ name: 'a' }", + leftGroup: 'object', right: 'boolean', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'boolean', + leftGroup: 'keyword', right: 'A', + rightGroup: 'named', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'keyof A', + leftGroup: 'operator', right: 'bigint', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'null', + leftGroup: 'nullish', right: '1', + rightGroup: 'literal', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'A | B', + leftGroup: 'union', right: 'A & B', + rightGroup: 'intersection', }, }, ], @@ -1104,38 +1124,48 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: "{ name: 'a' }", + leftGroup: 'object', right: 'boolean', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'boolean', + leftGroup: 'keyword', right: 'A', + rightGroup: 'named', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'keyof A', + leftGroup: 'operator', right: 'bigint', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'null', + leftGroup: 'nullish', right: '1', + rightGroup: 'literal', }, }, { - messageId: 'unexpectedIntersectionTypesOrder', + messageId: 'unexpectedIntersectionTypesGroupOrder', data: { left: 'A | B', + leftGroup: 'union', right: 'A & B', + rightGroup: 'intersection', }, }, ], diff --git a/test/sort-jsx-props.test.ts b/test/sort-jsx-props.test.ts index bcadf7b1c..e5b301eb4 100644 --- a/test/sort-jsx-props.test.ts +++ b/test/sort-jsx-props.test.ts @@ -276,10 +276,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'aaaaaa', + leftGroup: 'shorthand', right: 'b', + rightGroup: 'unknown', }, }, ], @@ -335,10 +337,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'onChange', + leftGroup: 'callback', right: 'a', + rightGroup: 'unknown', }, }, ], @@ -413,10 +417,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'multiline', }, }, ], @@ -475,10 +481,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'top', }, }, ], @@ -733,10 +741,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'aaaaaa', + leftGroup: 'shorthand', right: 'b', + rightGroup: 'unknown', }, }, ], @@ -792,10 +802,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'onChange', + leftGroup: 'callback', right: 'a', + rightGroup: 'unknown', }, }, ], @@ -870,10 +882,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'multiline', }, }, ], @@ -932,10 +946,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'top', }, }, ], @@ -1189,10 +1205,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'aaaaaa', + leftGroup: 'shorthand', right: 'b', + rightGroup: 'unknown', }, }, ], @@ -1248,10 +1266,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'onChange', + leftGroup: 'callback', right: 'a', + rightGroup: 'unknown', }, }, ], @@ -1326,10 +1346,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'multiline', }, }, { @@ -1396,10 +1418,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedJSXPropsOrder', + messageId: 'unexpectedJSXPropsGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'd', + rightGroup: 'top', }, }, ], diff --git a/test/sort-object-types.test.ts b/test/sort-object-types.test.ts index 3759f4b10..961cff28a 100644 --- a/test/sort-object-types.test.ts +++ b/test/sort-object-types.test.ts @@ -344,10 +344,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedObjectTypesOrder', + messageId: 'unexpectedObjectTypesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'b', }, }, { @@ -941,10 +943,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedObjectTypesOrder', + messageId: 'unexpectedObjectTypesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'b', }, }, { @@ -1511,10 +1515,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedObjectTypesOrder', + messageId: 'unexpectedObjectTypesGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'b', }, }, { diff --git a/test/sort-objects.test.ts b/test/sort-objects.test.ts index 1c1c18f52..8d45e3caa 100644 --- a/test/sort-objects.test.ts +++ b/test/sort-objects.test.ts @@ -308,10 +308,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedObjectsOrder', + messageId: 'unexpectedObjectsGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'top', }, }, ], @@ -478,251 +480,651 @@ describe(ruleName, () => { }, ) - ruleTester.run( - `${ruleName}(${type}): works with complex dependencies`, - rule, - { - valid: [], - invalid: [ - { - code: dedent` - let Func = ({ - a, - b = a + c + d, - c, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - c, - d, - b = a + c + d, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', + describe('detects dependencies', () => { + ruleTester.run( + `${ruleName}(${type}): works with complex dependencies`, + rule, + { + valid: [], + invalid: [ + { + code: dedent` + let Func = ({ + a, + b = a + c + d, + c, + d, + }) => { + // ... + } + `, + output: dedent` + let Func = ({ + a, + c, + d, + b = a + c + d, + }) => { + // ... + } + `, + options: [options], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'b', + right: 'c', + }, }, - }, - ], - }, - { - code: dedent` - let Func = ({ - a, - b = () => a + c, - c, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - c, - b = () => a + c, - d, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', + ], + }, + { + code: dedent` + let Func = ({ + a, + c = 1 === 1 ? 1 === 1 ? a : b : b, + b, + d, + }) => { + // ... + } + `, + output: dedent` + let Func = ({ + a, + b, + c = 1 === 1 ? 1 === 1 ? a : b : b, + d, + }) => { + // ... + } + `, + options: [options], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'c', + right: 'b', + }, }, - }, - ], - }, - { - code: dedent` - let Func = ({ - a, - c = 1 === 1 ? 1 === 1 ? a : b : b, - b, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - b, - c = 1 === 1 ? 1 === 1 ? a : b : b, - d, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'c', - right: 'b', + ], + }, + { + code: dedent` + let Func = ({ + a, + b = ['a', 'b', 'c'].includes(d, c, a), + c, + d, + }) => { + // ... + } + `, + output: dedent` + let Func = ({ + a, + c, + d, + b = ['a', 'b', 'c'].includes(d, c, a), + }) => { + // ... + } + `, + options: [ + { + type: 'alphabetical', + order: 'asc', }, - }, - ], - }, + ], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'b', + right: 'c', + }, + }, + ], + }, + { + code: dedent` + let Func = ({ + a, + b = c || c, + c, + d, + }) => { + // ... + } + `, + output: dedent` + let Func = ({ + a, + c, + b = c || c, + d, + }) => { + // ... + } + `, + options: [options], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'b', + right: 'c', + }, + }, + ], + }, + { + code: dedent` + let Func = ({ + a, + b = 1 === 1 ? a : c, + c, + d, + }) => { + // ... + } + `, + output: dedent` + let Func = ({ + a, + c, + b = 1 === 1 ? a : c, + d, + }) => { + // ... + } + `, + options: [options], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'b', + right: 'c', + }, + }, + ], + }, + { + code: dedent` + let Func = ({ + a = c, + b = 10, + c = 10, + }) => { + // ... + } + `, + output: dedent` + let Func = ({ + c = 10, + a = c, + b = 10, + }) => { + // ... + } + `, + options: [options], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'b', + right: 'c', + }, + }, + ], + }, + ], + }, + ) + + ruleTester.run( + `${ruleName}(${type}): detects function expression dependencies`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = () => 1, + a = b(), + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + { + code: dedent` + let Func = ({ + b = function() { return 1 }, + a = b(), + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + { + code: dedent` + let Func = ({ + b = () => 1, + a = a.map(b), + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects dependencies in objects`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = 1, + a = {x: b}, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + { + code: dedent` + let Func = ({ + b = 1, + a = {[b]: 0}, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects chained dependencies`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = {x: 1}, + a = b.x, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + { + code: dedent` + let Func = ({ + b = new Subject(), + a = b.asObservable(), + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects optional chained dependencies`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = {x: 1}, + a = b?.x, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects non-null asserted dependencies`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = 1, + a = b!, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run(`${ruleName}(${type}) detects unary dependencies`, rule, { + valid: [ { code: dedent` let Func = ({ - a, - b = ['a', 'b', 'c'].includes(d, c, a), - c, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - c, - d, - b = ['a', 'b', 'c'].includes(d, c, a), + b = true, + a = !b, }) => { // ... } `, options: [ { - type: 'alphabetical', - order: 'asc', - }, - ], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', - }, + ...options, }, ], }, - { - code: dedent` - let Func = ({ - a, - b = c || c, - c, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - c, - b = c || c, - d, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', + ], + invalid: [], + }) + + ruleTester.run( + `${ruleName}(${type}) detects spread elements dependencies`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = {x: 1}, + a = {...b}, + }) => { + // ... + } + `, + options: [ + { + ...options, }, - }, - ], - }, - { - code: dedent` - let Func = ({ - a, - b = 1 === 1 ? a : c, - c, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - c, - b = 1 === 1 ? a : c, - d, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', + ], + }, + { + code: dedent` + let Func = ({ + b = [1], + a = [...b], + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects dependencies in conditional expressions`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = 0, + a = b ? 1 : 0, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + { + code: dedent` + let Func = ({ + b = 0, + a = x ? b : 0, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + { + code: dedent` + let Func = ({ + b = 0, + a = x ? 0 : b, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects dependencies in 'as' expressions`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = a, + a = b as any, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects dependencies in type assertion expressions`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = a, + a = b, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) detects dependencies in template literal expressions`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b = a, + a = \`\${b}\`, + }) => { + // ... + } + `, + options: [ + { + ...options, }, - }, - ], - }, - { - code: dedent` - let Func = ({ - a = c, - b = 10, - c = 10, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - c = 10, - a = c, - b = 10, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', + ], + }, + ], + invalid: [], + }, + ) + + ruleTester.run( + `${ruleName}(${type}) ignores function body dependencies`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + a = () => b, + b = 1, + }) => { + // ... + } + `, + options: [ + { + ...options, }, - }, - ], - }, - ], - }, - ) + ], + }, + { + code: dedent` + let Func = ({ + a = function() { return b }, + b = 1, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + { + code: dedent` + let Func = ({ + a = () => {return b}, + b = 1, + }) => { + // ... + } + `, + options: [ + { + ...options, + }, + ], + }, + ], + invalid: [], + }, + ) - ruleTester.run( - `${ruleName}(${type}): detects circular dependencies`, - rule, - { - valid: [], - invalid: [ - { - code: dedent` + ruleTester.run( + `${ruleName}(${type}): detects circular dependencies`, + rule, + { + valid: [], + invalid: [ + { + code: dedent` let Func = ({ a, b = f + 1, @@ -734,7 +1136,7 @@ describe(ruleName, () => { // ... } `, - output: dedent` + output: dedent` let Func = ({ a, d = b + 1, @@ -746,57 +1148,61 @@ describe(ruleName, () => { // ... } `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'c', - right: 'd', + options: [options], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'c', + right: 'd', + }, }, - }, - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'e', - right: 'f', + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'e', + right: 'f', + }, }, - }, - ], - }, - ], - }, - ) + ], + }, + ], + }, + ) - ruleTester.run( - `${ruleName}(${type}): prioritizes dependencies over group configuration`, - rule, - { - valid: [ - { - code: dedent` - let Func = ({ - b, - a = b, - }) => { - // ... - } - `, - options: [ - { - ...options, - groups: ['attributesStartingWithA', 'attributesStartingWithB'], - customGroups: { - attributesStartingWithA: 'a', - attributesStartingWithB: 'b', + ruleTester.run( + `${ruleName}(${type}): prioritizes dependencies over group configuration`, + rule, + { + valid: [ + { + code: dedent` + let Func = ({ + b, + a = b, + }) => { + // ... + } + `, + options: [ + { + ...options, + groups: [ + 'attributesStartingWithA', + 'attributesStartingWithB', + ], + customGroups: { + attributesStartingWithA: 'a', + attributesStartingWithB: 'b', + }, }, - }, - ], - }, - ], - invalid: [], - }, - ) + ], + }, + ], + invalid: [], + }, + ) + }) ruleTester.run( `${ruleName}(${type}): allows to use partition comments`, @@ -1308,10 +1714,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedObjectsOrder', + messageId: 'unexpectedObjectsGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'top', }, }, ], @@ -1516,38 +1924,6 @@ describe(ruleName, () => { }, ], }, - { - code: dedent` - let Func = ({ - a, - b = () => a + c, - c, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - c, - b = () => a + c, - d, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', - }, - }, - ], - }, { code: dedent` let Func = ({ @@ -2166,10 +2542,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedObjectsOrder', + messageId: 'unexpectedObjectsGroupOrder', data: { left: 'a', + leftGroup: 'unknown', right: 'b', + rightGroup: 'top', }, }, { @@ -2381,38 +2759,6 @@ describe(ruleName, () => { }, ], }, - { - code: dedent` - let Func = ({ - a, - b = () => a + c, - c, - d, - }) => { - // ... - } - `, - output: dedent` - let Func = ({ - a, - c, - b = () => a + c, - d, - }) => { - // ... - } - `, - options: [options], - errors: [ - { - messageId: 'unexpectedObjectsOrder', - data: { - left: 'b', - right: 'c', - }, - }, - ], - }, { code: dedent` let Func = ({ @@ -3149,5 +3495,149 @@ describe(ruleName, () => { ], invalid: [], }) + + describe('handles complex comment cases', () => { + ruleTester.run(`keeps comments associated to their node`, rule, { + valid: [], + invalid: [ + { + code: dedent` + let obj = { + // Ignore this comment + + // B2 + /** + * B1 + */ + b, + + // Ignore this comment + + // A3 + /** + * A2 + */ + // A1 + a, + } + `, + output: dedent` + let obj = { + // Ignore this comment + + // A3 + /** + * A2 + */ + // A1 + a, + + // Ignore this comment + + // B2 + /** + * B1 + */ + b, + } + `, + options: [ + { + type: 'alphabetical', + }, + ], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'b', + right: 'a', + }, + }, + ], + }, + ], + }) + + ruleTester.run(`handles partition comments`, rule, { + valid: [], + invalid: [ + { + code: dedent` + let obj = { + // Ignore this comment + + // C2 + // C1 + c, + + // B2 + /** + * B1 + */ + b, + + // Above a partition comment ignore me + // PartitionComment: 1 + /** + * D2 + */ + // D1 + d, + + a, + } + `, + output: dedent` + let obj = { + // Ignore this comment + + // B2 + /** + * B1 + */ + b, + + // C2 + // C1 + c, + + // Above a partition comment ignore me + // PartitionComment: 1 + a, + + /** + * D2 + */ + // D1 + d, + } + `, + options: [ + { + type: 'alphabetical', + partitionByComment: 'PartitionComment:*', + }, + ], + errors: [ + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'c', + right: 'b', + }, + }, + { + messageId: 'unexpectedObjectsOrder', + data: { + left: 'd', + right: 'a', + }, + }, + ], + }, + ], + }) + }) }) }) diff --git a/test/sort-svelte-attributes.test.ts b/test/sort-svelte-attributes.test.ts index cfd9e544d..8da84137c 100644 --- a/test/sort-svelte-attributes.test.ts +++ b/test/sort-svelte-attributes.test.ts @@ -284,10 +284,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'c', + leftGroup: 'svelte-shorthand', right: 'b', + rightGroup: 'unknown', }, }, ], @@ -370,10 +372,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'onClick', + rightGroup: 'multiline', }, }, ], @@ -455,10 +459,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'b', + leftGroup: 'unknown', right: 'c', + rightGroup: 'ce', }, }, ], @@ -721,10 +727,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'c', + leftGroup: 'svelte-shorthand', right: 'b', + rightGroup: 'unknown', }, }, ], @@ -807,10 +815,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'onClick', + rightGroup: 'multiline', }, }, ], @@ -892,10 +902,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'b', + leftGroup: 'unknown', right: 'c', + rightGroup: 'ce', }, }, ], @@ -1157,10 +1169,12 @@ describe(ruleName, () => { }, }, { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'c', + leftGroup: 'svelte-shorthand', right: 'b', + rightGroup: 'unknown', }, }, ], @@ -1243,10 +1257,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'c', + leftGroup: 'unknown', right: 'onClick', + rightGroup: 'multiline', }, }, ], @@ -1328,10 +1344,12 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedSvelteAttributesOrder', + messageId: 'unexpectedSvelteAttributesGroupOrder', data: { left: 'b', + leftGroup: 'unknown', right: 'c', + rightGroup: 'ce', }, }, ], diff --git a/test/sort-union-types.test.ts b/test/sort-union-types.test.ts index 63b1649ae..0b3e78b52 100644 --- a/test/sort-union-types.test.ts +++ b/test/sort-union-types.test.ts @@ -370,38 +370,48 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: "{ name: 'a' }", + leftGroup: 'object', right: 'boolean', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'boolean', + leftGroup: 'keyword', right: 'A', + rightGroup: 'named', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'keyof A', + leftGroup: 'operator', right: 'bigint', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'null', + leftGroup: 'nullish', right: '1', + rightGroup: 'literal', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'A | B', + leftGroup: 'union', right: 'A & B', + rightGroup: 'intersection', }, }, ], @@ -757,38 +767,48 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: "{ name: 'a' }", + leftGroup: 'object', right: 'boolean', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'boolean', + leftGroup: 'keyword', right: 'A', + rightGroup: 'named', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'keyof A', + leftGroup: 'operator', right: 'bigint', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'null', + leftGroup: 'nullish', right: '1', + rightGroup: 'literal', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'A | B', + leftGroup: 'union', right: 'A & B', + rightGroup: 'intersection', }, }, ], @@ -1136,38 +1156,48 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: "{ name: 'a' }", + leftGroup: 'object', right: 'boolean', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'boolean', + leftGroup: 'keyword', right: 'A', + rightGroup: 'named', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'keyof A', + leftGroup: 'operator', right: 'bigint', + rightGroup: 'keyword', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'null', + leftGroup: 'nullish', right: '1', + rightGroup: 'literal', }, }, { - messageId: 'unexpectedUnionTypesOrder', + messageId: 'unexpectedUnionTypesGroupOrder', data: { left: 'A | B', + leftGroup: 'union', right: 'A & B', + rightGroup: 'intersection', }, }, ], diff --git a/test/sort-vue-attributes.test.ts b/test/sort-vue-attributes.test.ts index 2fe7748be..9d99bea01 100644 --- a/test/sort-vue-attributes.test.ts +++ b/test/sort-vue-attributes.test.ts @@ -286,17 +286,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedVueAttributesOrder', + messageId: 'unexpectedVueAttributesGroupOrder', data: { left: 'b', + leftGroup: 'unknown', right: '@a', + rightGroup: 'multiline', }, }, { - messageId: 'unexpectedVueAttributesOrder', + messageId: 'unexpectedVueAttributesGroupOrder', data: { left: 'e-f', + leftGroup: 'shorthand', right: 'c', + rightGroup: 'unknown', }, }, ], @@ -562,17 +566,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedVueAttributesOrder', + messageId: 'unexpectedVueAttributesGroupOrder', data: { left: 'b', + leftGroup: 'unknown', right: '@a', + rightGroup: 'multiline', }, }, { - messageId: 'unexpectedVueAttributesOrder', + messageId: 'unexpectedVueAttributesGroupOrder', data: { left: 'e-f', + leftGroup: 'shorthand', right: 'c', + rightGroup: 'unknown', }, }, ], @@ -837,17 +845,21 @@ describe(ruleName, () => { ], errors: [ { - messageId: 'unexpectedVueAttributesOrder', + messageId: 'unexpectedVueAttributesGroupOrder', data: { left: 'b', + leftGroup: 'unknown', right: '@a', + rightGroup: 'multiline', }, }, { - messageId: 'unexpectedVueAttributesOrder', + messageId: 'unexpectedVueAttributesGroupOrder', data: { left: 'e-f', + leftGroup: 'shorthand', right: 'c', + rightGroup: 'unknown', }, }, ], diff --git a/utils/get-comment-before.ts b/utils/get-comment-before.ts deleted file mode 100644 index 1b13f600b..000000000 --- a/utils/get-comment-before.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { TSESLint } from '@typescript-eslint/utils' -import type { TSESTree } from '@typescript-eslint/types' - -export let getCommentBefore = ( - node: TSESTree.Node, - source: TSESLint.SourceCode, -): TSESTree.Comment | null => { - let [tokenBefore, tokenOrCommentBefore] = source.getTokensBefore(node, { - filter: ({ value, type }) => - !(type === 'Punctuator' && [',', ';'].includes(value)), - includeComments: true, - count: 2, - }) as (TSESTree.Token | null)[] - - if ( - (tokenOrCommentBefore?.type === 'Block' || - tokenOrCommentBefore?.type === 'Line') && - node.loc.start.line - tokenOrCommentBefore.loc.end.line <= 1 && - tokenBefore?.loc.end.line !== tokenOrCommentBefore.loc.start.line - ) { - return tokenOrCommentBefore - } - - return null -} diff --git a/utils/get-comments-before.ts b/utils/get-comments-before.ts new file mode 100644 index 000000000..7c9c72bea --- /dev/null +++ b/utils/get-comments-before.ts @@ -0,0 +1,16 @@ +import type { TSESLint } from '@typescript-eslint/utils' +import type { TSESTree } from '@typescript-eslint/types' + +/** + * Returns a list of comments before a given node, excluding ones that are + * right after code. Includes comment blocks. + */ +export let getCommentsBefore = ( + node: TSESTree.Node, + source: TSESLint.SourceCode, +): TSESTree.Comment[] => + source.getCommentsBefore(node).filter(comment => { + // 'getCommentsBefore' also returns comments that are right after code, filter those out + let tokenBeforeComment = source.getTokenBefore(comment) + return tokenBeforeComment?.loc.end.line !== comment.loc.end.line + }) diff --git a/utils/get-node-range.ts b/utils/get-node-range.ts index 65d116933..82a2a39ed 100644 --- a/utils/get-node-range.ts +++ b/utils/get-node-range.ts @@ -4,7 +4,7 @@ import type { TSESLint } from '@typescript-eslint/utils' import { ASTUtils } from '@typescript-eslint/utils' import { isPartitionComment } from './is-partition-comment' -import { getCommentBefore } from './get-comment-before' +import { getCommentsBefore } from './get-comments-before' export let getNodeRange = ( node: TSESTree.Node, @@ -33,8 +33,6 @@ export let getNodeRange = ( end = bodyClosingParen.range.at(1)! } - let comment = getCommentBefore(node, sourceCode) - if (raw.endsWith(';') || raw.endsWith(',')) { let tokensAfter = sourceCode.getTokensAfter(node, { includeComments: true, @@ -45,15 +43,35 @@ export let getNodeRange = ( end -= 1 } } + let comments = getCommentsBefore(node, sourceCode) + + // Iterate on all comments starting from the bottom until we reach the last + // of the comments, a newline between comments, or a partition comment + let relevantTopComment: TSESTree.Comment | undefined + for (let i = comments.length - 1; i >= 0; i--) { + let comment = comments[i] + if ( + isPartitionComment( + additionalOptions?.partitionComment ?? false, + comment.value, + ) + ) { + break + } + // Check for newlines between comments or between the first comment and + // the node. + let previousCommentOrNodeStartLine = + i === comments.length - 1 + ? node.loc.start.line + : comments[i + 1].loc.start.line + if (comment.loc.end.line !== previousCommentOrNodeStartLine - 1) { + break + } + relevantTopComment = comment + } - if ( - comment && - !isPartitionComment( - additionalOptions?.partitionComment ?? false, - comment.value, - ) - ) { - start = comment.range.at(0)! + if (relevantTopComment) { + start = relevantTopComment.range.at(0)! } return [start, end] diff --git a/utils/is-partition-comment.ts b/utils/is-partition-comment.ts index c501541ee..3c774cc33 100644 --- a/utils/is-partition-comment.ts +++ b/utils/is-partition-comment.ts @@ -1,3 +1,5 @@ +import type { TSESTree } from '@typescript-eslint/types' + import { minimatch } from 'minimatch' export let isPartitionComment = ( @@ -15,3 +17,9 @@ export let isPartitionComment = ( nocomment: true, })) || partitionComment === true + +export let hasPartitionComment = ( + partitionComment: string[] | boolean | string, + comments: TSESTree.Comment[], +): boolean => + comments.some(comment => isPartitionComment(partitionComment, comment.value))