From b019a15c58a4f9182627b66fda562721a6bf9db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Mon, 23 Feb 2026 20:14:03 +0100 Subject: [PATCH 01/16] docs: document oxlint setup --- README.md | 7 +++++-- docs/parsers/angular.md | 18 ++++++++++++++++- docs/parsers/astro.md | 18 ++++++++++++++++- docs/parsers/css.md | 18 ++++++++++++++++- docs/parsers/html.md | 14 +++++++++++++ docs/parsers/javascript.md | 41 ++++++++++++++++++++++++++++++++++++-- docs/parsers/jsx.md | 39 +++++++++++++++++++++++++++++++++++- docs/parsers/svelte.md | 14 +++++++++++++ docs/parsers/tsx.md | 41 +++++++++++++++++++++++++++++++++++++- docs/parsers/typescript.md | 41 +++++++++++++++++++++++++++++++++++++- docs/parsers/vue.md | 14 +++++++++++++ 11 files changed, 255 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index aff4d67..b0ef378 100644 --- a/README.md +++ b/README.md @@ -184,9 +184,12 @@ Most rules are intended to automatically fix the tailwind classes. If you have i ```jsonc { - // enable ESLint to fix tailwind classes on save + // enable VSCode to fix tailwind classes on save "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" + // ESLint + "source.fixAll.eslint": "explicit", + // Oxlint + "source.fixAll.oxc": "explicit" } } ``` diff --git a/docs/parsers/angular.md b/docs/parsers/angular.md index 355d163..abf82f1 100644 --- a/docs/parsers/angular.md +++ b/docs/parsers/angular.md @@ -1,6 +1,13 @@ # Angular -## Flat config +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ +## ESLint + +### Flat config To use ESLint with Angular, install [Angular ESLint](https://github.com/angular-eslint/angular-eslint?tab=readme-ov-file#quick-start) and [TypeScript ESLint](https://typescript-eslint.io/getting-started). You can follow the [flat config](https://github.com/angular-eslint/angular-eslint/blob/main/docs/CONFIGURING_FLAT_CONFIG.md) setup, which includes rules from the Angular ESLint package or you can add the parser directly by following the steps below. @@ -132,3 +139,12 @@ export default defineConfig([ ``` + +
+ +## Oxlint + +Oxlint currently does **not** support Angular templates and inline template processing. +Framework-specific parsers/processors like Angular are not supported in Oxlint yet, so `eslint-plugin-better-tailwindcss` cannot currently lint Angular templates through Oxlint. + +You can continue using ESLint for Angular files until Oxlint adds framework parser support. diff --git a/docs/parsers/astro.md b/docs/parsers/astro.md index 3a69c78..bcbddaa 100644 --- a/docs/parsers/astro.md +++ b/docs/parsers/astro.md @@ -1,6 +1,13 @@ # Astro -## Flat config +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ +## ESLint + +### Flat config To use ESLint with Astro files, first install the [astro-eslint-parser](https://github.com/ota-meshi/astro-eslint-parser) and optionally [TypeScript ESLint](https://typescript-eslint.io/getting-started). Then, configure ESLint to use this parser for Astro files. @@ -115,3 +122,12 @@ export default defineConfig({ ``` + +
+ +## Oxlint + +Oxlint currently does **not** support Astro files (`.astro`). +Framework-specific parsers like Astro are not supported in Oxlint yet, so `eslint-plugin-better-tailwindcss` cannot currently lint Astro templates through Oxlint. + +You can continue using ESLint for Astro files until Oxlint adds framework parser support. diff --git a/docs/parsers/css.md b/docs/parsers/css.md index df43881..d7aa7a0 100644 --- a/docs/parsers/css.md +++ b/docs/parsers/css.md @@ -1,5 +1,10 @@ # CSS +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ To use ESLint with CSS files containing Tailwind CSS `@apply` directives, first install the [@eslint/css](https://github.com/eslint/css) plugin and the [tailwind-csstree](https://www.npmjs.com/package/tailwind-csstree) custom syntax. ```sh @@ -15,7 +20,9 @@ To lint Tailwind CSS classes in CSS files, ensure that:
-## Flat config +## ESLint + +### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) @@ -65,3 +72,12 @@ export default defineConfig({
> **Note:** Legacy config is not supported for CSS files as the `@eslint/css` plugin requires the ESLint flat config format. + +
+ +## Oxlint + +Oxlint currently does **not** support CSS parser integration for this use case. +Because Oxlint currently only supports JavaScript-like files, `eslint-plugin-better-tailwindcss` cannot currently lint CSS `@apply` directives through Oxlint. + +You can continue using ESLint for CSS files until broader parser support is available in Oxlint. diff --git a/docs/parsers/html.md b/docs/parsers/html.md index 44e6a8a..8905e8c 100644 --- a/docs/parsers/html.md +++ b/docs/parsers/html.md @@ -1,5 +1,10 @@ # HTML +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ To use ESLint with HTML files, first install the [@html-eslint/parser](https://github.com/yeonjuan/html-eslint/tree/main/packages/parser). ```sh @@ -89,3 +94,12 @@ export default defineConfig({ ``` + +
+ +## Oxlint + +Oxlint currently does **not** support HTML parser integration for this use case. +Because Oxlint currently only supports JavaScript-like files, `eslint-plugin-better-tailwindcss` cannot currently lint standalone HTML files through Oxlint. + +You can continue using ESLint for HTML files until broader parser support is available in Oxlint. diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index 1d59b76..dfa8bd6 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -1,5 +1,10 @@ # JavaScript +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ To lint Tailwind CSS classes in JavaScript files, ensure that: - The plugin is added to your configuration. @@ -7,7 +12,7 @@ To lint Tailwind CSS classes in JavaScript files, ensure that:
-## Usage +## ESLint ### Flat config @@ -44,7 +49,7 @@ export default defineConfig({
- Legacy config +

Legacy config


@@ -74,3 +79,35 @@ export default defineConfig({ ```
+ +
+ +## Oxlint + +The Oxlint configuration currently requires to set up each rule individually. +More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). + +```ts +// oxlint.config.ts + +import { defineConfig } from "oxlint"; + +export default defineConfig({ + overrides: [{ + "files": ["**/*.{js,ts,jsx,cjs,mjs,tsx}"], + "jsPlugins": [ + "eslint-plugin-better-tailwindcss" + ], + rules: { + "better-tailwindcss/no-duplicate-classes": "warn", + 'better-tailwindcss/enforce-consistent-line-wrapping': ["warn", { printWidth: 100 }], + // ... add additional rules here + } + }], + settings: { + 'better-tailwindcss': { + entryPoint: 'src/global.css', + } + } +}); +``` diff --git a/docs/parsers/jsx.md b/docs/parsers/jsx.md index 39c1b90..1b17b22 100644 --- a/docs/parsers/jsx.md +++ b/docs/parsers/jsx.md @@ -1,5 +1,10 @@ # JSX +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ To lint Tailwind CSS classes in JSX files, ensure that: - `jsx` parsing is enabled. @@ -8,7 +13,7 @@ To lint Tailwind CSS classes in JSX files, ensure that:
-## Usage +## ESLint ### Flat config @@ -92,3 +97,35 @@ export default defineConfig({ ``` + +
+ +## Oxlint + +The Oxlint configuration currently requires to set up each rule individually. +More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). + +```ts +// oxlint.config.ts + +import { defineConfig } from "oxlint"; + +export default defineConfig({ + overrides: [{ + files: ["**/*.{js,jsx,mjs,cjs}"], + jsPlugins: [ + "eslint-plugin-better-tailwindcss" + ], + rules: { + "better-tailwindcss/no-duplicate-classes": "warn", + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], + // ... add additional rules here + } + }], + settings: { + "better-tailwindcss": { + entryPoint: "src/global.css" + } + } +}); +``` diff --git a/docs/parsers/svelte.md b/docs/parsers/svelte.md index 8b5abac..74110d8 100644 --- a/docs/parsers/svelte.md +++ b/docs/parsers/svelte.md @@ -1,5 +1,10 @@ # Svelte +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ To use ESLint with Svelte files, first install the [svelte-eslint-parser](https://github.com/sveltejs/svelte-eslint-parser). ```sh @@ -88,3 +93,12 @@ export default defineConfig({ ``` + +
+ +## Oxlint + +Oxlint currently does **not** support Svelte files (`.svelte`). +Framework-specific parsers like Svelte are not supported in Oxlint yet, so `eslint-plugin-better-tailwindcss` cannot currently lint Svelte templates through Oxlint. + +You can continue using ESLint for Svelte files until Oxlint adds framework parser support. diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index f2b49aa..f4579df 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -1,6 +1,13 @@ # TSX -## Flat config +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ +## ESLint + +### Flat config To use ESLint with TSX files, first install the [typescript-eslint](https://typescript-eslint.io/getting-started) package. @@ -128,3 +135,35 @@ export default defineConfig([ ``` + +
+ +## Oxlint + +The Oxlint configuration currently requires to set up each rule individually. +More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). + +```ts +// oxlint.config.ts + +import { defineConfig } from "oxlint"; + +export default defineConfig({ + overrides: [{ + files: ["**/*.{ts,tsx,cts,mts}"], + jsPlugins: [ + "eslint-plugin-better-tailwindcss" + ], + rules: { + "better-tailwindcss/no-duplicate-classes": "warn", + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], + // ... add additional rules here + } + }], + settings: { + "better-tailwindcss": { + entryPoint: "src/global.css" + } + } +}); +``` diff --git a/docs/parsers/typescript.md b/docs/parsers/typescript.md index b1d4043..6b9d1eb 100644 --- a/docs/parsers/typescript.md +++ b/docs/parsers/typescript.md @@ -1,6 +1,13 @@ # TypeScript -## Flat config +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ +## ESLint + +### Flat config To use ESLint with TypeScript files, first install the [typescript-eslint](https://typescript-eslint.io/getting-started) package. @@ -107,3 +114,35 @@ export default defineConfig({ ``` + +
+ +## Oxlint + +The Oxlint configuration currently requires to set up each rule individually. +More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). + +```ts +// oxlint.config.ts + +import { defineConfig } from "oxlint"; + +export default defineConfig({ + overrides: [{ + files: ["**/*.{ts,tsx,cts,mts}"], + jsPlugins: [ + "eslint-plugin-better-tailwindcss" + ], + rules: { + "better-tailwindcss/no-duplicate-classes": "warn", + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], + // ... add additional rules here + } + }], + settings: { + "better-tailwindcss": { + entryPoint: "src/global.css" + } + } +}); +``` diff --git a/docs/parsers/vue.md b/docs/parsers/vue.md index 852a1f9..421ae1c 100644 --- a/docs/parsers/vue.md +++ b/docs/parsers/vue.md @@ -1,5 +1,10 @@ # Vue +- [ESLint](#eslint) +- [Oxlint](#oxlint) + +
+ To use ESLint with Vue files, first install the [vue-eslint-parser](https://github.com/vuejs/vue-eslint-parser). ```sh @@ -88,3 +93,12 @@ export default defineConfig({ ``` + +
+ +## Oxlint + +Oxlint currently does **not** support Vue files (`.vue`). +Framework-specific parsers like Vue are not supported in Oxlint yet, so `eslint-plugin-better-tailwindcss` cannot currently lint Vue templates through Oxlint. + +You can continue using ESLint for Vue files until Oxlint adds framework parser support. From 0cf56b9b5fb9c610dcbb009f4a7f202ce91d5f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:09:21 +0100 Subject: [PATCH 02/16] chore: update dependencies --- package-lock.json | 1146 ++++++++++++++++++++++++--------------------- package.json | 30 +- 2 files changed, 616 insertions(+), 560 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e11e22..0f9e557 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "4.3.0", "license": "MIT", "dependencies": { - "@eslint/css-tree": "^3.6.8", + "@eslint/css-tree": "^3.6.9", "@valibot/to-json-schema": "^1.5.0", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", @@ -19,33 +19,33 @@ "valibot": "^1.2.0" }, "devDependencies": { - "@angular-eslint/template-parser": "^21.2.0", - "@angular/compiler": "^21.1.3", + "@angular-eslint/template-parser": "^12.7.0", + "@angular/compiler": "^21.1.5", "@eslint/css": "^0.14.1", - "@html-eslint/parser": "^0.54.0", + "@html-eslint/parser": "^0.46.0", "@oxc-node/core": "^0.0.35", - "@schoero/configs": "^1.5.27", + "@schoero/configs": "^1.0.8", "@types/estree-jsx": "^1.0.5", - "@types/node": "^25.2.3", - "@typescript-eslint/parser": "^8.55.0", - "astro-eslint-parser": "^1.2.2", + "@types/node": "^25.3.0", + "@typescript-eslint/parser": "^8.56.1", + "astro-eslint-parser": "^1.3.0", "changelogen": "^0.6.2", - "cspell": "^9.6.4", - "daisyui": "^5.5.18", + "cspell": "^9.7.0", + "daisyui": "^5.5.19", "es-html-parser": "^0.3.1", - "eslint": "^9.39.2", + "eslint": "^9.39.3", "eslint-plugin-better-tailwindcss": "file:./", "json-schema": "^0.4.0", "markdownlint": "^0.40.0", "prettier": "^3.8.1", - "svelte": "^5.50.1", - "svelte-eslint-parser": "^1.4.1", - "tailwindcss": "^4.1.18", + "svelte": "^5.53.3", + "svelte-eslint-parser": "^1.5.0", + "tailwindcss": "^4.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3", "vite-node": "^5.3.0", "vitest": "^4.0.18", - "vue-eslint-parser": "^10.2.0" + "vue-eslint-parser": "^10.4.0" }, "engines": { "node": "^20.19.0 || ^22.12.0 || >=23.0.0" @@ -65,31 +65,31 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-21.2.0.tgz", - "integrity": "sha512-J0DWL+j6t9ItFIyIADvzHGqwDA1qfVJ9bx+oTmJ/Hlo7cUpIRoXpcTXpug0CEEABFH0RfDu6PDG2b0FoZ1+7bg==", + "version": "12.7.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-12.7.0.tgz", + "integrity": "sha512-n7nUSIK+bl2DQXIPRyts/xVTw94Mk0rRNd2WBCL9ni27XKOhKtTdP7tLpD+nAiuY4BTTJr7/yTzPWCCRDQgWZg==", "dev": true, "license": "MIT" }, "node_modules/@angular-eslint/template-parser": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-21.2.0.tgz", - "integrity": "sha512-TCb3qYOC/uXKZCo56cJ6N9sHeWdFhyVqrbbYfFjTi09081T6jllgHDZL5Ms7gOMNY8KywWGGbhxwvzeA0RwTgA==", + "version": "12.7.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-12.7.0.tgz", + "integrity": "sha512-bTGRZ/2m2Z/MCoazWnpbPWLSBK8AsnHCuCXAgiiveYql0GD+PySP1EkBuiWesIyxCsYdzf4aQciJSVuQRo9jEQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "21.2.0", - "eslint-scope": "^9.0.0" + "@angular-eslint/bundled-angular-compiler": "12.7.0", + "eslint-scope": "^5.1.0" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "*", "typescript": "*" } }, "node_modules/@angular/compiler": { - "version": "21.1.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.1.3.tgz", - "integrity": "sha512-gDNLh7MEf7Qf88ktZzS4LJQXCA5U8aQTfK9ak+0mi2ruZ0x4XSjQCro4H6OPKrrbq94+6GcnlSX5+oVIajEY3w==", + "version": "21.1.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.1.5.tgz", + "integrity": "sha512-yRUdWlL+AWcTL4d7zD0jkNqsjvxXpWEihvOfD2gc65DO0+E80DsWIpHq9A8yWeLukbfLcmBGI2QbfW9+SXAlvg==", "dev": true, "license": "MIT", "dependencies": { @@ -118,9 +118,9 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.6.4.tgz", - "integrity": "sha512-OIiPQuB7XQ6rnUv4KaCwHr9vNwbh6VZ4GfgQjcThT0oz0hkL6E5Ar3tq54K9jyqE9ylcHqpRuXUgnKgio6Hlig==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.7.0.tgz", + "integrity": "sha512-s7h1vo++Q3AsfQa3cs0u/KGwm3SYInuIlC4kjlCBWjQmb4KddiZB5O1u0+3TlA7GycHb5M4CR7MDfHUICgJf+w==", "dev": true, "license": "MIT", "dependencies": { @@ -137,11 +137,11 @@ "@cspell/dict-data-science": "^2.0.13", "@cspell/dict-django": "^4.1.6", "@cspell/dict-docker": "^1.1.17", - "@cspell/dict-dotnet": "^5.0.11", + "@cspell/dict-dotnet": "^5.0.12", "@cspell/dict-elixir": "^4.0.8", - "@cspell/dict-en_us": "^4.4.28", + "@cspell/dict-en_us": "^4.4.29", "@cspell/dict-en-common-misspellings": "^2.1.12", - "@cspell/dict-en-gb-mit": "^3.1.17", + "@cspell/dict-en-gb-mit": "^3.1.18", "@cspell/dict-filetypes": "^3.0.15", "@cspell/dict-flutter": "^1.1.1", "@cspell/dict-fonts": "^4.0.5", @@ -165,7 +165,7 @@ "@cspell/dict-markdown": "^2.0.14", "@cspell/dict-monkeyc": "^1.0.12", "@cspell/dict-node": "^5.0.9", - "@cspell/dict-npm": "^5.2.32", + "@cspell/dict-npm": "^5.2.34", "@cspell/dict-php": "^4.1.1", "@cspell/dict-powershell": "^5.0.15", "@cspell/dict-public-licenses": "^2.0.15", @@ -175,7 +175,7 @@ "@cspell/dict-rust": "^4.1.2", "@cspell/dict-scala": "^5.0.9", "@cspell/dict-shell": "^1.1.2", - "@cspell/dict-software-terms": "^5.1.20", + "@cspell/dict-software-terms": "^5.1.21", "@cspell/dict-sql": "^2.2.1", "@cspell/dict-svelte": "^1.0.7", "@cspell/dict-swift": "^2.0.6", @@ -189,22 +189,22 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-9.6.4.tgz", - "integrity": "sha512-rGYSDnDWACrUyovfN8M/LM8CCFSKjYd2kehbNS7YMPk0Jk+rLk6sgt5WYu3ty45otXCkiO07bjUo/81wBLet7A==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-9.7.0.tgz", + "integrity": "sha512-6xpGXlMtQA3hV2BCAQcPkpx9eI12I0o01i9eRqSSEDKtxuAnnrejbcCpL+5OboAjTp3/BSeNYSnhuWYLkSITWQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-types": "9.6.4" + "@cspell/cspell-types": "9.7.0" }, "engines": { "node": ">=20" } }, "node_modules/@cspell/cspell-performance-monitor": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-performance-monitor/-/cspell-performance-monitor-9.6.4.tgz", - "integrity": "sha512-exuqxV1IVfZkasg57ZjUbaHeZDd6Mdbsbe5FBT3+XaVnRij+wpY2oEW9+kIOL5MOQE3bgQKgu37iMtA1NlCrGA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-performance-monitor/-/cspell-performance-monitor-9.7.0.tgz", + "integrity": "sha512-w1PZIFXuvjnC6mQHyYAFnrsn5MzKnEcEkcK1bj4OG00bAt7WX2VUA/eNNt9c1iHozCQ+FcRYlfbGxuBmNyzSgw==", "dev": true, "license": "MIT", "engines": { @@ -212,9 +212,9 @@ } }, "node_modules/@cspell/cspell-pipe": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-9.6.4.tgz", - "integrity": "sha512-vVxajTG9Ko01oHk8HPsMLajcLrd9AfkOk6vdgFI4FD7ZPq1CY0hfTmfmJ8bzZ4/QkqXglTvePdSgHQVJeltwWw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-9.7.0.tgz", + "integrity": "sha512-iiisyRpJciU9SOHNSi0ZEK0pqbEMFRatI/R4O+trVKb+W44p4MNGClLVRWPGUmsFbZKPJL3jDtz0wPlG0/JCZA==", "dev": true, "license": "MIT", "engines": { @@ -222,22 +222,22 @@ } }, "node_modules/@cspell/cspell-resolver": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-9.6.4.tgz", - "integrity": "sha512-3xsgZEqqH9Uj8ZYLBnWbnsHz8wphgaeuWKcNDqgwoMjvwTMQLGoXjHht8Jx5yxd2e080lB7fJax8TaBdCzmFFA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-9.7.0.tgz", + "integrity": "sha512-uiEgS238mdabDnwavo6HXt8K98jlh/jpm7NONroM9NTr9rzck2VZKD2kXEj85wDNMtRsRXNoywTjwQ8WTB6/+w==", "dev": true, "license": "MIT", "dependencies": { - "global-directory": "^4.0.1" + "global-directory": "^5.0.0" }, "engines": { "node": ">=20" } }, "node_modules/@cspell/cspell-service-bus": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-9.6.4.tgz", - "integrity": "sha512-oGNEzP1gJ43rLklJQjOk5PsfX0mZkLjV19djGptb9xZQeC2qAUxnaAbZtWt5CE8ni2iiTaRmgNRbUqAhRCnjew==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-9.7.0.tgz", + "integrity": "sha512-fkqtaCkg4jY/FotmzjhIavbXuH0AgUJxZk78Ktf4XlhqOZ4wDeUWrCf220bva4mh3TWiLx/ae9lIlpl59Vx6hA==", "dev": true, "license": "MIT", "engines": { @@ -245,9 +245,9 @@ } }, "node_modules/@cspell/cspell-types": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-9.6.4.tgz", - "integrity": "sha512-lf6d+BdMkJIFCxx2FpajLpqVGGyaGUNFU6jhEM6QUPeGuoA5et2kJXrL0NSY2uWLOVyYYc/FPjzlbe8trA9tBQ==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-9.7.0.tgz", + "integrity": "sha512-Tdfx4eH2uS+gv9V9NCr3Rz+c7RSS6ntXp3Blliud18ibRUlRxO9dTaOjG4iv4x0nAmMeedP1ORkEpeXSkh2QiQ==", "dev": true, "license": "MIT", "peer": true, @@ -256,13 +256,13 @@ } }, "node_modules/@cspell/cspell-worker": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-worker/-/cspell-worker-9.6.4.tgz", - "integrity": "sha512-anacKDOZzDfPzuDeFOXGI2tFBYiRRCSnIZP/AOyJ9zTvEQcqq5p/ak18nJ5OQyDr2NG7ovJiCDT5YNiH2Vdg/g==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-worker/-/cspell-worker-9.7.0.tgz", + "integrity": "sha512-cjEApFF0aOAa1vTUk+e7xP8ofK7iC7hsRzj1FmvvVQz8PoLWPRaq+1bT89ypPsZQvavqm5sIgb97S60/aW4TVg==", "dev": true, "license": "MIT", "dependencies": { - "cspell-lib": "9.6.4" + "cspell-lib": "9.7.0" }, "engines": { "node": ">=20.18" @@ -371,9 +371,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-dotnet": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.11.tgz", - "integrity": "sha512-LSVKhpFf/ASTWJcfYeS0Sykcl1gVMsv2Z5Eo0TnTMSTLV3738HH+66pIsjUTChqU6SF3gKPuCe6EOaRYqb/evA==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.12.tgz", + "integrity": "sha512-FiV934kNieIjGTkiApu/WKvLYi/KBpvfWB2TSqpDQtmXZlt3uSa5blwblO1ZC8OvjH8RCq/31H5IdEYmTaZS7A==", "dev": true, "license": "MIT" }, @@ -406,9 +406,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-filetypes": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.15.tgz", - "integrity": "sha512-uDMeqYlLlK476w/muEFQGBy9BdQWS0mQ7BJiy/iQv5XUWZxE2O54ZQd9nW8GyQMzAgoyg5SG4hf9l039Qt66oA==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.16.tgz", + "integrity": "sha512-SyrtuK2/sx+cr94jOp2/uOAb43ngZEVISUTRj4SR6SfoGULVV1iJS7Drqn7Ul9HJ731QDttwWlOUgcQ+yMRblg==", "dev": true, "license": "MIT" }, @@ -534,9 +534,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-latex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-5.0.0.tgz", - "integrity": "sha512-HUrIqUVohM6P0+5b7BsdAdb0STIv0aaFBvguI7pLcreljlcX3FSPUxea7ticzNlCNeVrEaiEn/ws9m6rYUeuNw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-5.1.0.tgz", + "integrity": "sha512-qxT4guhysyBt0gzoliXYEBYinkAdEtR2M7goRaUH0a7ltCsoqqAeEV8aXYRIdZGcV77gYSobvu3jJL038tlPAw==", "dev": true, "license": "MIT" }, @@ -589,9 +589,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-npm": { - "version": "5.2.33", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.33.tgz", - "integrity": "sha512-U1gfDxdFR6nnojvtdkF2Ati3jfIlnW5nJkFb2jS1JunlhrSYdZXwz/4bI//h1W3aaeYQoSlvTIqk3vlnIDrNng==", + "version": "5.2.35", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.35.tgz", + "integrity": "sha512-w0VIDUvzHSTt4S9pfvSatApxtCesLMFrDUYD0Wjtw91EBRkB2wVw/RV3q1Ni9Nzpx6pCFpcB7c1xBY8l22cyiQ==", "dev": true, "license": "MIT" }, @@ -610,9 +610,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-public-licenses": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.15.tgz", - "integrity": "sha512-cJEOs901H13Pfy0fl4dCD1U+xpWIMaEPq8MeYU83FfDZvellAuSo4GqWCripfIqlhns/L6+UZEIJSOZnjgy7Wg==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.16.tgz", + "integrity": "sha512-EQRrPvEOmwhwWezV+W7LjXbIBjiy6y/shrET6Qcpnk3XANTzfvWflf9PnJ5kId/oKWvihFy0za0AV1JHd03pSQ==", "dev": true, "license": "MIT" }, @@ -662,9 +662,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-software-terms": { - "version": "5.1.20", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.1.20.tgz", - "integrity": "sha512-TEk1xHvetTI4pv7Vzje1D322m6QEjaH2P6ucOOf6q7EJCppQIdC0lZSXkgHJAFU5HGSvEXSzvnVeW2RHW86ziQ==", + "version": "5.1.22", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.1.22.tgz", + "integrity": "sha512-ELi8wqyDAreDpo17Pu45AuKvcrhqPCkGeL+DMuSVxEimBwEqPB+KeQ89DkVap6QDJHl3LCth0pjv8uOgS1dtdQ==", "dev": true, "license": "MIT" }, @@ -719,13 +719,13 @@ "license": "MIT" }, "node_modules/@cspell/dynamic-import": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-9.6.4.tgz", - "integrity": "sha512-1VnL9ahT3s17DLWl4MeO1pYg7zcVT3X9cKynI2/U86zNK5xMGS5icvjp7X65tsCAVNcWOtkqVFfrxi7kWxn67g==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-9.7.0.tgz", + "integrity": "sha512-Ws36IYvtS/8IN3x6K9dPLvTmaArodRJmzTn2Rkf2NaTnIYWhRuFzsP3SVVO59NN3fXswAEbmz5DSbVUe8bPZHg==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "9.6.4", + "@cspell/url": "9.7.0", "import-meta-resolve": "^4.2.0" }, "engines": { @@ -733,9 +733,9 @@ } }, "node_modules/@cspell/filetypes": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-9.6.4.tgz", - "integrity": "sha512-a1aZ/8vGnhTknxTukjzo3m8CISyHW2MWnbedywg5SDEl5RMJitmzX90QZiQdSvEcqzqmtoAgSEZNBT2LX2gIKg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-9.7.0.tgz", + "integrity": "sha512-Ln9e/8wGOyTeL3DCCs6kwd18TSpTw3kxsANjTrzLDASrX4cNmAdvc9J5dcIuBHPaqOAnRQxuZbzUlpRh73Y24w==", "dev": true, "license": "MIT", "engines": { @@ -743,9 +743,9 @@ } }, "node_modules/@cspell/rpc": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/rpc/-/rpc-9.6.4.tgz", - "integrity": "sha512-vGI1788Rx5Yml9N1/pD4zGd8Vrchi2Y01ADf9NiiOaNVVdf4PU1GCssLCsiIzhYQneErpQ8pJi/mS2F/QMZbRA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/rpc/-/rpc-9.7.0.tgz", + "integrity": "sha512-VnZ4ABgQeoS4RwofcePkDP7L6tf3Kh5D7LQKoyRM4R6XtfSsYefym6XKaRl3saGtthH5YyjgNJ0Tgdjen4wAAw==", "dev": true, "license": "MIT", "engines": { @@ -753,9 +753,9 @@ } }, "node_modules/@cspell/strong-weak-map": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-9.6.4.tgz", - "integrity": "sha512-AQrUbA0JUOEQgwItnfUQ6Ydk0hWY/uV3VhLwZWyrnT9eiQynmTnRTHtOCkkSl9+M4P0N4Raa2eGFRLcPAFksaw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-9.7.0.tgz", + "integrity": "sha512-5xbvDASjklrmy88O6gmGXgYhpByCXqOj5wIgyvwZe2l83T1bE+iOfGI4pGzZJ/mN+qTn1DNKq8BPBPtDgb7Q2Q==", "dev": true, "license": "MIT", "engines": { @@ -763,9 +763,9 @@ } }, "node_modules/@cspell/url": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-9.6.4.tgz", - "integrity": "sha512-h6VMlb7bDyGJfwLtipxxtHlT+ojzUXZz14AqZ/NEzY3LfOhfJTGpRcWLYFsgG/L0Ma4qjsYbPJt/Sj1C14j0VA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-9.7.0.tgz", + "integrity": "sha512-ZaaBr0pTvNxmyUbIn+nVPXPr383VqJzfUDMWicgTjJIeo2+T2hOq2kNpgpvTIrWtZrsZnSP8oXms1+sKTjcvkw==", "dev": true, "license": "MIT", "engines": { @@ -1342,6 +1342,13 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -1354,9 +1361,9 @@ } }, "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -1408,9 +1415,9 @@ } }, "node_modules/@eslint/css-tree": { - "version": "3.6.8", - "resolved": "https://registry.npmjs.org/@eslint/css-tree/-/css-tree-3.6.8.tgz", - "integrity": "sha512-s0f40zY7dlMp8i0Jf0u6l/aSswS0WRAgkhgETgiCJRcxIWb4S/Sp9uScKHWbkM3BnoFLbJbmOYk5AZUDFVxaLA==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@eslint/css-tree/-/css-tree-3.6.9.tgz", + "integrity": "sha512-3D5/OHibNEGk+wKwNwMbz63NMf367EoR4mVNNpxddCHKEb2Nez7z62J2U6YjtErSsZDoY0CsccmoUpdEbkogNA==", "license": "MIT", "dependencies": { "mdn-data": "2.23.0", @@ -1421,20 +1428,20 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", + "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", + "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", + "minimatch": "^3.1.3", "strip-json-comments": "^3.1.1" }, "engines": { @@ -1444,6 +1451,13 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -1466,9 +1480,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -1479,9 +1493,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", + "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", "dev": true, "license": "MIT", "engines": { @@ -1516,42 +1530,53 @@ } }, "node_modules/@html-eslint/parser": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@html-eslint/parser/-/parser-0.54.0.tgz", - "integrity": "sha512-ia3I/6jf87679pUrhIDKSgddKbw9GLkvO86fYt7tJQHHRQu+zySErIxuI2b941oeovzOq10dTpC5Hp41qbvPgg==", + "version": "0.46.2", + "resolved": "https://registry.npmjs.org/@html-eslint/parser/-/parser-0.46.2.tgz", + "integrity": "sha512-qjOaNuLqa5rP4awi3269LXul3sB7YeWtpc3Bk8p5ZGxvEovTagV0V5csOnBw3gNhnRrE68F8Gr/IduszV6gvPg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint/css-tree": "^3.6.8", - "@html-eslint/template-syntax-parser": "^0.54.0", - "@html-eslint/types": "^0.54.0", - "css-tree": "^3.1.0", - "es-html-parser": "0.3.1" + "@html-eslint/template-syntax-parser": "^0.46.2", + "@html-eslint/types": "^0.46.0", + "es-html-parser": "0.3.0" } }, + "node_modules/@html-eslint/parser/node_modules/es-html-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/es-html-parser/-/es-html-parser-0.3.0.tgz", + "integrity": "sha512-86KsmbP/zqoG7LIoXiCXv7KFDVbF9N9SCpavmRzeKtCODmF+LyLEBt3UPSlcntNQEwGGe0xn4ZED186rLmwKSw==", + "dev": true, + "license": "MIT" + }, "node_modules/@html-eslint/template-syntax-parser": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@html-eslint/template-syntax-parser/-/template-syntax-parser-0.54.0.tgz", - "integrity": "sha512-7mDM4AWqz42FHwnOt8Lu5xqovaZHlEuBrmwNrMg6VwC9TPaLVyh4j3zNzNnM6tjftaXZzverJup39zGB8mvXjg==", + "version": "0.46.2", + "resolved": "https://registry.npmjs.org/@html-eslint/template-syntax-parser/-/template-syntax-parser-0.46.2.tgz", + "integrity": "sha512-1F7ipV/QMpKyYW+joVSQRU8nb8zsC5KhHzNflp0muUoJhhmxxtXuLnovHkCqU1oA1iD9sL5finZ4OJTufE5RGw==", "dev": true, "license": "MIT", "dependencies": { - "@html-eslint/types": "^0.54.0" + "@html-eslint/types": "^0.46.0" } }, "node_modules/@html-eslint/types": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@html-eslint/types/-/types-0.54.0.tgz", - "integrity": "sha512-bfJolxay0POMYaFWTCH1MBitEaxIEKZOoROGOLZiRBaPvQrzhwYQktuyt5X1PcHqUB4HwEtYgSdpjYGT4JbrvA==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@html-eslint/types/-/types-0.46.0.tgz", + "integrity": "sha512-vEXvucymWh4DVmnpg0oeg2PiGzjRiVLqLwOeJRc4iEbOUo77+VnsSHPOUZOtoeANfgW7abX4YQtOCCIJzbxu0A==", "dev": true, "license": "MIT", "dependencies": { - "@types/css-tree": "^2.3.11", "@types/estree": "^1.0.6", - "es-html-parser": "0.3.1", - "eslint": "^9.39.1" + "es-html-parser": "0.3.0", + "eslint": "^9.19.0" } }, + "node_modules/@html-eslint/types/node_modules/es-html-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/es-html-parser/-/es-html-parser-0.3.0.tgz", + "integrity": "sha512-86KsmbP/zqoG7LIoXiCXv7KFDVbF9N9SCpavmRzeKtCODmF+LyLEBt3UPSlcntNQEwGGe0xn4ZED186rLmwKSw==", + "dev": true, + "license": "MIT" + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -2002,9 +2027,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], @@ -2016,9 +2041,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], @@ -2030,9 +2055,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], @@ -2044,9 +2069,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], @@ -2058,9 +2083,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], @@ -2072,9 +2097,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], @@ -2086,9 +2111,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], @@ -2100,9 +2125,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], @@ -2114,9 +2139,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], @@ -2128,9 +2153,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], @@ -2142,9 +2167,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "cpu": [ "loong64" ], @@ -2156,9 +2181,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], @@ -2170,9 +2195,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "cpu": [ "ppc64" ], @@ -2184,9 +2209,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], @@ -2198,9 +2223,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "cpu": [ "riscv64" ], @@ -2212,9 +2237,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], @@ -2226,9 +2251,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], @@ -2240,9 +2265,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], @@ -2254,9 +2279,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], @@ -2268,9 +2293,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", "cpu": [ "x64" ], @@ -2282,9 +2307,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "cpu": [ "arm64" ], @@ -2296,9 +2321,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], @@ -2310,9 +2335,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], @@ -2324,9 +2349,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "cpu": [ "x64" ], @@ -2338,9 +2363,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], @@ -2352,9 +2377,9 @@ ] }, "node_modules/@schoero/configs": { - "version": "1.5.27", - "resolved": "https://registry.npmjs.org/@schoero/configs/-/configs-1.5.27.tgz", - "integrity": "sha512-3UlEd6klrJWwHMH4RWxy0jEi4e3PfkC8+V5dGFnRrs5aJ3ua3XdD2qNSRWxyhYFKzqYj8OPv/Gm1UlfGpAvREA==", + "version": "1.5.28", + "resolved": "https://registry.npmjs.org/@schoero/configs/-/configs-1.5.28.tgz", + "integrity": "sha512-g7zLs6F8dE5gGRVaaklprCj0yqLosrSJhgJGJv39tnVB8SOpGz9az3foS1AmTbXTLcBjpC8n0b8ChhBpH/v/2A==", "dev": true, "license": "MIT", "dependencies": { @@ -2394,7 +2419,7 @@ "yaml-eslint-parser": "^1.3.2" }, "optionalDependencies": { - "eslint-plugin-better-tailwindcss": "^4.1.0" + "eslint-plugin-better-tailwindcss": "^4.3.0" }, "peerDependencies": { "@stylistic/eslint-plugin": "^5.6.1", @@ -2402,11 +2427,11 @@ "cspell": "^9.4.0", "eslint": "^9.39.1", "markdownlint": "^0.40.0", - "oxlint": "^1.35.0", - "oxlint-tsgolint": "^0.11.1", + "oxlint": "^1.50.0", + "oxlint-tsgolint": "^0.14.2", "unwritten": "^0.2.14", - "vite": "^7.2.6", - "vitest": "^4.0.15" + "vite": "^7.3.1", + "vitest": "^4.0.18" }, "peerDependenciesMeta": { "@stylistic/eslint-plugin": { @@ -2475,14 +2500,14 @@ "license": "MIT" }, "node_modules/@stylistic/eslint-plugin": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.8.0.tgz", - "integrity": "sha512-WNPVF/FfBAjyi3OA7gok8swRiImNLKI4dmV3iK/GC/0xSJR7eCzBFsw9hLZVgb1+MYNLy7aDsjohxN1hA/FIfQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.9.0.tgz", + "integrity": "sha512-FqqSkvDMYJReydrMhlugc71M76yLLQWNfmGq+SIlLa7N3kHp8Qq8i2PyWrVNAfjOyOIY+xv9XaaYwvVW7vroMA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/types": "^8.54.0", + "@typescript-eslint/types": "^8.56.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "estraverse": "^5.3.0", @@ -2492,13 +2517,13 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": ">=9.0.0" + "eslint": "^9.0.0 || ^10.0.0" } }, "node_modules/@sveltejs/acorn-typescript": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", - "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.9.tgz", + "integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2527,13 +2552,6 @@ "assertion-error": "^2.0.1" } }, - "node_modules/@types/css-tree": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/@types/css-tree/-/css-tree-2.3.11.tgz", - "integrity": "sha512-aEokibJOI77uIlqoBOkVbaQGC9zII0A+JH1kcTNKW2CwyYWD8KM6qdo+4c77wD3wZOQfJuNWAr9M4hdk+YhDIg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -2607,15 +2625,22 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/unist": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", @@ -2624,18 +2649,18 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", - "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", + "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/type-utils": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/type-utils": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -2648,23 +2673,23 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.55.0", - "eslint": "^8.57.0 || ^9.0.0", + "@typescript-eslint/parser": "^8.56.1", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", + "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3" }, "engines": { @@ -2675,19 +2700,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", + "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.55.0", - "@typescript-eslint/types": "^8.55.0", + "@typescript-eslint/tsconfig-utils": "^8.56.1", + "@typescript-eslint/types": "^8.56.1", "debug": "^4.4.3" }, "engines": { @@ -2702,14 +2727,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2720,9 +2745,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", + "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", "dev": true, "license": "MIT", "engines": { @@ -2737,15 +2762,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", - "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", + "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/utils": "8.55.0", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -2757,14 +2782,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", "engines": { @@ -2776,18 +2801,18 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.55.0", - "@typescript-eslint/tsconfig-utils": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3", - "minimatch": "^9.0.5", + "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" @@ -2804,17 +2829,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", - "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0" + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2824,19 +2849,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2846,6 +2871,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@unrs/resolver-binding-android-arm-eabi": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", @@ -3249,9 +3287,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "peer": true, @@ -3273,9 +3311,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -3362,9 +3400,9 @@ "license": "Python-2.0" }, "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", + "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3399,9 +3437,9 @@ } }, "node_modules/astro-eslint-parser": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/astro-eslint-parser/-/astro-eslint-parser-1.2.2.tgz", - "integrity": "sha512-JepyLROIad6f44uyqMF6HKE2QbunNzp3mYKRcPoDGt0QkxXmH222FAFC64WTyQu2Kg8NNEXHTN/sWuUId9sSxw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/astro-eslint-parser/-/astro-eslint-parser-1.3.0.tgz", + "integrity": "sha512-aOLc/aDR7lTWAHlytEefwn4Y6qs6uMr69DZvUx2A1AOAZsWhGB/paiRWPtVchh9wzMvLeqr+DkbENhVreVr9AQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3472,20 +3510,26 @@ } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", "dev": true, "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/binary-extensions": { @@ -3502,13 +3546,16 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -3638,9 +3685,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001769", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", - "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "version": "1.0.30001774", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", + "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", "dev": true, "funding": [ { @@ -3976,33 +4023,33 @@ } }, "node_modules/cspell": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-9.6.4.tgz", - "integrity": "sha512-rZJmgcyBGKX3KcJ3KC9JYVHeKhDEVbmCheSp8eRGMYw6MCG9o7FHqQjGA/u4lEu4A0psr7ACP/5ym/QHyntRbA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-9.7.0.tgz", + "integrity": "sha512-ftxOnkd+scAI7RZ1/ksgBZRr0ouC7QRKtPQhD/PbLTKwAM62sSvRhE1bFsuW3VKBn/GilWzTjkJ40WmnDqH5iQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-json-reporter": "9.6.4", - "@cspell/cspell-performance-monitor": "9.6.4", - "@cspell/cspell-pipe": "9.6.4", - "@cspell/cspell-types": "9.6.4", - "@cspell/cspell-worker": "9.6.4", - "@cspell/dynamic-import": "9.6.4", - "@cspell/url": "9.6.4", + "@cspell/cspell-json-reporter": "9.7.0", + "@cspell/cspell-performance-monitor": "9.7.0", + "@cspell/cspell-pipe": "9.7.0", + "@cspell/cspell-types": "9.7.0", + "@cspell/cspell-worker": "9.7.0", + "@cspell/dynamic-import": "9.7.0", + "@cspell/url": "9.7.0", "ansi-regex": "^6.2.2", "chalk": "^5.6.2", "chalk-template": "^1.1.2", "commander": "^14.0.3", - "cspell-config-lib": "9.6.4", - "cspell-dictionary": "9.6.4", - "cspell-gitignore": "9.6.4", - "cspell-glob": "9.6.4", - "cspell-io": "9.6.4", - "cspell-lib": "9.6.4", + "cspell-config-lib": "9.7.0", + "cspell-dictionary": "9.7.0", + "cspell-gitignore": "9.7.0", + "cspell-glob": "9.7.0", + "cspell-io": "9.7.0", + "cspell-lib": "9.7.0", "fast-json-stable-stringify": "^2.1.0", "flatted": "^3.3.3", - "semver": "^7.7.3", + "semver": "^7.7.4", "tinyglobby": "^0.2.15" }, "bin": { @@ -4017,13 +4064,13 @@ } }, "node_modules/cspell-config-lib": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-9.6.4.tgz", - "integrity": "sha512-MecJNR9bIlcPBhyZFsXP6Q2n8qQ2IR9N9HiIz0yh0gBNVydp3LR5JITP5Ji8m7hexmZzVeoXms/dVN74XbS95g==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-9.7.0.tgz", + "integrity": "sha512-pguh8A3+bSJ1OOrKCiQan8bvaaY125de76OEFz7q1Pq309lIcDrkoL/W4aYbso/NjrXaIw6OjkgPMGRBI/IgGg==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-types": "9.6.4", + "@cspell/cspell-types": "9.7.0", "comment-json": "^4.5.1", "smol-toml": "^1.6.0", "yaml": "^2.8.2" @@ -4033,16 +4080,16 @@ } }, "node_modules/cspell-dictionary": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-9.6.4.tgz", - "integrity": "sha512-Ik9ZQVqV/fJfMt5X6IkC7yHGVH46/qjcqCNWwrMSwvROLM3SemNxxZoLvh0wi0GXz9WF1lHcxLJVdeKUk6QB8g==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-9.7.0.tgz", + "integrity": "sha512-k/Wz0so32+0QEqQe21V9m4BNXM5ZN6lz3Ix/jLCbMxFIPl6wT711ftjOWIEMFhvUOP0TWXsbzcuE9mKtS5mTig==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-performance-monitor": "9.6.4", - "@cspell/cspell-pipe": "9.6.4", - "@cspell/cspell-types": "9.6.4", - "cspell-trie-lib": "9.6.4", + "@cspell/cspell-performance-monitor": "9.7.0", + "@cspell/cspell-pipe": "9.7.0", + "@cspell/cspell-types": "9.7.0", + "cspell-trie-lib": "9.7.0", "fast-equals": "^6.0.0" }, "engines": { @@ -4050,15 +4097,15 @@ } }, "node_modules/cspell-gitignore": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-9.6.4.tgz", - "integrity": "sha512-a8asE9BsjJgJ506WUGh5VHrTdVEE8hWELjCJB2atPrW6iY5e4aCIugy0gkRC1ZH9/TseadlmMLrFzHUkJUjzsg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-9.7.0.tgz", + "integrity": "sha512-MtoYuH4ah4K6RrmaF834npMcRsTKw0658mC6yvmBacUQOmwB/olqyuxF3fxtbb55HDb7cXDQ35t1XuwwGEQeZw==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "9.6.4", - "cspell-glob": "9.6.4", - "cspell-io": "9.6.4" + "@cspell/url": "9.7.0", + "cspell-glob": "9.7.0", + "cspell-io": "9.7.0" }, "bin": { "cspell-gitignore": "bin.mjs" @@ -4068,13 +4115,13 @@ } }, "node_modules/cspell-glob": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-9.6.4.tgz", - "integrity": "sha512-253VrjbR8QU15h8GtpDQLX5Ti9uNSuNod2T7f8YEElQOb9I/kUXoCj3Cq4P390IC99klqSHIDxHsxd77ex19lA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-9.7.0.tgz", + "integrity": "sha512-LUeAoEsoCJ+7E3TnUmWBscpVQOmdwBejMlFn0JkXy6LQzxrybxXBKf65RSdIv1o5QtrhQIMa358xXYQG0sv/tA==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "9.6.4", + "@cspell/url": "9.7.0", "picomatch": "^4.0.3" }, "engines": { @@ -4082,14 +4129,14 @@ } }, "node_modules/cspell-grammar": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-9.6.4.tgz", - "integrity": "sha512-rvZyTB45/XSRWx7eAsrvTTAZvBTREr/2G2JWVMdqrptFyq1XReAKHhw/x1HJkNgWC9LKAK3bVQJpjLsNG37U9A==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-9.7.0.tgz", + "integrity": "sha512-oEYME+7MJztfVY1C06aGcJgEYyqBS/v/ETkQGPzf/c6ObSAPRcUbVtsXZgnR72Gru9aBckc70xJcD6bELdoWCA==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "9.6.4", - "@cspell/cspell-types": "9.6.4" + "@cspell/cspell-pipe": "9.7.0", + "@cspell/cspell-types": "9.7.0" }, "bin": { "cspell-grammar": "bin.mjs" @@ -4099,43 +4146,43 @@ } }, "node_modules/cspell-io": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-9.6.4.tgz", - "integrity": "sha512-bmvJ4yn5QK2FZWTkZA4sx2qJqIi8BrUUUV7W209drSwkYjhJtXqP0RyF6Qx4Xuu2D1s0UilEtO5Jd+E9UJkQ6w==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-9.7.0.tgz", + "integrity": "sha512-V7x0JHAUCcJPRCH8c0MQkkaKmZD2yotxVyrNEx2SZTpvnKrYscLEnUUTWnGJIIf9znzISqw116PLnYu2c+zd6Q==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-service-bus": "9.6.4", - "@cspell/url": "9.6.4" + "@cspell/cspell-service-bus": "9.7.0", + "@cspell/url": "9.7.0" }, "engines": { "node": ">=20" } }, "node_modules/cspell-lib": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-9.6.4.tgz", - "integrity": "sha512-fUodKcIHTwvokuowB25XyFzBxlk73yj1QRw2por3BxDz9fAim1zAIohAPAnGuzj3LowYnTMjHLYE7RFDUSxy5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspell/cspell-bundled-dicts": "9.6.4", - "@cspell/cspell-performance-monitor": "9.6.4", - "@cspell/cspell-pipe": "9.6.4", - "@cspell/cspell-resolver": "9.6.4", - "@cspell/cspell-types": "9.6.4", - "@cspell/dynamic-import": "9.6.4", - "@cspell/filetypes": "9.6.4", - "@cspell/rpc": "9.6.4", - "@cspell/strong-weak-map": "9.6.4", - "@cspell/url": "9.6.4", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-9.7.0.tgz", + "integrity": "sha512-aTx/aLRpnuY1RJnYAu+A8PXfm1oIUdvAQ4W9E66bTgp1LWI+2G2++UtaPxRIgI0olxE9vcXqUnKpjOpO+5W9bQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/cspell-bundled-dicts": "9.7.0", + "@cspell/cspell-performance-monitor": "9.7.0", + "@cspell/cspell-pipe": "9.7.0", + "@cspell/cspell-resolver": "9.7.0", + "@cspell/cspell-types": "9.7.0", + "@cspell/dynamic-import": "9.7.0", + "@cspell/filetypes": "9.7.0", + "@cspell/rpc": "9.7.0", + "@cspell/strong-weak-map": "9.7.0", + "@cspell/url": "9.7.0", "clear-module": "^4.1.2", - "cspell-config-lib": "9.6.4", - "cspell-dictionary": "9.6.4", - "cspell-glob": "9.6.4", - "cspell-grammar": "9.6.4", - "cspell-io": "9.6.4", - "cspell-trie-lib": "9.6.4", + "cspell-config-lib": "9.7.0", + "cspell-dictionary": "9.7.0", + "cspell-glob": "9.7.0", + "cspell-grammar": "9.7.0", + "cspell-io": "9.7.0", + "cspell-trie-lib": "9.7.0", "env-paths": "^4.0.0", "gensequence": "^8.0.8", "import-fresh": "^3.3.1", @@ -4149,39 +4196,18 @@ } }, "node_modules/cspell-trie-lib": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-9.6.4.tgz", - "integrity": "sha512-JKwyRtyybbaTrixwI1OgU5Hvva2Z5zHVWl92WBa9U7KijAyiD/Ehp3T3DCYuBwGks7egw7MgWPySkXXnpme6mw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-9.7.0.tgz", + "integrity": "sha512-a2YqmcraL3g6I/4gY7SYWEZfP73oLluUtxO7wxompk/kOG2K1FUXyQfZXaaR7HxVv10axT1+NrjhOmXpfbI6LA==", "dev": true, "license": "MIT", "engines": { "node": ">=20" }, "peerDependencies": { - "@cspell/cspell-types": "9.6.4" + "@cspell/cspell-types": "9.7.0" } }, - "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-tree/node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -4196,9 +4222,9 @@ } }, "node_modules/daisyui": { - "version": "5.5.18", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.5.18.tgz", - "integrity": "sha512-VVzjpOitMGB6DWIBeRSapbjdOevFqyzpk9u5Um6a4tyId3JFrU5pbtF0vgjXDth76mJZbueN/j9Ok03SPrh/og==", + "version": "5.5.19", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.5.19.tgz", + "integrity": "sha512-pbFAkl1VCEh/MPCeclKL61I/MqRIFFhNU7yiXoDDRapXN4/qNCoMxeCCswyxEEhqL5eiTTfwHvucFtOE71C9sA==", "dev": true, "license": "MIT", "funding": { @@ -4312,9 +4338,9 @@ "license": "MIT" }, "node_modules/devalue": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", + "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", "dev": true, "license": "MIT" }, @@ -4366,9 +4392,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4379,9 +4405,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.286", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "version": "1.5.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", + "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", "dev": true, "license": "ISC" }, @@ -4507,9 +4533,9 @@ } }, "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", + "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", "dev": true, "license": "MIT", "peer": true, @@ -4520,7 +4546,7 @@ "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", + "@eslint/js": "9.39.3", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -4609,9 +4635,9 @@ } }, "node_modules/eslint-json-compat-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz", - "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.2.tgz", + "integrity": "sha512-KcTUifi8VSSHkrOY0FzB7smuTZRU9T2nCrcCy6k2b+Q77+uylBQVIxN4baVCIWvWJEpud+IsrYgco4JJ6io05g==", "dev": true, "license": "MIT", "dependencies": { @@ -4622,7 +4648,7 @@ }, "peerDependencies": { "eslint": "*", - "jsonc-eslint-parser": "^2.4.0" + "jsonc-eslint-parser": "^2.4.0 || ^3.0.0" }, "peerDependenciesMeta": { "@eslint/json": { @@ -4635,9 +4661,9 @@ "link": true }, "node_modules/eslint-plugin-import-newlines": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.4.0.tgz", - "integrity": "sha512-+Cz1x2xBLtI9gJbmuYEpvY7F8K75wskBmJ7rk4VRObIJo+jklUJaejFJgtnWeL0dCFWabGEkhausrikXaNbtoQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.4.1.tgz", + "integrity": "sha512-C9PQEJ4jS5tKoE9k0yY/5j4l1bxkxmVjrWvAFc1EToCnuQuwZGl1kS1JBlqYNF8svp0pnXLlkSdjByYa3JALcg==", "dev": true, "license": "MIT", "bin": { @@ -4647,7 +4673,7 @@ "node": ">=10.0.0" }, "peerDependencies": { - "eslint": ">=6.0.0" + "eslint": ">=6.0.0 < 10.0.0" } }, "node_modules/eslint-plugin-import-x": { @@ -4727,9 +4753,9 @@ } }, "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", - "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4740,15 +4766,15 @@ } }, "node_modules/eslint-plugin-jsdoc/node_modules/espree": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.0.tgz", - "integrity": "sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz", + "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^5.0.0" + "eslint-visitor-keys": "^5.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -5055,6 +5081,22 @@ "node": ">= 4" } }, + "node_modules/eslint-plugin-vitest/node_modules/minimatch": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/eslint-plugin-vitest/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -5103,22 +5145,27 @@ } }, "node_modules/eslint-scope": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.0.tgz", - "integrity": "sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@types/esrecurse": "^4.3.1", - "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" }, "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, "node_modules/eslint-visitor-keys": { @@ -5134,6 +5181,13 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -5190,9 +5244,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -5516,9 +5570,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "dev": true, "license": "MIT", "engines": { @@ -5573,16 +5627,16 @@ } }, "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-5.0.0.tgz", + "integrity": "sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==", "dev": true, "license": "MIT", "dependencies": { - "ini": "4.1.1" + "ini": "6.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5753,13 +5807,13 @@ } }, "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/is-alphabetical": { @@ -5931,9 +5985,9 @@ } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -6044,7 +6098,6 @@ "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^3.0.0", @@ -6097,9 +6150,9 @@ "license": "MIT" }, "node_modules/katex": { - "version": "0.16.28", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.28.tgz", - "integrity": "sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==", + "version": "0.16.33", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.33.tgz", + "integrity": "sha512-q3N5u+1sY9Bu7T4nlXoiRBXWfwSefNGoKeOwekV+gw0cAXQlz2Ww6BLcmBxVDeXBMUDQv6fK5bcNaJLxob3ZQA==", "dev": true, "funding": [ "https://opencollective.com/katex", @@ -7018,16 +7071,16 @@ } }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7168,9 +7221,9 @@ } }, "node_modules/nypm/node_modules/citty": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.0.tgz", - "integrity": "sha512-8csy5IBFI2ex2hTVpaHN2j+LNE199AgiI7y4dMintrr8i0lQiFn+0AWMZrWdHKIgMOer65f8IThysYhoReqjWA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.1.tgz", + "integrity": "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==", "dev": true, "license": "MIT" }, @@ -7693,9 +7746,9 @@ } }, "node_modules/rollup": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "dev": true, "license": "MIT", "dependencies": { @@ -7709,31 +7762,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.57.1", - "@rollup/rollup-android-arm64": "4.57.1", - "@rollup/rollup-darwin-arm64": "4.57.1", - "@rollup/rollup-darwin-x64": "4.57.1", - "@rollup/rollup-freebsd-arm64": "4.57.1", - "@rollup/rollup-freebsd-x64": "4.57.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", - "@rollup/rollup-linux-arm-musleabihf": "4.57.1", - "@rollup/rollup-linux-arm64-gnu": "4.57.1", - "@rollup/rollup-linux-arm64-musl": "4.57.1", - "@rollup/rollup-linux-loong64-gnu": "4.57.1", - "@rollup/rollup-linux-loong64-musl": "4.57.1", - "@rollup/rollup-linux-ppc64-gnu": "4.57.1", - "@rollup/rollup-linux-ppc64-musl": "4.57.1", - "@rollup/rollup-linux-riscv64-gnu": "4.57.1", - "@rollup/rollup-linux-riscv64-musl": "4.57.1", - "@rollup/rollup-linux-s390x-gnu": "4.57.1", - "@rollup/rollup-linux-x64-gnu": "4.57.1", - "@rollup/rollup-linux-x64-musl": "4.57.1", - "@rollup/rollup-openbsd-x64": "4.57.1", - "@rollup/rollup-openharmony-arm64": "4.57.1", - "@rollup/rollup-win32-arm64-msvc": "4.57.1", - "@rollup/rollup-win32-ia32-msvc": "4.57.1", - "@rollup/rollup-win32-x64-gnu": "4.57.1", - "@rollup/rollup-win32-x64-msvc": "4.57.1", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, @@ -7878,9 +7931,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, @@ -7989,9 +8042,9 @@ } }, "node_modules/svelte": { - "version": "5.50.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.50.1.tgz", - "integrity": "sha512-/Jlom4ddkISyVHXpM2O5dXP9pYnaiFrVQzPbIL1/pEoOa77ZunCb6nDgUCTNCQ/X3t64z9ukrK6R+BbB3kPR3A==", + "version": "5.53.3", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.53.3.tgz", + "integrity": "sha512-pRUBr6j6uQDgBi208gHnGRMykw0Rf2Yr1HmLyRucsvcaYgIUxswJkT93WZJflsmezu5s8Lq+q78EoyLv2yaFCg==", "dev": true, "license": "MIT", "dependencies": { @@ -7999,11 +8052,12 @@ "@jridgewell/sourcemap-codec": "^1.5.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", + "@types/trusted-types": "^2.0.7", "acorn": "^8.12.1", - "aria-query": "^5.3.1", + "aria-query": "5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", - "devalue": "^5.6.2", + "devalue": "^5.6.3", "esm-env": "^1.2.1", "esrap": "^2.2.2", "is-reference": "^3.0.3", @@ -8016,9 +8070,9 @@ } }, "node_modules/svelte-eslint-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.4.1.tgz", - "integrity": "sha512-1eqkfQ93goAhjAXxZiu1SaKI9+0/sxp4JIWQwUpsz7ybehRE5L8dNuz7Iry7K22R47p5/+s9EM+38nHV2OlgXA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.5.0.tgz", + "integrity": "sha512-9Pzpwh/CSE/PuYMBYZhazaZefVPC3RuVPv79wWkuN0c+XrfGutMpLgumUkh/9PKqkIQAc4tj/aGyNqN0phYDJg==", "dev": true, "license": "MIT", "dependencies": { @@ -8031,7 +8085,7 @@ }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0", - "pnpm": "10.24.0" + "pnpm": "10.30.2" }, "funding": { "url": "https://github.com/sponsors/ota-meshi" @@ -8091,9 +8145,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz", + "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==", "dev": true, "license": "MIT" }, @@ -8450,9 +8504,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, @@ -8682,9 +8736,9 @@ } }, "node_modules/vite-tsconfig-paths": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.0.tgz", - "integrity": "sha512-kpd3sY9glHIDaq4V/Tlc1Y8WaKtutoc3B525GHxEVKWX42FKfQsXvjFOemu1I8VIN8pNbrMLWVTbW79JaRUxKg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.1.tgz", + "integrity": "sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==", "dev": true, "license": "MIT", "dependencies": { @@ -8797,16 +8851,16 @@ "license": "MIT" }, "node_modules/vue-eslint-parser": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz", - "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.4.0.tgz", + "integrity": "sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==", "dev": true, "license": "MIT", "dependencies": { "debug": "^4.4.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.2.0 || ^9.0.0", + "eslint-visitor-keys": "^4.2.0 || ^5.0.0", + "espree": "^10.3.0 || ^11.0.0", "esquery": "^1.6.0", "semver": "^7.6.3" }, @@ -8817,21 +8871,23 @@ "url": "https://github.com/sponsors/mysticatea" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0" } }, "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz", + "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" diff --git a/package.json b/package.json index 07b2640..9d6a150 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ } }, "dependencies": { - "@eslint/css-tree": "^3.6.8", + "@eslint/css-tree": "^3.6.9", "@valibot/to-json-schema": "^1.5.0", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", @@ -88,33 +88,33 @@ "valibot": "^1.2.0" }, "devDependencies": { - "@angular/compiler": "^21.1.3", - "@angular-eslint/template-parser": "^21.2.0", + "@angular-eslint/template-parser": "^12.7.0", + "@angular/compiler": "^21.1.5", "@eslint/css": "^0.14.1", - "@html-eslint/parser": "^0.54.0", + "@html-eslint/parser": "^0.46.0", "@oxc-node/core": "^0.0.35", - "@schoero/configs": "^1.5.27", + "@schoero/configs": "^1.0.8", "@types/estree-jsx": "^1.0.5", - "@types/node": "^25.2.3", - "@typescript-eslint/parser": "^8.55.0", - "astro-eslint-parser": "^1.2.2", + "@types/node": "^25.3.0", + "@typescript-eslint/parser": "^8.56.1", + "astro-eslint-parser": "^1.3.0", "changelogen": "^0.6.2", - "cspell": "^9.6.4", - "daisyui": "^5.5.18", + "cspell": "^9.7.0", + "daisyui": "^5.5.19", "es-html-parser": "^0.3.1", - "eslint": "^9.39.2", + "eslint": "^9.39.3", "eslint-plugin-better-tailwindcss": "file:./", "json-schema": "^0.4.0", "markdownlint": "^0.40.0", "prettier": "^3.8.1", - "svelte": "^5.50.1", - "svelte-eslint-parser": "^1.4.1", - "tailwindcss": "^4.1.18", + "svelte": "^5.53.3", + "svelte-eslint-parser": "^1.5.0", + "tailwindcss": "^4.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3", "vite-node": "^5.3.0", "vitest": "^4.0.18", - "vue-eslint-parser": "^10.2.0" + "vue-eslint-parser": "^10.4.0" }, "keywords": [ "eslint", From 1600eb82cab4abf5dd66a554a950f416b4eddc69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:09:30 +0100 Subject: [PATCH 03/16] docs: clean up documentation --- docs/parsers/angular.md | 8 +++++--- docs/parsers/astro.md | 8 +++++--- docs/parsers/css.md | 6 ++++-- docs/parsers/html.md | 8 ++++++-- docs/parsers/javascript.md | 16 ++++++++++++---- docs/parsers/jsx.md | 18 ++++++++++++++---- docs/parsers/svelte.md | 8 ++++++-- docs/parsers/tsx.md | 12 ++++++++++-- docs/parsers/typescript.md | 16 +++++++++++++--- docs/parsers/vue.md | 8 ++++++-- 10 files changed, 81 insertions(+), 27 deletions(-) diff --git a/docs/parsers/angular.md b/docs/parsers/angular.md index abf82f1..30069a7 100644 --- a/docs/parsers/angular.md +++ b/docs/parsers/angular.md @@ -7,8 +7,6 @@ ## ESLint -### Flat config - To use ESLint with Angular, install [Angular ESLint](https://github.com/angular-eslint/angular-eslint?tab=readme-ov-file#quick-start) and [TypeScript ESLint](https://typescript-eslint.io/getting-started). You can follow the [flat config](https://github.com/angular-eslint/angular-eslint/blob/main/docs/CONFIGURING_FLAT_CONFIG.md) setup, which includes rules from the Angular ESLint package or you can add the parser directly by following the steps below. ```sh @@ -24,8 +22,12 @@ To lint Tailwind CSS classes in Angular files, ensure that:
+### Flat config + Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -80,7 +82,7 @@ export default defineConfig([
- Legacy config +

Legacy config


diff --git a/docs/parsers/astro.md b/docs/parsers/astro.md index bcbddaa..bcbb0a8 100644 --- a/docs/parsers/astro.md +++ b/docs/parsers/astro.md @@ -7,8 +7,6 @@ ## ESLint -### Flat config - To use ESLint with Astro files, first install the [astro-eslint-parser](https://github.com/ota-meshi/astro-eslint-parser) and optionally [TypeScript ESLint](https://typescript-eslint.io/getting-started). Then, configure ESLint to use this parser for Astro files. ```sh @@ -24,8 +22,12 @@ To lint Tailwind CSS classes in Astro files, ensure that:
+### Flat config + Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -69,7 +71,7 @@ export default defineConfig({
- Legacy config +

Legacy config


diff --git a/docs/parsers/css.md b/docs/parsers/css.md index d7aa7a0..e25231c 100644 --- a/docs/parsers/css.md +++ b/docs/parsers/css.md @@ -5,6 +5,8 @@
+## ESLint + To use ESLint with CSS files containing Tailwind CSS `@apply` directives, first install the [@eslint/css](https://github.com/eslint/css) plugin and the [tailwind-csstree](https://www.npmjs.com/package/tailwind-csstree) custom syntax. ```sh @@ -20,12 +22,12 @@ To lint Tailwind CSS classes in CSS files, ensure that:
-## ESLint - ### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js diff --git a/docs/parsers/html.md b/docs/parsers/html.md index 8905e8c..15ce276 100644 --- a/docs/parsers/html.md +++ b/docs/parsers/html.md @@ -5,6 +5,8 @@
+## ESLint + To use ESLint with HTML files, first install the [@html-eslint/parser](https://github.com/yeonjuan/html-eslint/tree/main/packages/parser). ```sh @@ -19,10 +21,12 @@ To lint Tailwind CSS classes in HTML files, ensure that:
-## Flat config +### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -61,7 +65,7 @@ export default defineConfig({
- Legacy config +

Legacy config


diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index dfa8bd6..d859141 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -5,19 +5,19 @@
+## ESLint + To lint Tailwind CSS classes in JavaScript files, ensure that: - The plugin is added to your configuration. - The `settings` object contains the correct Tailwind CSS configuration paths. -
- -## ESLint - ### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -87,6 +87,14 @@ export default defineConfig({ The Oxlint configuration currently requires to set up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). +To lint Tailwind CSS classes in JavaScript files, ensure that: + +- The plugin is added to the `jsPlugins` array. +- The `settings` object contains the correct Tailwind CSS configuration paths. +- All relevant rules are added to the `rules` object. + +
+ ```ts // oxlint.config.ts diff --git a/docs/parsers/jsx.md b/docs/parsers/jsx.md index 1b17b22..73f8e36 100644 --- a/docs/parsers/jsx.md +++ b/docs/parsers/jsx.md @@ -5,20 +5,22 @@
+## ESLint + To lint Tailwind CSS classes in JSX files, ensure that: -- `jsx` parsing is enabled. +- `jsx` parsing is enabled in language options. - The plugin is added to your configuration. - The `settings` object contains the correct Tailwind CSS configuration paths.
-## ESLint - ### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -58,7 +60,7 @@ export default defineConfig({
- Legacy config +

Legacy config


@@ -105,6 +107,14 @@ export default defineConfig({ The Oxlint configuration currently requires to set up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). +To lint Tailwind CSS classes in JSX files, ensure that: + +- The plugin is added to the `jsPlugins` array. +- The `settings` object contains the correct Tailwind CSS configuration paths. +- All relevant rules are added to the `rules` object. + +
+ ```ts // oxlint.config.ts diff --git a/docs/parsers/svelte.md b/docs/parsers/svelte.md index 74110d8..cb514a3 100644 --- a/docs/parsers/svelte.md +++ b/docs/parsers/svelte.md @@ -5,6 +5,8 @@
+## ESLint + To use ESLint with Svelte files, first install the [svelte-eslint-parser](https://github.com/sveltejs/svelte-eslint-parser). ```sh @@ -19,10 +21,12 @@ To lint Tailwind CSS classes in Svelte files, ensure that:
-## Flat config +### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -61,7 +65,7 @@ export default defineConfig({
- Legacy config +

Legacy config


diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index f4579df..2e00d55 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -18,7 +18,7 @@ npm i -D typescript-eslint To lint Tailwind CSS classes in TSX files, ensure that: - The `typescript-eslint` package is installed and configured. -- `jsx` parsing is enabled. +- `jsx` parsing is enabled in language options. - The plugin is added to your configuration. - The `settings` object contains the correct Tailwind CSS configuration paths. @@ -81,7 +81,7 @@ export default defineConfig([
- Legacy config +

Legacy config


@@ -143,6 +143,14 @@ export default defineConfig([ The Oxlint configuration currently requires to set up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). +To lint Tailwind CSS classes in TSX files, ensure that: + +- The plugin is added to the `jsPlugins` array. +- The `settings` object contains the correct Tailwind CSS configuration paths. +- All relevant rules are added to the `rules` object. + +
+ ```ts // oxlint.config.ts diff --git a/docs/parsers/typescript.md b/docs/parsers/typescript.md index 6b9d1eb..1fe4c6e 100644 --- a/docs/parsers/typescript.md +++ b/docs/parsers/typescript.md @@ -7,8 +7,6 @@ ## ESLint -### Flat config - To use ESLint with TypeScript files, first install the [typescript-eslint](https://typescript-eslint.io/getting-started) package. ```sh @@ -23,8 +21,12 @@ To lint Tailwind CSS classes in TypeScript files, ensure that:
+### Flat config + Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -67,7 +69,7 @@ export default defineConfig({
- Legacy config +

Legacy config


@@ -122,6 +124,14 @@ export default defineConfig({ The Oxlint configuration currently requires to set up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). +To lint Tailwind CSS classes in TypeScript files, ensure that: + +- The plugin is added to the `jsPlugins` array. +- The `settings` object contains the correct Tailwind CSS configuration paths. +- All relevant rules are added to the `rules` object. + +
+ ```ts // oxlint.config.ts diff --git a/docs/parsers/vue.md b/docs/parsers/vue.md index 421ae1c..54835ab 100644 --- a/docs/parsers/vue.md +++ b/docs/parsers/vue.md @@ -5,6 +5,8 @@
+## ESLint + To use ESLint with Vue files, first install the [vue-eslint-parser](https://github.com/vuejs/vue-eslint-parser). ```sh @@ -19,10 +21,12 @@ To lint Tailwind CSS classes in Vue files, ensure that:
-## Flat config +### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js @@ -61,7 +65,7 @@ export default defineConfig({
- Legacy config +

Legacy config


From 33ef3b3a1d706a3c424a0377d8c6dea2adbd2abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:11:26 +0100 Subject: [PATCH 04/16] docs: clean up documentation --- docs/parsers/javascript.md | 2 ++ docs/parsers/tsx.md | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index d859141..be87d63 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -12,6 +12,8 @@ To lint Tailwind CSS classes in JavaScript files, ensure that: - The plugin is added to your configuration. - The `settings` object contains the correct Tailwind CSS configuration paths. +
+ ### Flat config Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index 2e00d55..d9d456a 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -7,8 +7,6 @@ ## ESLint -### Flat config - To use ESLint with TSX files, first install the [typescript-eslint](https://typescript-eslint.io/getting-started) package. ```sh @@ -24,8 +22,12 @@ To lint Tailwind CSS classes in TSX files, ensure that:
+### Flat config + Read more about the [ESLint flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new) +
+ ```js // eslint.config.js From 529f9f5374c0ffe3aeada6101c071e7084b9c006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:13:04 +0100 Subject: [PATCH 05/16] fix: type --- src/parsers/vue.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/parsers/vue.ts b/src/parsers/vue.ts index 5696cfc..5a324ff 100644 --- a/src/parsers/vue.ts +++ b/src/parsers/vue.ts @@ -32,7 +32,6 @@ import { import type { Rule } from "eslint"; import type { BaseNode as ESBaseNode, Node as ESNode } from "estree"; import type { AST } from "vue-eslint-parser"; -import type { VLiteral } from "vue-eslint-parser/ast/index"; import type { Literal, LiteralValueQuotes, MultilineMeta, StringLiteral } from "better-tailwindcss:types/ast.js"; import type { AttributeSelector, MatcherFunctions, SelectorMatcher } from "better-tailwindcss:types/rule.js"; @@ -143,7 +142,7 @@ function getStringLiteralByVueStringLiteral(ctx: Rule.RuleContext, node: AST.VLi } -function getMultilineQuotes(node: ESBaseNode & Rule.NodeParentExtension | VLiteral): MultilineMeta { +function getMultilineQuotes(node: ESBaseNode & Rule.NodeParentExtension | AST.VLiteral): MultilineMeta { const surroundingBraces = VUE_CONTAINER_TYPES_TO_INSERT_BRACES.includes(node.parent.type); const multilineQuotes: LiteralValueQuotes[] = VUE_CONTAINER_TYPES_TO_REPLACE_QUOTES.includes(node.parent.type) ? ["`"] From 76c7b729c32c5d5a826820e2dcc0e72f3d2dab15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:13:48 +0100 Subject: [PATCH 06/16] style: eslint fixes --- docs/parsers/javascript.md | 14 +++++++------- docs/parsers/jsx.md | 2 +- docs/parsers/tsx.md | 2 +- docs/parsers/typescript.md | 2 +- package-lock.json | 1 + package.json | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index be87d63..3035515 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -104,19 +104,19 @@ import { defineConfig } from "oxlint"; export default defineConfig({ overrides: [{ - "files": ["**/*.{js,ts,jsx,cjs,mjs,tsx}"], - "jsPlugins": [ + files: ["**/*.{js,ts,jsx,cjs,mjs,tsx}"], + jsPlugins: [ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/no-duplicate-classes": "warn", - 'better-tailwindcss/enforce-consistent-line-wrapping': ["warn", { printWidth: 100 }], - // ... add additional rules here + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], + "better-tailwindcss/no-duplicate-classes": "warn" + // ... add additional rules here } }], settings: { - 'better-tailwindcss': { - entryPoint: 'src/global.css', + "better-tailwindcss": { + entryPoint: "src/global.css" } } }); diff --git a/docs/parsers/jsx.md b/docs/parsers/jsx.md index 73f8e36..f40a6ce 100644 --- a/docs/parsers/jsx.md +++ b/docs/parsers/jsx.md @@ -127,8 +127,8 @@ export default defineConfig({ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/no-duplicate-classes": "warn", "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], + "better-tailwindcss/no-duplicate-classes": "warn" // ... add additional rules here } }], diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index d9d456a..b2ed6a5 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -165,8 +165,8 @@ export default defineConfig({ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/no-duplicate-classes": "warn", "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], + "better-tailwindcss/no-duplicate-classes": "warn" // ... add additional rules here } }], diff --git a/docs/parsers/typescript.md b/docs/parsers/typescript.md index 1fe4c6e..5364336 100644 --- a/docs/parsers/typescript.md +++ b/docs/parsers/typescript.md @@ -144,8 +144,8 @@ export default defineConfig({ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/no-duplicate-classes": "warn", "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], + "better-tailwindcss/no-duplicate-classes": "warn" // ... add additional rules here } }], diff --git a/package-lock.json b/package-lock.json index 0f9e557..a352acb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6098,6 +6098,7 @@ "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^3.0.0", diff --git a/package.json b/package.json index 9d6a150..008c22c 100644 --- a/package.json +++ b/package.json @@ -88,8 +88,8 @@ "valibot": "^1.2.0" }, "devDependencies": { - "@angular-eslint/template-parser": "^12.7.0", "@angular/compiler": "^21.1.5", + "@angular-eslint/template-parser": "^12.7.0", "@eslint/css": "^0.14.1", "@html-eslint/parser": "^0.46.0", "@oxc-node/core": "^0.0.35", From c39141a72c1997a0b4c283b392217a1e7f7e7859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:20:35 +0100 Subject: [PATCH 07/16] docs: use js config file in javascript configs --- docs/parsers/javascript.md | 4 ++-- docs/parsers/jsx.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index 3035515..75089d0 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -97,8 +97,8 @@ To lint Tailwind CSS classes in JavaScript files, ensure that:
-```ts -// oxlint.config.ts +```js +// oxlint.config.js import { defineConfig } from "oxlint"; diff --git a/docs/parsers/jsx.md b/docs/parsers/jsx.md index f40a6ce..0f19f23 100644 --- a/docs/parsers/jsx.md +++ b/docs/parsers/jsx.md @@ -115,8 +115,8 @@ To lint Tailwind CSS classes in JSX files, ensure that:
-```ts -// oxlint.config.ts +```js +// oxlint.config.js import { defineConfig } from "oxlint"; From aeebcf620851508d30b8dd04a91381d8bd1df1bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:27:42 +0100 Subject: [PATCH 08/16] chore: fix dependency downgrade --- package-lock.json | 64 +++++++++++++++-------------------------------- package.json | 2 +- 2 files changed, 21 insertions(+), 45 deletions(-) diff --git a/package-lock.json b/package-lock.json index a352acb..e9be03d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "valibot": "^1.2.0" }, "devDependencies": { - "@angular-eslint/template-parser": "^12.7.0", + "@angular-eslint/template-parser": "^21.2.0", "@angular/compiler": "^21.1.5", "@eslint/css": "^0.14.1", "@html-eslint/parser": "^0.46.0", @@ -65,24 +65,24 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "12.7.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-12.7.0.tgz", - "integrity": "sha512-n7nUSIK+bl2DQXIPRyts/xVTw94Mk0rRNd2WBCL9ni27XKOhKtTdP7tLpD+nAiuY4BTTJr7/yTzPWCCRDQgWZg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-21.2.0.tgz", + "integrity": "sha512-J0DWL+j6t9ItFIyIADvzHGqwDA1qfVJ9bx+oTmJ/Hlo7cUpIRoXpcTXpug0CEEABFH0RfDu6PDG2b0FoZ1+7bg==", "dev": true, "license": "MIT" }, "node_modules/@angular-eslint/template-parser": { - "version": "12.7.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-12.7.0.tgz", - "integrity": "sha512-bTGRZ/2m2Z/MCoazWnpbPWLSBK8AsnHCuCXAgiiveYql0GD+PySP1EkBuiWesIyxCsYdzf4aQciJSVuQRo9jEQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-21.2.0.tgz", + "integrity": "sha512-TCb3qYOC/uXKZCo56cJ6N9sHeWdFhyVqrbbYfFjTi09081T6jllgHDZL5Ms7gOMNY8KywWGGbhxwvzeA0RwTgA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "12.7.0", - "eslint-scope": "^5.1.0" + "@angular-eslint/bundled-angular-compiler": "21.2.0", + "eslint-scope": "^9.0.0" }, "peerDependencies": { - "eslint": "*", + "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, @@ -5145,27 +5145,22 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz", + "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -8875,25 +8870,6 @@ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz", - "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@types/esrecurse": "^4.3.1", - "@types/estree": "^1.0.8", - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 008c22c..39a3270 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ }, "devDependencies": { "@angular/compiler": "^21.1.5", - "@angular-eslint/template-parser": "^12.7.0", + "@angular-eslint/template-parser": "^21.2.0", "@eslint/css": "^0.14.1", "@html-eslint/parser": "^0.46.0", "@oxc-node/core": "^0.0.35", From 6ce22444957946cd1cf763ae28a059d2e1c2bbfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:28:46 +0100 Subject: [PATCH 09/16] chore: fix dependency downgrade --- package-lock.json | 79 ++++++++++++++++++++++++++++------------------- package.json | 4 +-- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index e9be03d..b0b413a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,9 +22,9 @@ "@angular-eslint/template-parser": "^21.2.0", "@angular/compiler": "^21.1.5", "@eslint/css": "^0.14.1", - "@html-eslint/parser": "^0.46.0", + "@html-eslint/parser": "^0.57.0", "@oxc-node/core": "^0.0.35", - "@schoero/configs": "^1.0.8", + "@schoero/configs": "^1.5.28", "@types/estree-jsx": "^1.0.5", "@types/node": "^25.3.0", "@typescript-eslint/parser": "^8.56.1", @@ -1530,53 +1530,42 @@ } }, "node_modules/@html-eslint/parser": { - "version": "0.46.2", - "resolved": "https://registry.npmjs.org/@html-eslint/parser/-/parser-0.46.2.tgz", - "integrity": "sha512-qjOaNuLqa5rP4awi3269LXul3sB7YeWtpc3Bk8p5ZGxvEovTagV0V5csOnBw3gNhnRrE68F8Gr/IduszV6gvPg==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@html-eslint/parser/-/parser-0.57.0.tgz", + "integrity": "sha512-guzD7QJFM0UOGnOZco7I9WEZOBQCmXR3abt6sIhznq4x7Ws6l/KwnNo7im6r0g7/ftLTmuKnLjyNEbW8seQyMQ==", "dev": true, "license": "MIT", "dependencies": { - "@html-eslint/template-syntax-parser": "^0.46.2", - "@html-eslint/types": "^0.46.0", - "es-html-parser": "0.3.0" + "@eslint/css-tree": "^3.6.9", + "@html-eslint/template-syntax-parser": "^0.57.0", + "@html-eslint/types": "^0.57.0", + "css-tree": "^3.1.0", + "es-html-parser": "0.3.1" } }, - "node_modules/@html-eslint/parser/node_modules/es-html-parser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/es-html-parser/-/es-html-parser-0.3.0.tgz", - "integrity": "sha512-86KsmbP/zqoG7LIoXiCXv7KFDVbF9N9SCpavmRzeKtCODmF+LyLEBt3UPSlcntNQEwGGe0xn4ZED186rLmwKSw==", - "dev": true, - "license": "MIT" - }, "node_modules/@html-eslint/template-syntax-parser": { - "version": "0.46.2", - "resolved": "https://registry.npmjs.org/@html-eslint/template-syntax-parser/-/template-syntax-parser-0.46.2.tgz", - "integrity": "sha512-1F7ipV/QMpKyYW+joVSQRU8nb8zsC5KhHzNflp0muUoJhhmxxtXuLnovHkCqU1oA1iD9sL5finZ4OJTufE5RGw==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@html-eslint/template-syntax-parser/-/template-syntax-parser-0.57.0.tgz", + "integrity": "sha512-vHp5y4TR+HhgMDi3rAkgm90LBptSZaQUJudZSj+WdvnSBjLe/fgJC4aVjtLVHTS9ynORrFio8AmH1Bz20kYk4g==", "dev": true, "license": "MIT", "dependencies": { - "@html-eslint/types": "^0.46.0" + "@html-eslint/types": "^0.57.0" } }, "node_modules/@html-eslint/types": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/@html-eslint/types/-/types-0.46.0.tgz", - "integrity": "sha512-vEXvucymWh4DVmnpg0oeg2PiGzjRiVLqLwOeJRc4iEbOUo77+VnsSHPOUZOtoeANfgW7abX4YQtOCCIJzbxu0A==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@html-eslint/types/-/types-0.57.0.tgz", + "integrity": "sha512-wZAHc9FHZRVAcKyx1NdMNGpw1Jo/Anh+9y+bTQ/cKjh5MHJlbs8ogthIG8efBVFIVlIgzxEA8yrX+DPXmuWisA==", "dev": true, "license": "MIT", "dependencies": { + "@types/css-tree": "^2.3.11", "@types/estree": "^1.0.6", - "es-html-parser": "0.3.0", - "eslint": "^9.19.0" + "es-html-parser": "0.3.1", + "eslint": "^9.39.1" } }, - "node_modules/@html-eslint/types/node_modules/es-html-parser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/es-html-parser/-/es-html-parser-0.3.0.tgz", - "integrity": "sha512-86KsmbP/zqoG7LIoXiCXv7KFDVbF9N9SCpavmRzeKtCODmF+LyLEBt3UPSlcntNQEwGGe0xn4ZED186rLmwKSw==", - "dev": true, - "license": "MIT" - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -2552,6 +2541,13 @@ "assertion-error": "^2.0.1" } }, + "node_modules/@types/css-tree": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/@types/css-tree/-/css-tree-2.3.11.tgz", + "integrity": "sha512-aEokibJOI77uIlqoBOkVbaQGC9zII0A+JH1kcTNKW2CwyYWD8KM6qdo+4c77wD3wZOQfJuNWAr9M4hdk+YhDIg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -4208,6 +4204,27 @@ "@cspell/cspell-types": "9.7.0" } }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-tree/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", diff --git a/package.json b/package.json index 39a3270..c82c7b6 100644 --- a/package.json +++ b/package.json @@ -91,9 +91,9 @@ "@angular/compiler": "^21.1.5", "@angular-eslint/template-parser": "^21.2.0", "@eslint/css": "^0.14.1", - "@html-eslint/parser": "^0.46.0", + "@html-eslint/parser": "^0.57.0", "@oxc-node/core": "^0.0.35", - "@schoero/configs": "^1.0.8", + "@schoero/configs": "^1.5.28", "@types/estree-jsx": "^1.0.5", "@types/node": "^25.3.0", "@typescript-eslint/parser": "^8.56.1", From 6017f58a97e9131f5e2a4e4c0d8968d89d2adac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:30:31 +0100 Subject: [PATCH 10/16] docs: rephrase text --- docs/parsers/javascript.md | 2 +- docs/parsers/jsx.md | 2 +- docs/parsers/tsx.md | 2 +- docs/parsers/typescript.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index 75089d0..8a2b3e3 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -86,7 +86,7 @@ export default defineConfig({ ## Oxlint -The Oxlint configuration currently requires to set up each rule individually. +The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in JavaScript files, ensure that: diff --git a/docs/parsers/jsx.md b/docs/parsers/jsx.md index 0f19f23..88ad12c 100644 --- a/docs/parsers/jsx.md +++ b/docs/parsers/jsx.md @@ -104,7 +104,7 @@ export default defineConfig({ ## Oxlint -The Oxlint configuration currently requires to set up each rule individually. +The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in JSX files, ensure that: diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index b2ed6a5..6ab780c 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -142,7 +142,7 @@ export default defineConfig([ ## Oxlint -The Oxlint configuration currently requires to set up each rule individually. +The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in TSX files, ensure that: diff --git a/docs/parsers/typescript.md b/docs/parsers/typescript.md index 5364336..104ec2c 100644 --- a/docs/parsers/typescript.md +++ b/docs/parsers/typescript.md @@ -121,7 +121,7 @@ export default defineConfig({ ## Oxlint -The Oxlint configuration currently requires to set up each rule individually. +The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in TypeScript files, ensure that: From a1c6f6904aff8cbf9d59318f1113b27db4edff07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:32:24 +0100 Subject: [PATCH 11/16] docs: update file includes --- docs/parsers/javascript.md | 2 +- docs/parsers/tsx.md | 2 +- docs/parsers/typescript.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index 8a2b3e3..485fe93 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -104,7 +104,7 @@ import { defineConfig } from "oxlint"; export default defineConfig({ overrides: [{ - files: ["**/*.{js,ts,jsx,cjs,mjs,tsx}"], + files: ["**/*.{js,cjs,mjs}"], jsPlugins: [ "eslint-plugin-better-tailwindcss" ], diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index 6ab780c..5455182 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -160,7 +160,7 @@ import { defineConfig } from "oxlint"; export default defineConfig({ overrides: [{ - files: ["**/*.{ts,tsx,cts,mts}"], + files: ["**/*.{js,cjs,mjs,ts,cts,mts}"], jsPlugins: [ "eslint-plugin-better-tailwindcss" ], diff --git a/docs/parsers/typescript.md b/docs/parsers/typescript.md index 104ec2c..6e4dc70 100644 --- a/docs/parsers/typescript.md +++ b/docs/parsers/typescript.md @@ -139,7 +139,7 @@ import { defineConfig } from "oxlint"; export default defineConfig({ overrides: [{ - files: ["**/*.{ts,tsx,cts,mts}"], + files: ["**/*.{js,cjs,mjs,ts,tsx,cts,mts}"], jsPlugins: [ "eslint-plugin-better-tailwindcss" ], From 6230ea0bfc72dacb1cc76a9cf3c95fead569df71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 06:35:57 +0100 Subject: [PATCH 12/16] docs: mention oxc extension --- README.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b0ef378..0b50a7c 100644 --- a/README.md +++ b/README.md @@ -180,15 +180,29 @@ See the [Advanced configuration guide](./docs/configuration/advanced.md) to lear ##### Auto-fix on save -Most rules are intended to automatically fix the tailwind classes. If you have installed the [VSCode ESLint plugin](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint), you can configure it to automatically fix the classes on save by adding the following options to your `.vscode/settings.json`: +Most rules are intended to automatically fix the tailwind classes using VSCode extensions. + +###### ESLint + +For ESLint, you can install the [VSCode ESLint plugin](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) and configure it to automatically fix the classes on save by adding the following options to your `.vscode/settings.json`: ```jsonc { // enable VSCode to fix tailwind classes on save "editor.codeActionsOnSave": { - // ESLint "source.fixAll.eslint": "explicit", - // Oxlint + } +} +``` + +###### Oxlint + +For Oxlint, you can install the [VSCode Oxc plugin](https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode) and configure it to automatically fix the classes on save by adding the following options to your `.vscode/settings.json`: + +```jsonc +{ + // enable VSCode to fix tailwind classes on save + "editor.codeActionsOnSave": { "source.fixAll.oxc": "explicit" } } From b63691608b2001b5b8d9c11f6e2383aa8aafe51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 07:17:00 +0100 Subject: [PATCH 13/16] style: eslint fixes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b50a7c..5051ee6 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,7 @@ For ESLint, you can install the [VSCode ESLint plugin](https://marketplace.visua { // enable VSCode to fix tailwind classes on save "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", + "source.fixAll.eslint": "explicit" } } ``` From 9f3b6df28b1312f604e5ef089fe6c171d00a247b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 07:46:56 +0100 Subject: [PATCH 14/16] docs: use config presets --- docs/parsers/javascript.md | 10 ++++++---- docs/parsers/jsx.md | 10 ++++++---- docs/parsers/tsx.md | 10 ++++++---- docs/parsers/typescript.md | 10 ++++++---- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index 485fe93..ce8d019 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -86,7 +86,6 @@ export default defineConfig({ ## Oxlint -The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in JavaScript files, ensure that: @@ -100,6 +99,7 @@ To lint Tailwind CSS classes in JavaScript files, ensure that: ```js // oxlint.config.js +import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' import { defineConfig } from "oxlint"; export default defineConfig({ @@ -109,9 +109,11 @@ export default defineConfig({ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], - "better-tailwindcss/no-duplicate-classes": "warn" - // ... add additional rules here + // enable all recommended rules + ...eslintPluginBetterTailwindcss.configs.recommended.rules, + + // if needed, override rules to configure them individually + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }] } }], settings: { diff --git a/docs/parsers/jsx.md b/docs/parsers/jsx.md index 88ad12c..756dc99 100644 --- a/docs/parsers/jsx.md +++ b/docs/parsers/jsx.md @@ -104,7 +104,6 @@ export default defineConfig({ ## Oxlint -The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in JSX files, ensure that: @@ -118,6 +117,7 @@ To lint Tailwind CSS classes in JSX files, ensure that: ```js // oxlint.config.js +import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' import { defineConfig } from "oxlint"; export default defineConfig({ @@ -127,9 +127,11 @@ export default defineConfig({ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], - "better-tailwindcss/no-duplicate-classes": "warn" - // ... add additional rules here + // enable all recommended rules + ...eslintPluginBetterTailwindcss.configs.recommended.rules, + + // if needed, override rules to configure them individually + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }] } }], settings: { diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index 5455182..fe65488 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -142,7 +142,6 @@ export default defineConfig([ ## Oxlint -The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in TSX files, ensure that: @@ -156,6 +155,7 @@ To lint Tailwind CSS classes in TSX files, ensure that: ```ts // oxlint.config.ts +import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' import { defineConfig } from "oxlint"; export default defineConfig({ @@ -165,9 +165,11 @@ export default defineConfig({ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], - "better-tailwindcss/no-duplicate-classes": "warn" - // ... add additional rules here + // enable all recommended rules + ...eslintPluginBetterTailwindcss.configs.recommended.rules, + + // if needed, override rules to configure them individually + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }] } }], settings: { diff --git a/docs/parsers/typescript.md b/docs/parsers/typescript.md index 6e4dc70..729eeab 100644 --- a/docs/parsers/typescript.md +++ b/docs/parsers/typescript.md @@ -121,7 +121,6 @@ export default defineConfig({ ## Oxlint -The Oxlint configuration currently requires setting up each rule individually. More info about the Oxlint configuration format can be found in the [Oxlint documentation](https://oxc.rs/docs/guide/usage/linter/config.html). To lint Tailwind CSS classes in TypeScript files, ensure that: @@ -135,6 +134,7 @@ To lint Tailwind CSS classes in TypeScript files, ensure that: ```ts // oxlint.config.ts +import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' import { defineConfig } from "oxlint"; export default defineConfig({ @@ -144,9 +144,11 @@ export default defineConfig({ "eslint-plugin-better-tailwindcss" ], rules: { - "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }], - "better-tailwindcss/no-duplicate-classes": "warn" - // ... add additional rules here + // enable all recommended rules + ...eslintPluginBetterTailwindcss.configs.recommended.rules, + + // if needed, override rules to configure them individually + "better-tailwindcss/enforce-consistent-line-wrapping": ["warn", { printWidth: 100 }] } }], settings: { From 0344238d648500a92ac76337f2e1b6d98d2bbb07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 07:51:49 +0100 Subject: [PATCH 15/16] style: eslint fixes --- docs/parsers/javascript.md | 2 +- docs/parsers/jsx.md | 2 +- docs/parsers/tsx.md | 2 +- docs/parsers/typescript.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/parsers/javascript.md b/docs/parsers/javascript.md index ce8d019..a19401e 100644 --- a/docs/parsers/javascript.md +++ b/docs/parsers/javascript.md @@ -99,7 +99,7 @@ To lint Tailwind CSS classes in JavaScript files, ensure that: ```js // oxlint.config.js -import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' +import eslintPluginBetterTailwindcss from "eslint-plugin-better-tailwindcss"; import { defineConfig } from "oxlint"; export default defineConfig({ diff --git a/docs/parsers/jsx.md b/docs/parsers/jsx.md index 756dc99..b4e6312 100644 --- a/docs/parsers/jsx.md +++ b/docs/parsers/jsx.md @@ -117,7 +117,7 @@ To lint Tailwind CSS classes in JSX files, ensure that: ```js // oxlint.config.js -import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' +import eslintPluginBetterTailwindcss from "eslint-plugin-better-tailwindcss"; import { defineConfig } from "oxlint"; export default defineConfig({ diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index fe65488..fd3cf16 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -155,7 +155,7 @@ To lint Tailwind CSS classes in TSX files, ensure that: ```ts // oxlint.config.ts -import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' +import eslintPluginBetterTailwindcss from "eslint-plugin-better-tailwindcss"; import { defineConfig } from "oxlint"; export default defineConfig({ diff --git a/docs/parsers/typescript.md b/docs/parsers/typescript.md index 729eeab..3ac20eb 100644 --- a/docs/parsers/typescript.md +++ b/docs/parsers/typescript.md @@ -134,7 +134,7 @@ To lint Tailwind CSS classes in TypeScript files, ensure that: ```ts // oxlint.config.ts -import eslintPluginBetterTailwindcss from 'eslint-plugin-better-tailwindcss' +import eslintPluginBetterTailwindcss from "eslint-plugin-better-tailwindcss"; import { defineConfig } from "oxlint"; export default defineConfig({ From 49c2fc138d439bdb3d76ea2a2079c57dcfcf4ee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Tue, 24 Feb 2026 09:00:57 +0100 Subject: [PATCH 16/16] docs: fix tsx file include --- docs/parsers/tsx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/parsers/tsx.md b/docs/parsers/tsx.md index fd3cf16..b5d2ca3 100644 --- a/docs/parsers/tsx.md +++ b/docs/parsers/tsx.md @@ -160,7 +160,7 @@ import { defineConfig } from "oxlint"; export default defineConfig({ overrides: [{ - files: ["**/*.{js,cjs,mjs,ts,cts,mts}"], + files: ["**/*.{js,cjs,mjs,ts,tsx,cts,mts}"], jsPlugins: [ "eslint-plugin-better-tailwindcss" ],