diff --git a/package.json b/package.json index d7de87108..ff934c5be 100644 --- a/package.json +++ b/package.json @@ -11,25 +11,25 @@ "upgrade": "pnpm dlx @astrojs/upgrade" }, "dependencies": { - "@astrojs/mdx": "^4.3.11", - "@astrojs/starlight": "^0.36.2", + "@astrojs/mdx": "^4.3.13", + "@astrojs/starlight": "^0.37.6", "@astrojs/starlight-docsearch": "^0.6.1", "@astrojs/starlight-tailwind": "^4.0.2", - "@expressive-code/plugin-collapsible-sections": "^0.41.3", + "@expressive-code/plugin-collapsible-sections": "^0.41.6", "@fontsource-variable/inter": "^5.2.8", "@fontsource-variable/jetbrains-mono": "^5.2.8", - "@tailwindcss/vite": "^4.1.17", - "astro": "^5.15.9", + "@tailwindcss/vite": "^4.1.18", + "astro": "^5.17.2", "sharp": "^0.34.5", "starlight-image-zoom": "^0.13.2", - "starlight-links-validator": "^0.19.1", - "tailwindcss": "^4.1.17" + "starlight-links-validator": "^0.19.2", + "tailwindcss": "^4.1.18" }, "devDependencies": { "@netlify/plugin-lighthouse": "^6.0.4", "netlify-plugin-submit-sitemap": "^0.4.0", - "prettier": "^3.6.2", + "prettier": "^3.8.1", "prettier-plugin-astro": "^0.14.1", - "prettier-plugin-tailwindcss": "^0.7.1" + "prettier-plugin-tailwindcss": "^0.7.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5cd98530f..3a40e274c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,20 +9,20 @@ importers: .: dependencies: '@astrojs/mdx': - specifier: ^4.3.11 - version: 4.3.11(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) + specifier: ^4.3.13 + version: 4.3.13(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) '@astrojs/starlight': - specifier: ^0.36.2 - version: 0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) + specifier: ^0.37.6 + version: 0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) '@astrojs/starlight-docsearch': specifier: ^0.6.1 - version: 0.6.1(@algolia/client-search@5.44.0)(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)))(search-insights@2.13.0) + version: 0.6.1(@algolia/client-search@5.48.1)(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)))(search-insights@2.13.0) '@astrojs/starlight-tailwind': specifier: ^4.0.2 - version: 4.0.2(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)))(tailwindcss@4.1.17) + version: 4.0.2(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)))(tailwindcss@4.1.18) '@expressive-code/plugin-collapsible-sections': - specifier: ^0.41.3 - version: 0.41.3 + specifier: ^0.41.6 + version: 0.41.6 '@fontsource-variable/inter': specifier: ^5.2.8 version: 5.2.8 @@ -30,23 +30,23 @@ importers: specifier: ^5.2.8 version: 5.2.8 '@tailwindcss/vite': - specifier: ^4.1.17 - version: 4.1.17(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1)) + specifier: ^4.1.18 + version: 4.1.18(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1)) astro: - specifier: ^5.15.9 - version: 5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1) + specifier: ^5.17.2 + version: 5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1) sharp: specifier: ^0.34.5 version: 0.34.5 starlight-image-zoom: specifier: ^0.13.2 - version: 0.13.2(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1))) + version: 0.13.2(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1))) starlight-links-validator: - specifier: ^0.19.1 - version: 0.19.1(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1))) + specifier: ^0.19.2 + version: 0.19.2(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)))(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) tailwindcss: - specifier: ^4.1.17 - version: 4.1.17 + specifier: ^4.1.18 + version: 4.1.18 devDependencies: '@netlify/plugin-lighthouse': specifier: ^6.0.4 @@ -55,19 +55,19 @@ importers: specifier: ^0.4.0 version: 0.4.0 prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.1 + version: 3.8.1 prettier-plugin-astro: specifier: ^0.14.1 version: 0.14.1 prettier-plugin-tailwindcss: - specifier: ^0.7.1 - version: 0.7.1(prettier-plugin-astro@0.14.1)(prettier@3.6.2) + specifier: ^0.7.2 + version: 0.7.2(prettier-plugin-astro@0.14.1)(prettier@3.8.1) packages: - '@algolia/abtesting@1.10.0': - resolution: {integrity: sha512-mQT3jwuTgX8QMoqbIR7mPlWkqQqBPQaPabQzm37xg2txMlaMogK/4hCiiESGdg39MlHZOVHeV+0VJuE7f5UK8A==} + '@algolia/abtesting@1.14.1': + resolution: {integrity: sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.9': @@ -90,69 +90,69 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.44.0': - resolution: {integrity: sha512-KY5CcrWhRTUo/lV7KcyjrZkPOOF9bjgWpMj9z98VA+sXzVpZtkuskBLCKsWYFp2sbwchZFTd3wJM48H0IGgF7g==} + '@algolia/client-abtesting@5.48.1': + resolution: {integrity: sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.44.0': - resolution: {integrity: sha512-LKOCE8S4ewI9bN3ot9RZoYASPi8b78E918/DVPW3HHjCMUe6i+NjbNG6KotU4RpP6AhRWZjjswbOkWelUO+OoA==} + '@algolia/client-analytics@5.48.1': + resolution: {integrity: sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.44.0': - resolution: {integrity: sha512-1yyJm4OYC2cztbS28XYVWwLXdwpLsMG4LoZLOltVglQ2+hc/i9q9fUDZyjRa2Bqt4DmkIfezagfMrokhyH4uxQ==} + '@algolia/client-common@5.48.1': + resolution: {integrity: sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.44.0': - resolution: {integrity: sha512-wVQWK6jYYsbEOjIMI+e5voLGPUIbXrvDj392IckXaCPvQ6vCMTXakQqOYCd+znQdL76S+3wHDo77HZWiAYKrtA==} + '@algolia/client-insights@5.48.1': + resolution: {integrity: sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.44.0': - resolution: {integrity: sha512-lkgRjOjOkqmIkebHjHpU9rLJcJNUDMm+eVSW/KJQYLjGqykEZxal+nYJJTBbLceEU2roByP/+27ZmgIwCdf0iA==} + '@algolia/client-personalization@5.48.1': + resolution: {integrity: sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.44.0': - resolution: {integrity: sha512-sYfhgwKu6NDVmZHL1WEKVLsOx/jUXCY4BHKLUOcYa8k4COCs6USGgz6IjFkUf+niwq8NCECMmTC4o/fVQOalsA==} + '@algolia/client-query-suggestions@5.48.1': + resolution: {integrity: sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.44.0': - resolution: {integrity: sha512-/FRKUM1G4xn3vV8+9xH1WJ9XknU8rkBGlefruq9jDhYUAvYozKimhrmC2pRqw/RyHhPivmgZCRuC8jHP8piz4Q==} + '@algolia/client-search@5.48.1': + resolution: {integrity: sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.44.0': - resolution: {integrity: sha512-5+S5ynwMmpTpCLXGjTDpeIa81J+R4BLH0lAojOhmeGSeGEHQTqacl/4sbPyDTcidvnWhaqtyf8m42ue6lvISAw==} + '@algolia/ingestion@1.48.1': + resolution: {integrity: sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.44.0': - resolution: {integrity: sha512-xhaTN8pXJjR6zkrecg4Cc9YZaQK2LKm2R+LkbAq+AYGBCWJxtSGlNwftozZzkUyq4AXWoyoc0x2SyBtq5LRtqQ==} + '@algolia/monitoring@1.48.1': + resolution: {integrity: sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.44.0': - resolution: {integrity: sha512-GNcite/uOIS7wgRU1MT7SdNIupGSW+vbK9igIzMePvD2Dl8dy0O3urKPKIbTuZQqiVH1Cb84y5cgLvwNrdCj/Q==} + '@algolia/recommend@5.48.1': + resolution: {integrity: sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.44.0': - resolution: {integrity: sha512-YZHBk72Cd7pcuNHzbhNzF/FbbYszlc7JhZlDyQAchnX5S7tcemSS96F39Sy8t4O4WQLpFvUf1MTNedlitWdOsQ==} + '@algolia/requester-browser-xhr@5.48.1': + resolution: {integrity: sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.44.0': - resolution: {integrity: sha512-B9WHl+wQ7uf46t9cq+vVM/ypVbOeuldVDq9OtKsX2ApL2g/htx6ImB9ugDOOJmB5+fE31/XPTuCcYz/j03+idA==} + '@algolia/requester-fetch@5.48.1': + resolution: {integrity: sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.44.0': - resolution: {integrity: sha512-MULm0qeAIk4cdzZ/ehJnl1o7uB5NMokg83/3MKhPq0Pk7+I0uELGNbzIfAkvkKKEYcHALemKdArtySF9eKzh/A==} + '@algolia/requester-node-http@5.48.1': + resolution: {integrity: sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==} engines: {node: '>= 14.0.0'} - '@astrojs/compiler@2.13.0': - resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==} + '@astrojs/compiler@2.13.1': + resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} '@astrojs/internal-helpers@0.7.5': resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==} - '@astrojs/markdown-remark@6.3.9': - resolution: {integrity: sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==} + '@astrojs/markdown-remark@6.3.10': + resolution: {integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==} - '@astrojs/mdx@4.3.11': - resolution: {integrity: sha512-ca18jxAiYDbPE1eAsNoiGnZoMYZGtfQpCmAJMXCB1WpyzTOHH7+KP1+gnKK8SFEA6XjHvjwI5Xzu8695c0Gabw==} + '@astrojs/mdx@4.3.13': + resolution: {integrity: sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -161,8 +161,8 @@ packages: resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@astrojs/sitemap@3.6.0': - resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==} + '@astrojs/sitemap@3.7.0': + resolution: {integrity: sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA==} '@astrojs/starlight-docsearch@0.6.1': resolution: {integrity: sha512-ezgE5bGAuSU5/+W7j3AAika/NL15ox3RKDSzq4sGroKlEPGo8PuJyn/3Q1RcoWYhRhkKSOGBFa5tQwuPiXk6Qw==} @@ -175,8 +175,8 @@ packages: '@astrojs/starlight': '>=0.34.0' tailwindcss: ^4.0.0 - '@astrojs/starlight@0.36.2': - resolution: {integrity: sha512-QR8NfO7+7DR13kBikhQwAj3IAoptLLNs9DkyKko2M2l3PrqpcpVUnw1JBJ0msGDIwE6tBbua2UeBND48mkh03w==} + '@astrojs/starlight@0.37.6': + resolution: {integrity: sha512-wQrKwH431q+8FsLBnNQeG+R36TMtEGxTQ2AuiVpcx9APcazvL3n7wVW8mMmYyxX0POjTnxlcWPkdMGR3Yj1L+w==} peerDependencies: astro: ^5.5.0 @@ -184,8 +184,8 @@ packages: resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.27.1': @@ -196,21 +196,21 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@capsizecss/unpack@3.0.1': - resolution: {integrity: sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==} + '@capsizecss/unpack@4.0.0': + resolution: {integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==} engines: {node: '>=18'} '@ctrl/tinycolor@4.2.0': @@ -240,8 +240,8 @@ packages: search-insights: optional: true - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} @@ -249,170 +249,326 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@expressive-code/core@0.41.3': - resolution: {integrity: sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==} + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@expressive-code/core@0.41.6': + resolution: {integrity: sha512-FvJQP+hG0jWi/FLBSmvHInDqWR7jNANp9PUDjdMqSshHb0y7sxx3vHuoOr6SgXjWw+MGLqorZyPQ0aAlHEok6g==} - '@expressive-code/plugin-collapsible-sections@0.41.3': - resolution: {integrity: sha512-cuHIN7Ipl7gUcaWFfsgy6G3wn0Svk8dQ6WKXNQha63BURbm7CSBhD6y9qFGeIOrxaJtvH4Pj3Xb4C2Ni0OVwYA==} + '@expressive-code/plugin-collapsible-sections@0.41.6': + resolution: {integrity: sha512-LxSa49aziWKgpGoOoZlTbXW1V1/mEPyxKb+J9JFgUtTizXNKX363uiCHcKQYzSLmIN7HII5WxF+uArGHwb+X+w==} - '@expressive-code/plugin-frames@0.41.3': - resolution: {integrity: sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==} + '@expressive-code/plugin-frames@0.41.6': + resolution: {integrity: sha512-d+hkSYXIQot6fmYnOmWAM+7TNWRv/dhfjMsNq+mIZz8Tb4mPHOcgcfZeEM5dV9TDL0ioQNvtcqQNuzA1sRPjxg==} - '@expressive-code/plugin-shiki@0.41.3': - resolution: {integrity: sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==} + '@expressive-code/plugin-shiki@0.41.6': + resolution: {integrity: sha512-Y6zmKBmsIUtWTzdefqlzm/h9Zz0Rc4gNdt2GTIH7fhHH2I9+lDYCa27BDwuBhjqcos6uK81Aca9dLUC4wzN+ng==} - '@expressive-code/plugin-text-markers@0.41.3': - resolution: {integrity: sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==} + '@expressive-code/plugin-text-markers@0.41.6': + resolution: {integrity: sha512-PBFa1wGyYzRExMDzBmAWC6/kdfG1oLn4pLpBeTfIRrALPjcGA/59HP3e7q9J0Smk4pC7U+lWkA2LHR8FYV8U7Q==} '@fontsource-variable/inter@5.2.8': resolution: {integrity: sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==} @@ -633,113 +789,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.2': - resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} + '@rollup/rollup-android-arm-eabi@4.57.1': + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.2': - resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} + '@rollup/rollup-android-arm64@4.57.1': + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.2': - resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} + '@rollup/rollup-darwin-arm64@4.57.1': + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.2': - resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} + '@rollup/rollup-darwin-x64@4.57.1': + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.2': - resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} + '@rollup/rollup-freebsd-arm64@4.57.1': + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.2': - resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} + '@rollup/rollup-freebsd-x64@4.57.1': + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.2': - resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} + '@rollup/rollup-linux-arm64-gnu@4.57.1': + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.2': - resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} + '@rollup/rollup-linux-arm64-musl@4.57.1': + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.2': - resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} + '@rollup/rollup-linux-loong64-gnu@4.57.1': + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.57.1': + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.57.1': + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.2': - resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} + '@rollup/rollup-linux-riscv64-musl@4.57.1': + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.2': - resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} + '@rollup/rollup-linux-s390x-gnu@4.57.1': + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.2': - resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} + '@rollup/rollup-linux-x64-gnu@4.57.1': + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.2': - resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} + '@rollup/rollup-linux-x64-musl@4.57.1': + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.2': - resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} + '@rollup/rollup-openbsd-x64@4.57.1': + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.57.1': + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.2': - resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} + '@rollup/rollup-win32-arm64-msvc@4.57.1': + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.2': - resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} + '@rollup/rollup-win32-ia32-msvc@4.57.1': + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.2': - resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} + '@rollup/rollup-win32-x64-gnu@4.57.1': + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.2': - resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} + '@rollup/rollup-win32-x64-msvc@4.57.1': + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} cpu: [x64] os: [win32] @@ -767,89 +938,86 @@ packages: resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==} engines: {node: '>=6'} - '@shikijs/core@3.15.0': - resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} + '@shikijs/core@3.22.0': + resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} - '@shikijs/engine-javascript@3.15.0': - resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} + '@shikijs/engine-javascript@3.22.0': + resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==} - '@shikijs/engine-oniguruma@3.15.0': - resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} + '@shikijs/engine-oniguruma@3.22.0': + resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} - '@shikijs/langs@3.15.0': - resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} + '@shikijs/langs@3.22.0': + resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} - '@shikijs/themes@3.15.0': - resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} + '@shikijs/themes@3.22.0': + resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} - '@shikijs/types@3.15.0': - resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} + '@shikijs/types@3.22.0': + resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@tailwindcss/node@4.1.18': + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} - '@tailwindcss/node@4.1.17': - resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} - - '@tailwindcss/oxide-android-arm64@4.1.17': - resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==} + '@tailwindcss/oxide-android-arm64@4.1.18': + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.17': - resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==} + '@tailwindcss/oxide-darwin-arm64@4.1.18': + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.17': - resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==} + '@tailwindcss/oxide-darwin-x64@4.1.18': + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.17': - resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==} + '@tailwindcss/oxide-freebsd-x64@4.1.18': + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': - resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': - resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.17': - resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.17': - resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.17': - resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.17': - resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -860,24 +1028,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': - resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.17': - resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.17': - resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==} + '@tailwindcss/oxide@4.1.18': + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} engines: {node: '>= 10'} - '@tailwindcss/vite@4.1.17': - resolution: {integrity: sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==} + '@tailwindcss/vite@4.1.18': + resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 @@ -893,9 +1061,6 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/fontkit@2.0.8': - resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -917,8 +1082,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@24.10.1': - resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} '@types/picomatch@3.0.2': resolution: {integrity: sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==} @@ -960,8 +1125,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - algoliasearch@5.44.0: - resolution: {integrity: sha512-f8IpsbdQjzTjr/4mJ/jv5UplrtyMnnciGax6/B0OnLCs2/GJTK13O4Y7Ff1AvJVAaztanH+m5nzPoUq6EAy+aA==} + algoliasearch@5.48.1: + resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==} engines: {node: '>= 14.0.0'} ansi-align@3.0.1: @@ -971,8 +1136,8 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - ansi-escapes@7.2.0: - resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} engines: {node: '>=18'} ansi-regex@5.0.1: @@ -1019,13 +1184,13 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro-expressive-code@0.41.3: - resolution: {integrity: sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==} + astro-expressive-code@0.41.6: + resolution: {integrity: sha512-l47tb1uhmVIebHUkw+HEPtU/av0G4O8Q34g2cbkPvC7/e9ZhANcjUUciKt9Hp6gSVDdIuXBBLwJQn2LkeGMOAw==} peerDependencies: - astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta - astro@5.15.9: - resolution: {integrity: sha512-XLDXxu0282cC/oYHswWZm3johGlRvk9rLRS7pWVWSne+HsZe9JgrpHI+vewAJSSNHBGd1aCyaQOElT5RNGe7IQ==} + astro@5.17.2: + resolution: {integrity: sha512-7jnMqGo53hOQNwo1N/wqeOvUp8wwW/p+DeerSjSkHNx8L/1mhy6P7rVo7EhdmF8DpKqw0tl/B5Fx1WcIzg1ysA==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -1037,8 +1202,8 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - b4a@1.7.3: - resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} + b4a@1.7.4: + resolution: {integrity: sha512-u20zJLDaSWpxaZ+zaAkEIB2dZZ1o+DF4T/MRbmsvGp9nletHOyiai19OzX1fF8xUBYsO1bPXxODvcd0978pnug==} peerDependencies: react-native-b4a: '*' peerDependenciesMeta: @@ -1059,8 +1224,8 @@ packages: bare-abort-controller: optional: true - bare-fs@4.5.1: - resolution: {integrity: sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==} + bare-fs@4.5.4: + resolution: {integrity: sha512-POK4oplfA7P7gqvetNmCs4CNtm9fNsx+IAh7jH7GgU0OJdge2rso0R20TNWVq6VoWcCvsTdlNDaleLHGaKx8CA==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -1095,8 +1260,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + basic-ftp@5.1.0: + resolution: {integrity: sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==} engines: {node: '>=10.0.0'} bcp-47-match@2.0.3: @@ -1108,8 +1273,8 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} boolbase@1.0.0: @@ -1122,9 +1287,6 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brotli@1.3.3: - resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} - buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -1176,9 +1338,9 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -1193,8 +1355,8 @@ packages: peerDependencies: devtools-protocol: '*' - ci-info@4.3.1: - resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} clean-css@5.3.3: @@ -1209,10 +1371,6 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -1234,6 +1392,10 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1266,19 +1428,19 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} cosmiconfig@9.0.0: @@ -1303,18 +1465,33 @@ packages: csp_evaluator@1.1.1: resolution: {integrity: sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==} - css-selector-parser@3.2.0: - resolution: {integrity: sha512-L1bdkNKUP5WYxiW5dW6vA2hd3sL8BdRNLy2FCX0rLVise4eNw9nBdeBuJHxlELieSE2H1f6bYQFfwVUwWCV9rQ==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-selector-parser@3.3.0: + resolution: {integrity: sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} css-tree@3.1.0: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -1355,8 +1532,8 @@ packages: supports-color: optional: true - decode-named-character-reference@1.2.0: - resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -1392,8 +1569,8 @@ packages: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} - devalue@5.5.0: - resolution: {integrity: sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==} + devalue@5.6.2: + resolution: {integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -1404,11 +1581,8 @@ packages: devtools-protocol@0.0.981744: resolution: {integrity: sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==} - dfa@1.2.0: - resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + diff@8.0.3: + resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} engines: {node: '>=0.3.1'} direction@2.0.1: @@ -1418,6 +1592,19 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -1446,10 +1633,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} @@ -1457,8 +1640,8 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -1510,6 +1693,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1571,18 +1759,18 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} events-universal@1.0.1: resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} - expressive-code@0.41.3: - resolution: {integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==} + expressive-code@0.41.6: + resolution: {integrity: sha512-W/5+IQbrpCIM5KGLjO35wlp1NCwDOOVQb+PAvzEoGkW1xjGM807ZGfBKptNWH6UECvt6qgmLyWolCMYKh7eQmA==} extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -1592,9 +1780,6 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -1614,8 +1799,8 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} find-up@4.1.0: @@ -1626,11 +1811,12 @@ packages: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} - fontace@0.3.1: - resolution: {integrity: sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==} + fontace@0.4.1: + resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} - fontkit@2.0.4: - resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} + fontkitten@1.0.2: + resolution: {integrity: sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==} + engines: {node: '>=20'} formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} @@ -1687,7 +1873,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} @@ -1696,8 +1882,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - h3@1.15.4: - resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} + h3@1.15.5: + resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==} has-flag@5.0.1: resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} @@ -1756,8 +1942,8 @@ packages: hast-util-to-jsx-runtime@2.3.6: resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} hast-util-to-string@3.0.1: resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} @@ -1788,8 +1974,8 @@ packages: http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} http-link-header@0.8.0: @@ -2037,8 +2223,8 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -2049,8 +2235,9 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.2.6: + resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} + engines: {node: 20 || >=22} lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} @@ -2062,8 +2249,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.1: - resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -2128,8 +2315,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -2137,6 +2324,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} @@ -2352,8 +2542,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-mock-http@1.0.3: - resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -2386,8 +2576,8 @@ packages: oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@4.3.3: - resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -2425,16 +2615,13 @@ packages: resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} - package-manager-detector@1.5.0: - resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} pagefind@1.4.0: resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==} hasBin: true - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -2479,6 +2666,9 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + piccolore@0.1.3: + resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2508,15 +2698,15 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.27.2: - resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} + preact@10.28.3: + resolution: {integrity: sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==} prettier-plugin-astro@0.14.1: resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} engines: {node: ^14.15.0 || >=16.0.0} - prettier-plugin-tailwindcss@0.7.1: - resolution: {integrity: sha512-Bzv1LZcuiR1Sk02iJTS1QzlFNp/o5l2p3xkopwOrbPmtMeh3fK9rVW5M3neBQzHq+kGKj/4LGQMTNcTH4NGPtQ==} + prettier-plugin-tailwindcss@0.7.2: + resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==} engines: {node: '>=20.19'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -2570,8 +2760,8 @@ packages: prettier-plugin-svelte: optional: true - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -2587,9 +2777,6 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -2625,8 +2812,8 @@ packages: deprecated: < 24.15.0 is no longer supported hasBin: true - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + qs@6.14.2: + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} radix3@1.1.2: @@ -2636,17 +2823,17 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -2668,11 +2855,11 @@ packages: regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@6.0.1: - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - rehype-expressive-code@0.41.3: - resolution: {integrity: sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==} + rehype-expressive-code@0.41.6: + resolution: {integrity: sha512-aBMX8kxPtjmDSFUdZlAWJkMvsQ4ZMASfee90JWIAV8tweltXLzkWC3q++43ToTelI8ac5iC0B3/S/Cl4Ql1y2g==} rehype-format@5.0.1: resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} @@ -2726,9 +2913,6 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - restructure@3.0.2: - resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} - retext-latin@4.0.0: resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} @@ -2750,8 +2934,8 @@ packages: resolution: {integrity: sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==} engines: {node: '>=10.0.0'} - rollup@4.53.2: - resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} + rollup@4.57.1: + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2767,8 +2951,9 @@ packages: sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} - sax@1.4.3: - resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} search-insights@2.13.0: resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} @@ -2781,17 +2966,17 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} setprototypeof@1.2.0: @@ -2801,8 +2986,8 @@ packages: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shiki@3.15.0: - resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} + shiki@3.22.0: + resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -2835,8 +3020,8 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smol-toml@1.5.2: - resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} + smol-toml@1.6.0: + resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} engines: {node: '>= 18'} socks-proxy-agent@8.0.5: @@ -2875,14 +3060,15 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.32.0' - starlight-links-validator@0.19.1: - resolution: {integrity: sha512-Ermpe7zJG5uRJUqIWflX4VNLozOBX2/N4XvHvyaPQcHsfdN7y81qEd3n56PYdVb3Tj4/6ZFFSfAtiCe78XtBVw==} + starlight-links-validator@0.19.2: + resolution: {integrity: sha512-IHeK3R78fsmv53VfRkGbXkwK1CQEUBHM9QPzBEyoAxjZ/ssi5gjV+F4oNNUppTR48iPp+lEY0MTAmvkX7yNnkw==} engines: {node: '>=18.17.1'} peerDependencies: '@astrojs/starlight': '>=0.32.0' + astro: '>=5.1.5' - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} stream-replace-string@2.0.0: @@ -2926,12 +3112,17 @@ packages: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} - supports-hyperlinks@4.3.0: - resolution: {integrity: sha512-i6sWEzuwadSlcr2mOnb0ktlIl+K5FVxsPXmoPfknDd2gyw4ZBIAZ5coc0NQzYqDdEYXMHy8NaY9rWwa1Q1myiQ==} + supports-hyperlinks@4.4.0: + resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} engines: {node: '>=20'} - tailwindcss@4.1.17: - resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} + svgo@4.0.0: + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} + engines: {node: '>=16'} + hasBin: true + + tailwindcss@4.1.18: + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} @@ -2954,13 +3145,13 @@ packages: resolution: {integrity: sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==} engines: {node: '>=20'} - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true - text-decoder@1.2.3: - resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + text-decoder@1.2.5: + resolution: {integrity: sha512-ymKEOrjEhNE0+Gehpn2Dw59Vp2fNG0DQvCRAJpCjVqB1Pkj1AMBzDpow4H9kSa6XqO/wZrb5TLxEigx+nEaiBA==} third-party-web@0.17.1: resolution: {integrity: sha512-X9Mha8cVeBwakunlZXkXL6xRzw8VCcDGWqT59EzeTYAJIi8ien3CuufnEGEx4ZUFahumNQdoOwf4H2T9Ca6lBg==} @@ -3027,8 +3218,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} @@ -3042,17 +3233,11 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - unicode-properties@1.4.1: - resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} - - unicode-trie@2.0.0: - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unifont@0.6.0: - resolution: {integrity: sha512-5Fx50fFQMQL5aeHyWnZX9122sSLckcDvcfFiBf3QYeHa7a1MKJooUy52b67moi2MJYkrfo/TWY+CoLdr/w0tTA==} + unifont@0.7.3: + resolution: {integrity: sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA==} unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} @@ -3085,15 +3270,15 @@ packages: unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unstorage@1.17.2: - resolution: {integrity: sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==} + unstorage@1.17.4: + resolution: {integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -3101,14 +3286,14 @@ packages: '@azure/identity': ^4.6.0 '@azure/keyvault-secrets': ^4.9.0 '@azure/storage-blob': ^12.26.0 - '@capacitor/preferences': ^6.0.3 || ^7.0.0 + '@capacitor/preferences': ^6 || ^7 || ^8 '@deno/kv': '>=0.9.0' '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 '@planetscale/database': ^1.19.0 '@upstash/redis': ^1.34.3 '@vercel/blob': '>=0.27.1' '@vercel/functions': ^2.2.12 || ^3.0.0 - '@vercel/kv': ^1.0.1 + '@vercel/kv': ^1 || ^2 || ^3 aws4fetch: ^1.0.20 db0: '>=0.2.1' idb-keyval: ^6.2.1 @@ -3269,8 +3454,8 @@ packages: utf-8-validate: optional: true - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3332,10 +3517,10 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - zod-to-json-schema@3.24.6: - resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + zod-to-json-schema@3.25.1: + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} peerDependencies: - zod: ^3.24.1 + zod: ^3.25 || ^4 zod-to-ts@1.2.0: resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} @@ -3351,123 +3536,123 @@ packages: snapshots: - '@algolia/abtesting@1.10.0': + '@algolia/abtesting@1.14.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.13.0)': + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.13.0)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1) search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)': + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) - '@algolia/client-search': 5.44.0 - algoliasearch: 5.44.0 + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1) + '@algolia/client-search': 5.48.1 + algoliasearch: 5.48.1 - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)': + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)': dependencies: - '@algolia/client-search': 5.44.0 - algoliasearch: 5.44.0 + '@algolia/client-search': 5.48.1 + algoliasearch: 5.48.1 - '@algolia/client-abtesting@5.44.0': + '@algolia/client-abtesting@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/client-analytics@5.44.0': + '@algolia/client-analytics@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/client-common@5.44.0': {} + '@algolia/client-common@5.48.1': {} - '@algolia/client-insights@5.44.0': + '@algolia/client-insights@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/client-personalization@5.44.0': + '@algolia/client-personalization@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/client-query-suggestions@5.44.0': + '@algolia/client-query-suggestions@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/client-search@5.44.0': + '@algolia/client-search@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/ingestion@1.44.0': + '@algolia/ingestion@1.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/monitoring@1.44.0': + '@algolia/monitoring@1.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/recommend@5.44.0': + '@algolia/recommend@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 - '@algolia/requester-browser-xhr@5.44.0': + '@algolia/requester-browser-xhr@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 + '@algolia/client-common': 5.48.1 - '@algolia/requester-fetch@5.44.0': + '@algolia/requester-fetch@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 + '@algolia/client-common': 5.48.1 - '@algolia/requester-node-http@5.44.0': + '@algolia/requester-node-http@5.48.1': dependencies: - '@algolia/client-common': 5.44.0 + '@algolia/client-common': 5.48.1 - '@astrojs/compiler@2.13.0': {} + '@astrojs/compiler@2.13.1': {} '@astrojs/internal-helpers@0.7.5': {} - '@astrojs/markdown-remark@6.3.9': + '@astrojs/markdown-remark@6.3.10': dependencies: '@astrojs/internal-helpers': 0.7.5 '@astrojs/prism': 3.3.0 @@ -3483,31 +3668,31 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.15.0 - smol-toml: 1.5.2 + shiki: 3.22.0 + smol-toml: 1.6.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 vfile: 6.0.3 transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.11(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1))': + '@astrojs/mdx@4.3.13(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1))': dependencies: - '@astrojs/markdown-remark': 6.3.9 + '@astrojs/markdown-remark': 6.3.10 '@mdx-js/mdx': 3.1.1 acorn: 8.15.0 - astro: 5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1) + astro: 5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 - picocolors: 1.1.1 + piccolore: 0.1.3 rehype-raw: 7.0.0 remark-gfm: 4.0.1 remark-smartypants: 3.0.2 source-map: 0.7.6 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -3516,17 +3701,17 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/sitemap@3.6.0': + '@astrojs/sitemap@3.7.0': dependencies: sitemap: 8.0.2 stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight-docsearch@0.6.1(@algolia/client-search@5.44.0)(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)))(search-insights@2.13.0)': + '@astrojs/starlight-docsearch@0.6.1(@algolia/client-search@5.48.1)(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)))(search-insights@2.13.0)': dependencies: - '@astrojs/starlight': 0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) + '@astrojs/starlight': 0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) '@docsearch/css': 3.9.0 - '@docsearch/js': 3.9.0(@algolia/client-search@5.44.0)(search-insights@2.13.0) + '@docsearch/js': 3.9.0(@algolia/client-search@5.48.1)(search-insights@2.13.0) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -3534,22 +3719,22 @@ snapshots: - react-dom - search-insights - '@astrojs/starlight-tailwind@4.0.2(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)))(tailwindcss@4.1.17)': + '@astrojs/starlight-tailwind@4.0.2(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)))(tailwindcss@4.1.18)': dependencies: - '@astrojs/starlight': 0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) - tailwindcss: 4.1.17 + '@astrojs/starlight': 0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) + tailwindcss: 4.1.18 - '@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1))': + '@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1))': dependencies: - '@astrojs/markdown-remark': 6.3.9 - '@astrojs/mdx': 4.3.11(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) - '@astrojs/sitemap': 3.6.0 + '@astrojs/markdown-remark': 6.3.10 + '@astrojs/mdx': 4.3.13(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) + '@astrojs/sitemap': 3.7.0 '@pagefind/default-ui': 1.4.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1) - astro-expressive-code: 0.41.3(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) + astro: 5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1) + astro-expressive-code: 0.41.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -3558,6 +3743,7 @@ snapshots: i18next: 23.16.8 js-yaml: 4.1.1 klona: 2.0.6 + magic-string: 0.30.21 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 @@ -3567,14 +3753,14 @@ snapshots: remark-directive: 3.0.1 ultrahtml: 1.6.0 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color '@astrojs/telemetry@3.3.0': dependencies: - ci-info: 4.3.1 + ci-info: 4.4.0 debug: 4.4.3 dlv: 1.1.3 dset: 3.1.4 @@ -3584,7 +3770,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 @@ -3594,29 +3780,29 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 - '@babel/runtime@7.28.4': {} + '@babel/runtime@7.28.6': {} - '@babel/types@7.28.5': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@capsizecss/unpack@3.0.1': + '@capsizecss/unpack@4.0.0': dependencies: - fontkit: 2.0.4 + fontkitten: 1.0.2 '@ctrl/tinycolor@4.2.0': {} '@docsearch/css@3.9.0': {} - '@docsearch/js@3.9.0(@algolia/client-search@5.44.0)(search-insights@2.13.0)': + '@docsearch/js@3.9.0(@algolia/client-search@5.48.1)(search-insights@2.13.0)': dependencies: - '@docsearch/react': 3.9.0(@algolia/client-search@5.44.0)(search-insights@2.13.0) - preact: 10.27.2 + '@docsearch/react': 3.9.0(@algolia/client-search@5.48.1)(search-insights@2.13.0) + preact: 10.28.3 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -3624,18 +3810,18 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.9.0(@algolia/client-search@5.44.0)(search-insights@2.13.0)': + '@docsearch/react@3.9.0(@algolia/client-search@5.48.1)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.48.1)(algoliasearch@5.48.1) '@docsearch/css': 3.9.0 - algoliasearch: 5.44.0 + algoliasearch: 5.48.1 optionalDependencies: search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - '@emnapi/runtime@1.7.1': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -3643,82 +3829,160 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true + '@esbuild/aix-ppc64@0.27.3': + optional: true + '@esbuild/android-arm64@0.25.12': optional: true + '@esbuild/android-arm64@0.27.3': + optional: true + '@esbuild/android-arm@0.25.12': optional: true + '@esbuild/android-arm@0.27.3': + optional: true + '@esbuild/android-x64@0.25.12': optional: true + '@esbuild/android-x64@0.27.3': + optional: true + '@esbuild/darwin-arm64@0.25.12': optional: true + '@esbuild/darwin-arm64@0.27.3': + optional: true + '@esbuild/darwin-x64@0.25.12': optional: true + '@esbuild/darwin-x64@0.27.3': + optional: true + '@esbuild/freebsd-arm64@0.25.12': optional: true + '@esbuild/freebsd-arm64@0.27.3': + optional: true + '@esbuild/freebsd-x64@0.25.12': optional: true + '@esbuild/freebsd-x64@0.27.3': + optional: true + '@esbuild/linux-arm64@0.25.12': optional: true + '@esbuild/linux-arm64@0.27.3': + optional: true + '@esbuild/linux-arm@0.25.12': optional: true + '@esbuild/linux-arm@0.27.3': + optional: true + '@esbuild/linux-ia32@0.25.12': optional: true + '@esbuild/linux-ia32@0.27.3': + optional: true + '@esbuild/linux-loong64@0.25.12': optional: true + '@esbuild/linux-loong64@0.27.3': + optional: true + '@esbuild/linux-mips64el@0.25.12': optional: true + '@esbuild/linux-mips64el@0.27.3': + optional: true + '@esbuild/linux-ppc64@0.25.12': optional: true + '@esbuild/linux-ppc64@0.27.3': + optional: true + '@esbuild/linux-riscv64@0.25.12': optional: true + '@esbuild/linux-riscv64@0.27.3': + optional: true + '@esbuild/linux-s390x@0.25.12': optional: true + '@esbuild/linux-s390x@0.27.3': + optional: true + '@esbuild/linux-x64@0.25.12': optional: true + '@esbuild/linux-x64@0.27.3': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true + '@esbuild/netbsd-arm64@0.27.3': + optional: true + '@esbuild/netbsd-x64@0.25.12': optional: true + '@esbuild/netbsd-x64@0.27.3': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true + '@esbuild/openbsd-arm64@0.27.3': + optional: true + '@esbuild/openbsd-x64@0.25.12': optional: true + '@esbuild/openbsd-x64@0.27.3': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true + '@esbuild/openharmony-arm64@0.27.3': + optional: true + '@esbuild/sunos-x64@0.25.12': optional: true + '@esbuild/sunos-x64@0.27.3': + optional: true + '@esbuild/win32-arm64@0.25.12': optional: true + '@esbuild/win32-arm64@0.27.3': + optional: true + '@esbuild/win32-ia32@0.25.12': optional: true + '@esbuild/win32-ia32@0.27.3': + optional: true + '@esbuild/win32-x64@0.25.12': optional: true - '@expressive-code/core@0.41.3': + '@esbuild/win32-x64@0.27.3': + optional: true + + '@expressive-code/core@0.41.6': dependencies: '@ctrl/tinycolor': 4.2.0 hast-util-select: 6.0.4 @@ -3727,25 +3991,25 @@ snapshots: hastscript: 9.0.1 postcss: 8.5.6 postcss-nested: 6.2.0(postcss@8.5.6) - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 - '@expressive-code/plugin-collapsible-sections@0.41.3': + '@expressive-code/plugin-collapsible-sections@0.41.6': dependencies: - '@expressive-code/core': 0.41.3 + '@expressive-code/core': 0.41.6 - '@expressive-code/plugin-frames@0.41.3': + '@expressive-code/plugin-frames@0.41.6': dependencies: - '@expressive-code/core': 0.41.3 + '@expressive-code/core': 0.41.6 - '@expressive-code/plugin-shiki@0.41.3': + '@expressive-code/plugin-shiki@0.41.6': dependencies: - '@expressive-code/core': 0.41.3 - shiki: 3.15.0 + '@expressive-code/core': 0.41.6 + shiki: 3.22.0 - '@expressive-code/plugin-text-markers@0.41.3': + '@expressive-code/plugin-text-markers@0.41.6': dependencies: - '@expressive-code/core': 0.41.3 + '@expressive-code/core': 0.41.6 '@fontsource-variable/inter@5.2.8': {} @@ -3835,7 +4099,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.7.1 + '@emnapi/runtime': 1.8.1 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -3896,7 +4160,7 @@ snapshots: unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -3907,7 +4171,7 @@ snapshots: chrome-launcher: 0.15.2 compression: 1.8.1 dotenv: 16.6.1 - express: 4.21.2 + express: 4.22.1 html-minifier-terser: 7.2.0 lighthouse: 9.6.8 puppeteer: 24.8.2(typescript@5.6.2) @@ -3949,7 +4213,7 @@ snapshots: extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 - semver: 7.7.3 + semver: 7.7.4 tar-fs: 3.1.1 yargs: 17.7.2 transitivePeerDependencies: @@ -3958,78 +4222,87 @@ snapshots: - react-native-b4a - supports-color - '@rollup/pluginutils@5.3.0(rollup@4.53.2)': + '@rollup/pluginutils@5.3.0(rollup@4.57.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.2 + rollup: 4.57.1 + + '@rollup/rollup-android-arm-eabi@4.57.1': + optional: true - '@rollup/rollup-android-arm-eabi@4.53.2': + '@rollup/rollup-android-arm64@4.57.1': optional: true - '@rollup/rollup-android-arm64@4.53.2': + '@rollup/rollup-darwin-arm64@4.57.1': optional: true - '@rollup/rollup-darwin-arm64@4.53.2': + '@rollup/rollup-darwin-x64@4.57.1': optional: true - '@rollup/rollup-darwin-x64@4.53.2': + '@rollup/rollup-freebsd-arm64@4.57.1': optional: true - '@rollup/rollup-freebsd-arm64@4.53.2': + '@rollup/rollup-freebsd-x64@4.57.1': optional: true - '@rollup/rollup-freebsd-x64@4.53.2': + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + '@rollup/rollup-linux-arm-musleabihf@4.57.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.2': + '@rollup/rollup-linux-arm64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.2': + '@rollup/rollup-linux-arm64-musl@4.57.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.2': + '@rollup/rollup-linux-loong64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.2': + '@rollup/rollup-linux-loong64-musl@4.57.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.2': + '@rollup/rollup-linux-ppc64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.2': + '@rollup/rollup-linux-ppc64-musl@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.2': + '@rollup/rollup-linux-riscv64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.2': + '@rollup/rollup-linux-riscv64-musl@4.57.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.2': + '@rollup/rollup-linux-s390x-gnu@4.57.1': optional: true - '@rollup/rollup-linux-x64-musl@4.53.2': + '@rollup/rollup-linux-x64-gnu@4.57.1': optional: true - '@rollup/rollup-openharmony-arm64@4.53.2': + '@rollup/rollup-linux-x64-musl@4.57.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.2': + '@rollup/rollup-openbsd-x64@4.57.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.2': + '@rollup/rollup-openharmony-arm64@4.57.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.2': + '@rollup/rollup-win32-arm64-msvc@4.57.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.2': + '@rollup/rollup-win32-ia32-msvc@4.57.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.57.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true '@sentry/core@6.19.7': @@ -4072,110 +4345,106 @@ snapshots: '@sentry/types': 6.19.7 tslib: 1.14.1 - '@shikijs/core@3.15.0': + '@shikijs/core@3.22.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.15.0': + '@shikijs/engine-javascript@3.22.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.3 + oniguruma-to-es: 4.3.4 - '@shikijs/engine-oniguruma@3.15.0': + '@shikijs/engine-oniguruma@3.22.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.15.0': + '@shikijs/langs@3.22.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.22.0 - '@shikijs/themes@3.15.0': + '@shikijs/themes@3.22.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.22.0 - '@shikijs/types@3.15.0': + '@shikijs/types@3.22.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 '@shikijs/vscode-textmate@10.0.2': {} - '@swc/helpers@0.5.17': - dependencies: - tslib: 2.8.1 - - '@tailwindcss/node@4.1.17': + '@tailwindcss/node@4.1.18': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.19.0 jiti: 2.6.1 lightningcss: 1.30.2 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.1.17 + tailwindcss: 4.1.18 - '@tailwindcss/oxide-android-arm64@4.1.17': + '@tailwindcss/oxide-android-arm64@4.1.18': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.17': + '@tailwindcss/oxide-darwin-arm64@4.1.18': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.17': + '@tailwindcss/oxide-darwin-x64@4.1.18': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.17': + '@tailwindcss/oxide-freebsd-x64@4.1.18': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.17': + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.17': + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.17': + '@tailwindcss/oxide-linux-x64-musl@4.1.18': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.17': + '@tailwindcss/oxide-wasm32-wasi@4.1.18': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.17': + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': optional: true - '@tailwindcss/oxide@4.1.17': + '@tailwindcss/oxide@4.1.18': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.17 - '@tailwindcss/oxide-darwin-arm64': 4.1.17 - '@tailwindcss/oxide-darwin-x64': 4.1.17 - '@tailwindcss/oxide-freebsd-x64': 4.1.17 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.17 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.17 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.17 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.17 - '@tailwindcss/oxide-linux-x64-musl': 4.1.17 - '@tailwindcss/oxide-wasm32-wasi': 4.1.17 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 - - '@tailwindcss/vite@4.1.17(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1))': - dependencies: - '@tailwindcss/node': 4.1.17 - '@tailwindcss/oxide': 4.1.17 - tailwindcss: 4.1.17 - vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1) + '@tailwindcss/oxide-android-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-x64': 4.1.18 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 + + '@tailwindcss/vite@4.1.18(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1))': + dependencies: + '@tailwindcss/node': 4.1.18 + '@tailwindcss/oxide': 4.1.18 + tailwindcss: 4.1.18 + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1) '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -4189,10 +4458,6 @@ snapshots: '@types/estree@1.0.8': {} - '@types/fontkit@2.0.8': - dependencies: - '@types/node': 24.10.1 - '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -4213,7 +4478,7 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@24.10.1': + '@types/node@25.2.3': dependencies: undici-types: 7.16.0 @@ -4229,7 +4494,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.10.1 + '@types/node': 25.2.3 optional: true '@ungap/structured-clone@1.3.0': {} @@ -4253,22 +4518,22 @@ snapshots: agent-base@7.1.4: {} - algoliasearch@5.44.0: - dependencies: - '@algolia/abtesting': 1.10.0 - '@algolia/client-abtesting': 5.44.0 - '@algolia/client-analytics': 5.44.0 - '@algolia/client-common': 5.44.0 - '@algolia/client-insights': 5.44.0 - '@algolia/client-personalization': 5.44.0 - '@algolia/client-query-suggestions': 5.44.0 - '@algolia/client-search': 5.44.0 - '@algolia/ingestion': 1.44.0 - '@algolia/monitoring': 1.44.0 - '@algolia/recommend': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + algoliasearch@5.48.1: + dependencies: + '@algolia/abtesting': 1.14.1 + '@algolia/client-abtesting': 5.48.1 + '@algolia/client-analytics': 5.48.1 + '@algolia/client-common': 5.48.1 + '@algolia/client-insights': 5.48.1 + '@algolia/client-personalization': 5.48.1 + '@algolia/client-query-suggestions': 5.48.1 + '@algolia/client-search': 5.48.1 + '@algolia/ingestion': 1.48.1 + '@algolia/monitoring': 1.48.1 + '@algolia/recommend': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 ansi-align@3.0.1: dependencies: @@ -4276,7 +4541,7 @@ snapshots: ansi-colors@4.1.3: {} - ansi-escapes@7.2.0: + ansi-escapes@7.3.0: dependencies: environment: 1.1.0 @@ -4311,74 +4576,75 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.3(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)): + astro-expressive-code@0.41.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)): dependencies: - astro: 5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1) - rehype-expressive-code: 0.41.3 + astro: 5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1) + rehype-expressive-code: 0.41.6 - astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1): + astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1): dependencies: - '@astrojs/compiler': 2.13.0 + '@astrojs/compiler': 2.13.1 '@astrojs/internal-helpers': 0.7.5 - '@astrojs/markdown-remark': 6.3.9 + '@astrojs/markdown-remark': 6.3.10 '@astrojs/telemetry': 3.3.0 - '@capsizecss/unpack': 3.0.1 + '@capsizecss/unpack': 4.0.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 - ci-info: 4.3.1 + ci-info: 4.4.0 clsx: 2.1.1 common-ancestor-path: 1.0.1 - cookie: 1.0.2 + cookie: 1.1.1 cssesc: 3.0.0 debug: 4.4.3 deterministic-object-hash: 2.0.2 - devalue: 5.5.0 - diff: 5.2.0 + devalue: 5.6.2 + diff: 8.0.3 dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 1.7.0 - esbuild: 0.25.12 + esbuild: 0.27.3 estree-walker: 3.0.3 flattie: 1.1.1 - fontace: 0.3.1 + fontace: 0.4.1 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 import-meta-resolve: 4.2.0 js-yaml: 4.1.1 magic-string: 0.30.21 - magicast: 0.5.1 + magicast: 0.5.2 mrmime: 2.0.1 neotraverse: 0.6.18 p-limit: 6.2.0 p-queue: 8.1.1 - package-manager-detector: 1.5.0 - picocolors: 1.1.1 + package-manager-detector: 1.6.0 + piccolore: 0.1.3 picomatch: 4.0.3 prompts: 2.4.2 rehype: 13.0.2 - semver: 7.7.3 - shiki: 3.15.0 - smol-toml: 1.5.2 + semver: 7.7.4 + shiki: 3.22.0 + smol-toml: 1.6.0 + svgo: 4.0.0 tinyexec: 1.0.2 tinyglobby: 0.2.15 tsconfck: 3.1.6(typescript@5.6.2) ultrahtml: 1.6.0 - unifont: 0.6.0 - unist-util-visit: 5.0.0 - unstorage: 1.17.2 + unifont: 0.7.3 + unist-util-visit: 5.1.0 + unstorage: 1.17.4 vfile: 6.0.3 - vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1) - vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1)) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1) + vitefu: 1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 zod: 3.25.76 - zod-to-json-schema: 3.24.6(zod@3.25.76) + zod-to-json-schema: 3.25.1(zod@3.25.76) zod-to-ts: 1.2.0(typescript@5.6.2)(zod@3.25.76) optionalDependencies: sharp: 0.34.5 @@ -4421,7 +4687,7 @@ snapshots: axobject-query@4.1.0: {} - b4a@1.7.3: {} + b4a@1.7.4: {} bail@2.0.2: {} @@ -4429,7 +4695,7 @@ snapshots: bare-events@2.8.2: {} - bare-fs@4.5.1: + bare-fs@4.5.4: dependencies: bare-events: 2.8.2 bare-path: 3.0.0 @@ -4468,7 +4734,7 @@ snapshots: base64-js@1.5.1: {} - basic-ftp@5.0.5: {} + basic-ftp@5.1.0: {} bcp-47-match@2.0.3: {} @@ -4484,18 +4750,18 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.3: + body-parser@1.20.4: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 + qs: 6.14.2 + raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: @@ -4519,10 +4785,6 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brotli@1.3.3: - dependencies: - base64-js: 1.5.1 - buffer-crc32@0.2.13: {} buffer-from@1.1.2: {} @@ -4565,15 +4827,15 @@ snapshots: character-reference-invalid@2.0.1: {} - chokidar@4.0.3: + chokidar@5.0.0: dependencies: - readdirp: 4.1.2 + readdirp: 5.0.0 chownr@1.1.4: {} chrome-launcher@0.15.2: dependencies: - '@types/node': 24.10.1 + '@types/node': 25.2.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -4586,7 +4848,7 @@ snapshots: mitt: 3.0.1 zod: 3.25.76 - ci-info@4.3.1: {} + ci-info@4.4.0: {} clean-css@5.3.3: dependencies: @@ -4600,8 +4862,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@2.1.2: {} - clsx@2.1.1: {} collapse-white-space@2.1.0: {} @@ -4616,6 +4876,8 @@ snapshots: commander@10.0.1: {} + commander@11.1.0: {} + commander@2.20.3: {} common-ancestor-path@1.0.1: {} @@ -4655,13 +4917,13 @@ snapshots: cookie-es@1.2.2: {} - cookie-signature@1.0.6: {} + cookie-signature@1.0.7: {} cookie@0.4.2: {} - cookie@0.7.1: {} + cookie@0.7.2: {} - cookie@1.0.2: {} + cookie@1.1.1: {} cosmiconfig@9.0.0(typescript@5.6.2): dependencies: @@ -4686,15 +4948,34 @@ snapshots: csp_evaluator@1.1.1: {} - css-selector-parser@3.2.0: {} + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-selector-parser@3.3.0: {} + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 css-tree@3.1.0: dependencies: mdn-data: 2.12.2 source-map-js: 1.2.1 + css-what@6.2.2: {} + cssesc@3.0.0: {} + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + cssom@0.3.8: {} cssstyle@1.2.1: @@ -4717,7 +4998,7 @@ snapshots: dependencies: ms: 2.1.3 - decode-named-character-reference@1.2.0: + decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -4745,7 +5026,7 @@ snapshots: dependencies: base-64: 1.0.0 - devalue@5.5.0: {} + devalue@5.6.2: {} devlop@1.1.0: dependencies: @@ -4755,14 +5036,30 @@ snapshots: devtools-protocol@0.0.981744: {} - dfa@1.2.0: {} - - diff@5.2.0: {} + diff@8.0.3: {} direction@2.0.1: {} dlv@1.1.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -4788,15 +5085,13 @@ snapshots: emoji-regex@8.0.0: {} - encodeurl@1.0.2: {} - encodeurl@2.0.0: {} end-of-stream@1.4.5: dependencies: once: 1.4.0 - enhanced-resolve@5.18.3: + enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 @@ -4871,6 +5166,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 + esbuild@0.27.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -4930,7 +5254,7 @@ snapshots: etag@1.8.1: {} - eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} events-universal@1.0.1: dependencies: @@ -4938,48 +5262,48 @@ snapshots: transitivePeerDependencies: - bare-abort-controller - express@4.21.2: + express@4.22.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.3 + body-parser: 1.20.4 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 + cookie: 0.7.2 + cookie-signature: 1.0.7 debug: 2.6.9 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1 + finalhandler: 1.3.2 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.13.0 + qs: 6.14.2 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 + send: 0.19.2 + serve-static: 1.16.3 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 transitivePeerDependencies: - supports-color - expressive-code@0.41.3: + expressive-code@0.41.6: dependencies: - '@expressive-code/core': 0.41.3 - '@expressive-code/plugin-frames': 0.41.3 - '@expressive-code/plugin-shiki': 0.41.3 - '@expressive-code/plugin-text-markers': 0.41.3 + '@expressive-code/core': 0.41.6 + '@expressive-code/plugin-frames': 0.41.6 + '@expressive-code/plugin-shiki': 0.41.6 + '@expressive-code/plugin-text-markers': 0.41.6 extend@3.0.2: {} @@ -4993,8 +5317,6 @@ snapshots: transitivePeerDependencies: - supports-color - fast-deep-equal@3.1.3: {} - fast-fifo@1.3.2: {} fd-slicer@1.1.0: @@ -5010,14 +5332,14 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - finalhandler@1.3.1: + finalhandler@1.3.2: dependencies: debug: 2.6.9 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 unpipe: 1.0.0 transitivePeerDependencies: - supports-color @@ -5029,22 +5351,13 @@ snapshots: flattie@1.1.1: {} - fontace@0.3.1: + fontace@0.4.1: dependencies: - '@types/fontkit': 2.0.8 - fontkit: 2.0.4 + fontkitten: 1.0.2 - fontkit@2.0.4: + fontkitten@1.0.2: dependencies: - '@swc/helpers': 0.5.17 - brotli: 1.3.3 - clone: 2.1.2 - dfa: 1.2.0 - fast-deep-equal: 3.1.3 - restructure: 3.0.2 tiny-inflate: 1.0.3 - unicode-properties: 1.4.1 - unicode-trie: 2.0.0 formdata-polyfill@4.0.10: dependencies: @@ -5091,7 +5404,7 @@ snapshots: get-uri@6.0.5: dependencies: - basic-ftp: 5.0.5 + basic-ftp: 5.1.0 data-uri-to-buffer: 6.0.2 debug: 4.4.3 transitivePeerDependencies: @@ -5112,16 +5425,16 @@ snapshots: graceful-fs@4.2.11: {} - h3@1.15.4: + h3@1.15.5: dependencies: cookie-es: 1.2.2 crossws: 0.3.5 defu: 6.1.4 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.3 + node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.6.1 + ufo: 1.6.3 uncrypto: 0.1.3 has-flag@5.0.1: {} @@ -5205,12 +5518,12 @@ snapshots: '@types/unist': 3.0.3 '@ungap/structured-clone': 1.3.0 hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.0 + hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -5221,7 +5534,7 @@ snapshots: '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.2.0 + css-selector-parser: 3.3.0 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -5230,7 +5543,7 @@ snapshots: nth-check: 2.1.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 zwitch: 2.0.4 hast-util-to-estree@3.1.3: @@ -5262,7 +5575,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -5288,12 +5601,12 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-parse5@8.0.0: + hast-util-to-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.5.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -5331,7 +5644,7 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.44.1 + terser: 5.46.0 html-void-elements@3.0.0: {} @@ -5339,12 +5652,12 @@ snapshots: http-cache-semantics@4.2.0: {} - http-errors@2.0.0: + http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 toidentifier: 1.0.1 http-link-header@0.8.0: {} @@ -5372,7 +5685,7 @@ snapshots: i18next@23.16.8: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 iconv-lite@0.4.24: dependencies: @@ -5495,7 +5808,7 @@ snapshots: js-library-detector: 6.7.0 lighthouse-logger: 1.4.2 lighthouse-stack-packs: 1.8.2 - lodash: 4.17.21 + lodash: 4.17.23 lookup-closest-locale: 6.2.0 metaviewport-parser: 0.2.0 open: 8.4.2 @@ -5570,7 +5883,7 @@ snapshots: dependencies: p-locate: 4.1.0 - lodash@4.17.21: {} + lodash@4.17.23: {} longest-streak@3.1.0: {} @@ -5580,7 +5893,7 @@ snapshots: dependencies: tslib: 2.8.1 - lru-cache@10.4.3: {} + lru-cache@11.2.6: {} lru-cache@7.18.3: {} @@ -5590,10 +5903,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.5.1: + magicast@0.5.2: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 source-map-js: 1.2.1 make-dir@3.1.0: @@ -5612,7 +5925,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 mdast-util-directive@3.1.0: dependencies: @@ -5639,7 +5952,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 micromark: 4.0.2 @@ -5763,7 +6076,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.1 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -5772,7 +6085,7 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 mdast-util-to-markdown@2.1.2: @@ -5784,13 +6097,15 @@ snapshots: mdast-util-to-string: 4.0.0 micromark-util-classify-character: 2.0.1 micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 zwitch: 2.0.4 mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.0.28: {} + mdn-data@2.12.2: {} media-typer@0.3.0: {} @@ -5803,7 +6118,7 @@ snapshots: micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -6009,7 +6324,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -6057,7 +6372,7 @@ snapshots: dependencies: '@types/debug': 4.1.12 debug: 4.4.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -6138,7 +6453,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-mock-http@1.0.3: {} + node-mock-http@1.0.4: {} normalize-path@3.0.0: {} @@ -6152,7 +6467,7 @@ snapshots: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 - ufo: 1.6.1 + ufo: 1.6.3 ohash@2.0.11: {} @@ -6168,10 +6483,10 @@ snapshots: oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.3: + oniguruma-to-es@4.3.4: dependencies: oniguruma-parser: 0.12.1 - regex: 6.0.1 + regex: 6.1.0 regex-recursion: 6.0.2 open@8.4.2: @@ -6194,7 +6509,7 @@ snapshots: p-queue@8.1.1: dependencies: - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 p-timeout: 6.1.4 p-timeout@6.1.4: {} @@ -6219,7 +6534,7 @@ snapshots: degenerator: 5.0.1 netmask: 2.0.2 - package-manager-detector@1.5.0: {} + package-manager-detector@1.6.0: {} pagefind@1.4.0: optionalDependencies: @@ -6230,8 +6545,6 @@ snapshots: '@pagefind/linux-x64': 1.4.0 '@pagefind/windows-x64': 1.4.0 - pako@0.2.9: {} - param-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -6248,14 +6561,14 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.0 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -6288,6 +6601,8 @@ snapshots: pend@1.2.0: {} + piccolore@0.1.3: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -6314,21 +6629,21 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.27.2: {} + preact@10.28.3: {} prettier-plugin-astro@0.14.1: dependencies: - '@astrojs/compiler': 2.13.0 - prettier: 3.6.2 + '@astrojs/compiler': 2.13.1 + prettier: 3.8.1 sass-formatter: 0.7.9 - prettier-plugin-tailwindcss@0.7.1(prettier-plugin-astro@0.14.1)(prettier@3.6.2): + prettier-plugin-tailwindcss@0.7.2(prettier-plugin-astro@0.14.1)(prettier@3.8.1): dependencies: - prettier: 3.6.2 + prettier: 3.8.1 optionalDependencies: prettier-plugin-astro: 0.14.1 - prettier@3.6.2: {} + prettier@3.8.1: {} prismjs@1.30.0: {} @@ -6339,8 +6654,6 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@6.5.0: {} - property-information@7.1.0: {} proxy-addr@2.0.7: @@ -6397,7 +6710,7 @@ snapshots: debug: 4.4.3 devtools-protocol: 0.0.1439962 typed-query-selector: 2.12.0 - ws: 8.18.3 + ws: 8.19.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -6423,7 +6736,7 @@ snapshots: - typescript - utf-8-validate - qs@6.13.0: + qs@6.14.2: dependencies: side-channel: 1.1.0 @@ -6431,10 +6744,10 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.2: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 @@ -6444,7 +6757,7 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@4.1.2: {} + readdirp@5.0.0: {} recma-build-jsx@1.0.0: dependencies: @@ -6481,13 +6794,13 @@ snapshots: regex-utilities@2.3.0: {} - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 - rehype-expressive-code@0.41.3: + rehype-expressive-code@0.41.6: dependencies: - expressive-code: 0.41.3 + expressive-code: 0.41.6 rehype-format@5.0.1: dependencies: @@ -6569,7 +6882,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -6578,7 +6891,7 @@ snapshots: retext: 9.0.0 retext-smartypants: 6.2.0 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 remark-stringify@11.0.0: dependencies: @@ -6590,8 +6903,6 @@ snapshots: resolve-from@4.0.0: {} - restructure@3.0.2: {} - retext-latin@4.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -6602,7 +6913,7 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 retext-stringify@4.0.0: dependencies: @@ -6623,32 +6934,35 @@ snapshots: robots-parser@3.0.1: {} - rollup@4.53.2: + rollup@4.57.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.2 - '@rollup/rollup-android-arm64': 4.53.2 - '@rollup/rollup-darwin-arm64': 4.53.2 - '@rollup/rollup-darwin-x64': 4.53.2 - '@rollup/rollup-freebsd-arm64': 4.53.2 - '@rollup/rollup-freebsd-x64': 4.53.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 - '@rollup/rollup-linux-arm-musleabihf': 4.53.2 - '@rollup/rollup-linux-arm64-gnu': 4.53.2 - '@rollup/rollup-linux-arm64-musl': 4.53.2 - '@rollup/rollup-linux-loong64-gnu': 4.53.2 - '@rollup/rollup-linux-ppc64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-musl': 4.53.2 - '@rollup/rollup-linux-s390x-gnu': 4.53.2 - '@rollup/rollup-linux-x64-gnu': 4.53.2 - '@rollup/rollup-linux-x64-musl': 4.53.2 - '@rollup/rollup-openharmony-arm64': 4.53.2 - '@rollup/rollup-win32-arm64-msvc': 4.53.2 - '@rollup/rollup-win32-ia32-msvc': 4.53.2 - '@rollup/rollup-win32-x64-gnu': 4.53.2 - '@rollup/rollup-win32-x64-msvc': 4.53.2 + '@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 fsevents: 2.3.3 s.color@0.0.15: {} @@ -6661,7 +6975,7 @@ snapshots: dependencies: suf-log: 2.5.3 - sax@1.4.3: {} + sax@1.4.4: {} search-insights@2.13.0: {} @@ -6669,32 +6983,32 @@ snapshots: semver@6.3.1: {} - semver@7.7.3: {} + semver@7.7.4: {} - send@0.19.0: + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color - serve-static@1.16.2: + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 0.19.2 transitivePeerDependencies: - supports-color @@ -6704,7 +7018,7 @@ snapshots: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -6731,14 +7045,14 @@ snapshots: '@img/sharp-win32-ia32': 0.34.5 '@img/sharp-win32-x64': 0.34.5 - shiki@3.15.0: + shiki@3.22.0: dependencies: - '@shikijs/core': 3.15.0 - '@shikijs/engine-javascript': 3.15.0 - '@shikijs/engine-oniguruma': 3.15.0 - '@shikijs/langs': 3.15.0 - '@shikijs/themes': 3.15.0 - '@shikijs/types': 3.15.0 + '@shikijs/core': 3.22.0 + '@shikijs/engine-javascript': 3.22.0 + '@shikijs/engine-oniguruma': 3.22.0 + '@shikijs/langs': 3.22.0 + '@shikijs/themes': 3.22.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -6779,11 +7093,11 @@ snapshots: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.3 + sax: 1.4.4 smart-buffer@4.2.0: {} - smol-toml@1.5.2: {} + smol-toml@1.6.0: {} socks-proxy-agent@8.0.5: dependencies: @@ -6813,24 +7127,25 @@ snapshots: speedline-core@1.4.3: dependencies: - '@types/node': 24.10.1 + '@types/node': 25.2.3 image-ssim: 0.2.0 jpeg-js: 0.4.4 - starlight-image-zoom@0.13.2(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1))): + starlight-image-zoom@0.13.2(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1))): dependencies: - '@astrojs/starlight': 0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) + '@astrojs/starlight': 0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) mdast-util-mdx-jsx: 3.2.0 rehype-raw: 7.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 transitivePeerDependencies: - supports-color - starlight-links-validator@0.19.1(@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1))): + starlight-links-validator@0.19.2(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)))(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)): dependencies: - '@astrojs/starlight': 0.36.2(astro@5.15.9(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.2)(terser@5.44.1)(typescript@5.6.2)(yaml@2.7.1)) + '@astrojs/starlight': 0.37.6(astro@5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1)) '@types/picomatch': 3.0.2 + astro: 5.17.2(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.6.2)(yaml@2.7.1) github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-has-property: 3.0.0 @@ -6840,11 +7155,11 @@ snapshots: mdast-util-to-string: 4.0.0 picomatch: 4.0.3 terminal-link: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 transitivePeerDependencies: - supports-color - statuses@2.0.1: {} + statuses@2.0.2: {} stream-replace-string@2.0.0: {} @@ -6852,7 +7167,7 @@ snapshots: dependencies: events-universal: 1.0.1 fast-fifo: 1.3.2 - text-decoder: 1.2.3 + text-decoder: 1.2.5 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -6900,12 +7215,22 @@ snapshots: supports-color@10.2.2: {} - supports-hyperlinks@4.3.0: + supports-hyperlinks@4.4.0: dependencies: has-flag: 5.0.1 supports-color: 10.2.2 - tailwindcss@4.1.17: {} + svgo@4.0.0: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.4.4 + + tailwindcss@4.1.18: {} tapable@2.3.0: {} @@ -6921,7 +7246,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.5.1 + bare-fs: 4.5.4 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller @@ -6938,7 +7263,7 @@ snapshots: tar-stream@3.1.7: dependencies: - b4a: 1.7.3 + b4a: 1.7.4 fast-fifo: 1.3.2 streamx: 2.23.0 transitivePeerDependencies: @@ -6947,19 +7272,19 @@ snapshots: terminal-link@5.0.0: dependencies: - ansi-escapes: 7.2.0 - supports-hyperlinks: 4.3.0 + ansi-escapes: 7.3.0 + supports-hyperlinks: 4.4.0 - terser@5.44.1: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 - text-decoder@1.2.3: + text-decoder@1.2.5: dependencies: - b4a: 1.7.3 + b4a: 1.7.4 transitivePeerDependencies: - react-native-b4a @@ -7007,7 +7332,7 @@ snapshots: typescript@5.6.2: {} - ufo@1.6.1: {} + ufo@1.6.3: {} ultrahtml@1.6.0: {} @@ -7020,16 +7345,6 @@ snapshots: undici-types@7.16.0: {} - unicode-properties@1.4.1: - dependencies: - base64-js: 1.5.1 - unicode-trie: 2.0.0 - - unicode-trie@2.0.0: - dependencies: - pako: 0.2.9 - tiny-inflate: 1.0.3 - unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -7040,7 +7355,7 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unifont@0.6.0: + unifont@0.7.3: dependencies: css-tree: 3.1.0 ofetch: 1.5.1 @@ -7075,7 +7390,7 @@ snapshots: unist-util-remove-position@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 unist-util-stringify-position@4.0.0: dependencies: @@ -7090,7 +7405,7 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.1 - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 @@ -7098,16 +7413,16 @@ snapshots: unpipe@1.0.0: {} - unstorage@1.17.2: + unstorage@1.17.4: dependencies: anymatch: 3.1.3 - chokidar: 4.0.3 + chokidar: 5.0.0 destr: 2.0.5 - h3: 1.15.4 - lru-cache: 10.4.3 + h3: 1.15.5 + lru-cache: 11.2.6 node-fetch-native: 1.6.7 ofetch: 1.5.1 - ufo: 1.6.1 + ufo: 1.6.3 util-deprecate@1.0.2: {} @@ -7130,25 +7445,25 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1): + vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.2 + rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 25.2.3 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - terser: 5.44.1 + terser: 5.46.0 yaml: 2.7.1 - vitefu@1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1)): + vitefu@1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1)): optionalDependencies: - vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.7.1) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.7.1) web-namespaces@2.0.1: {} @@ -7190,7 +7505,7 @@ snapshots: ws@7.5.10: {} - ws@8.18.3: {} + ws@8.19.0: {} ws@8.5.0: {} @@ -7228,7 +7543,7 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.24.6(zod@3.25.76): + zod-to-json-schema@3.25.1(zod@3.25.76): dependencies: zod: 3.25.76 diff --git a/src/content/docs/configuration/customizing_plugins.mdx b/src/content/docs/configuration/customizing_plugins.mdx index 27c4cd1d8..c7661d65e 100644 --- a/src/content/docs/configuration/customizing_plugins.mdx +++ b/src/content/docs/configuration/customizing_plugins.mdx @@ -78,19 +78,18 @@ return { }, }, }, - -- customize treesitter parsers + -- customize enabled AstroLSP servers { - "nvim-treesitter/nvim-treesitter", + "AstroNvim/astrolsp", opts = function(_, opts) - -- list like portions of a table cannot be merged naturally and require the user to merge it manually + -- list like portions of a table cannot be merged naturally and may require the user to merge it manually -- check to make sure the key exists - if not opts.ensure_installed then - opts.ensure_installed = {} + if not opts.servers then + opts.servers = {} end - vim.list_extend(opts.ensure_installed, { - "lua", - "vim", - -- add more arguments for adding more treesitter parsers + vim.list_extend(opts.servers, { + "lua_ls", + -- add more arguments for manually enabling more language servers }) end, }, @@ -110,19 +109,19 @@ The `table` notation is the simplest method for configuration but does not cover :::tip -Since [`lazy.nvim` v10.23.0](https://github.com/folke/lazy.nvim/releases/tag/v10.23.0) a new configuration option has been added called `opts_extend` which allows specifying that a part of the options passed to the `opts` table should be treated as a list that is extended rather than replaced completely as described below. Since [AstroNvim v4.9.0](https://github.com/AstroNvim/AstroNvim/releases/tag/v4.9.0) this option has been enabled out of the box for the `ensure_installed` tables for [`nvim-treesitter`](https://github.com/nvim-treesitter/nvim-treesitter) and [`mason-tool-installer.nvim`](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim). This allows the user to use the basic table notation to simply add more items to these `ensure_installed` lists. +Since [`lazy.nvim` v10.23.0](https://github.com/folke/lazy.nvim/releases/tag/v10.23.0) a new configuration option has been added called `opts_extend` which allows specifying that a part of the options passed to the `opts` table should be treated as a list that is extended rather than replaced completely as described below. Since [AstroNvim v4.9.0](https://github.com/AstroNvim/AstroNvim/releases/tag/v4.9.0) this option has been enabled out of the box for the `ensure_installed` tables for [`mason-tool-installer.nvim`](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim). This allows the user to use the basic table notation to simply add more items to these `ensure_installed` lists. ::: -Let's take a closer look at these two notations with an example using [`nvim-treesitter`](https://github.com/nvim-treesitter/nvim-treesitter). Let's assume the default configuration for `nvim-treesitter` is: +Let's take a closer look at these two notations with an example using [`mason-tool-installer.nvim`](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim). Let's assume the default configuration for `mason-tool-installer` is: ```lua return { - "nvim-treesitter/nvim-treesitter", + "WhoIsSethDaniel/mason-tool-installer.nvim", opts = { - ensure_installed = { "lua", "vim" }, - highlight = { - enable = true, + ensure_installed = { "lua_ls" }, + integrations = { + ["mason-lspconfig"] = true, }, }, } @@ -132,9 +131,9 @@ With this specification the current `opts` would resolve to the table: ```lua opts = { - ensure_installed = { "lua", "vim" }, - highlight = { - enable = true, + ensure_installed = { "lua_ls" }, + integrations = { + ["mason-lspconfig"] = true, }, } ``` @@ -143,67 +142,36 @@ If you use the table notation to override these fields in your configuration lik ```lua return { - "nvim-treesitter/nvim-treesitter", + "WhoIsSethDaniel/mason-tool-installer.nvim", opts = { - ensure_installed = { "python" }, - highlight = { - enable = false, + ensure_installed = { "prettier" }, + integrations = { + ["mason-lspconfig"] = false, + ["mason-nvim-dap"] = true, }, - indent = { - enable = false, - }, - }, -} -``` - -You would end up with the `opts` resolving to: - -```lua -opts = { - ensure_installed = { "python" }, - highlight = { - enable = false, - }, - indent = { - enable = false, }, } ``` -The `highlight.enabled` and `indent.enabled` fields work as expected, but the `ensure_installed` table does not actually extend the list and instead simply overwrites it. This is a limitation of the table merging. To resolve this we can rewrite our `opts` as a function where the first parameter is the resolve plugin specification (this is rarely used but may be useful in very advanced cases) and the second parameter which is the current `opts` table: - -```lua -return { - "nvim-treesitter/nvim-treesitter", - opts = function(plugin, opts) - table.insert(opts.ensure_installed, "python") - end, -} -``` - You would end up with the `opts` resolving to: ```lua opts = { - ensure_installed = { "lua", "vim", "python" }, - highlight = { - enable = true, + ensure_installed = { "prettier" }, + integrations = { + ["mason-lspconfig"] = false, + ["mason-nvim-dap"] = true, }, } ``` -One thing to watch out for (that `table` merging handles automatically, but the function notation does not) is the creation of nested/parent keys. When using a function to modify `opts`, you’re responsible for ensuring that nested tables exist before setting any values on them. For example, if we want to set `indent.enable = true` in our `opts` with the function notation, it would look something like this: +The `integrations.mason-lspconfig` and `integrations.mason-nvim-dap` fields work as expected, but the `ensure_installed` table does not actually extend the list and instead simply overwrites it. This is a limitation of the table merging. To resolve this we can rewrite our `opts` as a function where the first parameter is the resolve plugin specification (this is rarely used but may be useful in very advanced cases) and the second parameter which is the current `opts` table: ```lua return { - "nvim-treesitter/nvim-treesitter", + "WhoIsSethDaniel/mason-tool-installer.nvim", opts = function(plugin, opts) - -- check if an `indent` table exists, if not, create it - if not opts.indent then - opts.indent = {} - end - -- once we know it is created, we can set the sub-keys - opts.indent.enable = true + table.insert(opts.ensure_installed, "prettier") end, } ``` @@ -212,12 +180,9 @@ You would end up with the `opts` resolving to: ```lua opts = { - ensure_installed = { "lua", "vim", "python" }, - highlight = { - enable = true, - }, - indent = { - enable = true, + ensure_installed = { "lua_ls", "prettier" }, + integrations = { + ["mason-lspconfig"] = true, }, } ``` @@ -226,7 +191,7 @@ Notice how we didn't return anything from this function. In Lua, tables are pass ```lua return { - "nvim-treesitter/nvim-treesitter", + "WhoIsSethDaniel/mason-tool-installer.nvim", opts = function(plugin, opts) return {} end, @@ -239,7 +204,7 @@ You would end up with the `opts` resolving to: opts = {} ``` -The last thing that this function notation provides is the ability to `require` modules safely even with lazy loading. `nvim-treesitter` isn't a great example of this, so here is a simple example with `nvim-cmp`. `nvim-cmp` allows the configuration of mappings and provides helper functions to make setting these mappings easy. Because `nvim-cmp` is lazy loaded, the function notation is required in this situation so that we don't break the lazy loading: +The last thing that this function notation provides is the ability to `require` modules safely even with lazy loading. `mason-tool-installer.nvim` isn't a great example of this, so here is a simple example with `nvim-cmp`. `nvim-cmp` allows the configuration of mappings and provides helper functions to make setting these mappings easy. Because `nvim-cmp` is lazy loaded, the function notation is required in this situation so that we don't break the lazy loading: ```lua return { @@ -293,17 +258,17 @@ return { ##### `list_insert_unique` -Other times when you do list inserting you want to safely insert new entries into a list but skip over values that already exist. This is useful if you are importing lots of language packs in AstroCommunity. Here is the previous `nvim-treesitter` example above using this function: +Other times when you do list inserting you want to safely insert new entries into a list but skip over values that already exist. This is useful if you are importing lots of language packs in AstroCommunity. Here is the previous `mason-tool-installer` example above using this function: ```lua return { - "nvim-treesitter/nvim-treesitter", + "WhoIsSethDaniel/mason-tool-installer.nvim", opts = function(plugin, opts) -- `list_insert_unique` is in place, so it will modify -- the first parameter table if provided require("astrocore").list_insert_unique( opts.ensure_installed, - { "python", "vim" } + { "lua_ls", "prettier" } ) end, } diff --git a/src/content/docs/configuration/lua_completion.mdx b/src/content/docs/configuration/lua_completion.mdx index 1b2fd5aa8..aaf530d89 100644 --- a/src/content/docs/configuration/lua_completion.mdx +++ b/src/content/docs/configuration/lua_completion.mdx @@ -28,31 +28,6 @@ return { } ``` -:::tip - -AstroLSP allows for language server configuration completion by utilizing types exposed by the `nvim-lspconfig` plugin. One downside is the type does complain that "fields are missing" even though they are not actually required. To work around this, it can be useful and less noisy if you add - -``` ----@diagnostic disable: missing-fields -``` - -before the `config` table. Here is an example: - -```lua title="lua/plugins/astrolsp.lua" {5} -return { - "AstroNvim/astrolsp", - ---@type AstroLSPOpts - opts = { - ---@diagnostic disable: missing-fields - config = { - -- LSP options and server configuration go here... - }, - }, -} -``` - -::: - ### `opts` Function Other times a function may be required if you want to include any sort of special logic for calculating the table or for handling cases that table merging doesn't deal with properly such as list-like tables. Here you need to specify the type of the parameter in the function. diff --git a/src/content/docs/configuration/v5_migration.mdx b/src/content/docs/configuration/v5_migration.mdx deleted file mode 100644 index fbc3aabf2..000000000 --- a/src/content/docs/configuration/v5_migration.mdx +++ /dev/null @@ -1,220 +0,0 @@ ---- -id: v5_migration -title: Migration to v5.0 ---- - -import { Steps } from "@astrojs/starlight/components"; - -While AstroNvim v4 came with a large restructuring of the configuration organization, AstroNvim v5 is a much smaller major version release and mainly comes with some modernization of plugins and small quality of life improvements. The most notable change in AstroNvim v5 is that support for Neovim \<0.10 has been dropped and users must be running either Neovim stable releases of v0.10 or v0.11. Most of the migration will only apply to users who have gone and customized the plugins that have been replaced. The plugin replacements come from various reasons such as plugins getting archived (`dressing.nvim`), better performance, more stable development practices, and overall simplification. - -:::note - -Before getting started it is recommended to review the [Getting Started](/) guide. The guide explains how AstroNvim uses `lazy.nvim` and it also explains the AstroNvim configuration template, which is the recommended way to migrate from the previous version. - -::: - -## Setting Up a Migration Environment - -Breaking your working editor configuration when migrating to v5 will make it difficult to edit your new configuration. As such, we **recommend following the process** below so that your existing editor keeps working while you upgrade to the new v5 configuration. This workflow makes use of an [Isolated Installation](/reference/alt_install/#isolated-installation) environment. - -:::tip - -Checkout the [Managing User Configuration Page](/configuration/manage_user_config) for details on how to create a new git repository from our template or convert the clone described above into a repository. It is highly recommended to set up your configuration as a git repository so that it is backed up as well as easier to share. - -::: - -:::tip - -Rather than cloning the template into `~/.config/astronvim_v5`, you can also clone your personal configuration into that location and change the AstroNvim version in the `lazy_setup.lua` file to `"^5"` and do the migration with your current configuration while using your old installation as the main editor while testing. - -::: - - - -1. Clone the AstroNvim v5 configuration template to a new location (`astronvim_v5` is used as the example): - - ```sh - git clone https://github.com/AstroNvim/template ~/.config/astronvim_v5 - rm -rf ~/.config/astronvim_v5/.git - ``` - -2. Start `nvim` in the new environment. `nvim` should start, bootstrap itself by installing and loading `lazy.nvim`. Lazy will load all of the plugins specified by AstroNvim. - - ```sh - NVIM_APPNAME=astronvim_v5 nvim - ``` - -3. Migrate your AstroNvim v4 configuration to your new AstroNvim v5 environment at `~/.config/astronvim_v5` using the guide below. You can use your previous AstroNvim setup to do the editing and then continue running the command in Step 2 to test the new installation. - -4. Once you have your configuration set up how you like it, move it over to the default neovim configuration location `~/.config/nvim`: - - ```sh - # Backup old Neovim folders - mv ~/.local/share/nvim ~/.local/share/nvim.bak # backup old data folder - mv ~/.local/state/nvim ~/.local/state/nvim.bak # backup old state folder - mv ~/.cache/nvim ~/.cache/nvim.bak # backup old cache folder - mv ~/.config/nvim ~/.config/nvim.bak # backup old config - # Move new configuration into place - mv ~/.config/astronvim_v5 ~/.config/nvim # move new config - ``` - -5. Run your new v5 environment simply with `nvim` 🎉 - - - -## Migration Guide - -### Configuration Option Changes - -:::caution - -This is a work in progress. This guide is taking shape and covers much of the migration. There are holes though! If you see something missing drop a note on the Discord `#next` channel or open a pull request on GitHub. - -::: - -Each "Migrating" section below has an link to documentation and/or an example configuration. Each example configuration file shows the structure for configuring that plugin. The comments in each example configuration describes the configuration keys. - -The [plugin configuration files.](https://github.com/AstroNvim/AstroNvim/tree/main/lua%2Fastronvim%2Fplugins) in the AstroNvim codebase itself are also a good reference to learn how to configure. - -**Please also read the [Other Breaking Changes section](#other-breaking-changes)** - there are a number of changes that are not just "move some config from one place to another". For example, in key mapping `` is no longer recognized. - -If you get stuck, people on the [Discord](https://discord.astronvim.com/) forum are active and friendly! Like all humans, sometimes they are grumpy, so be nice to them! The best place to post is most likely the `#help-forum`, but poke around a few of the other channels, you never know what you will find that is useful. - -### Plugin Changes - -AstroNvim v5 comes with some changes to our default plugin list that user's should keep in mind while performing the migration. - -#### Overview - -| Old Plugin | New Plugin | -| --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| N/A | [`mason-tool-installer.nvim`](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim) | -| [`alpha-nvim`](https://github.com/goolord/alpha-nvim) | [`snacks.nvim`](https://github.com/folke/snacks.nvim) | -| [`dressing.nvim`](https://github.com/stevearc/dressing.nvim) | [`snacks.nvim`](https://github.com/folke/snacks.nvim) | -| [`indent-blankline.nvim`](https://github.com/lukas-reineke/indent-blankline.nvim) | [`snacks.nvim`](https://github.com/folke/snacks.nvim) | -| [`lspkind.nvim`](https://github.com/onsails/lspkind.nvim) | [`mini.icons`](https://github.com/echasnovski/mini.icons) | -| [`mini.bufremove`](https://github.com/echasnovski/mini.bufremove) | [`snacks.nvim`](https://github.com/folke/snacks.nvim) | -| [`nvim-cmp`](https://github.com/hrsh7th/nvim-cmp) | [`blink.cmp`](https://github.com/Saghen/blink.cmp) | -| [`nvim-colorizer.lua`](https://github.com/NvChad/nvim-colorizer.lua) | [`nvim-highlight-colors`](https://github.com/brenoprata10/nvim-highlight-colors) | -| [`nvim-notify`](https://github.com/rcarriga/nvim-notify) | [`snacks.nvim`](https://github.com/folke/snacks.nvim) | -| [`nvim-web-devicons`](https://github.com/nvim-tree/nvim-web-devicons) | [`mini.icons`](https://github.com/echasnovski/mini.icons) | -| [`telescope.nvim`](https://github.com/nvim-telescope/telescope.nvim) | [`snacks.nvim`](https://github.com/folke/snacks.nvim) | - -#### Details - -- [`mason-tool-installer.nvim`](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim) (New Plugin) - - AstroNvim is now relying on `mason-tool-installer.nvim` rather than `mason-lspconfig`/`mason-nvim-dap`/`mason-null-ls`. This makes configuration of installed packages easier rather than managing several `ensure_installed` tables and also adds support for installing packages automatically that are not part of any of those usecase specific plugins. `mason-tool-installer.nvim` also allows the user to specify specific package versions and other options. Check out the [`mason-tool-installer.nvim` Documentation](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim) for details on it's configuration. - - For migration, anywhere in your configuration where you are configuring `ensure_installed` for `mason-lspconfig`/`mason-nvim-dap`/`mason-null-ls`, you should move those to an `ensure_installed` table in `mason-tool-installer.nvim`. You must also change the name of the package where necessary to properly reflect the name of the package in Mason. For instance, if you have `lua_ls` specified for `mason-lspconfig`, this would be `lua-language-server` in `mason-tool-installer.nvim`. -- [`alpha-nvim`](https://github.com/goolord/alpha-nvim) → [`snacks.nvim`](https://github.com/folke/snacks.nvim) - - If you are customizing `alpha-nvim`, checkout the [updated Dashboard Customizations recipes](/recipes/dashboard) and the [`snacks.dashboard` Documentation](https://github.com/folke/snacks.nvim/blob/main/docs/dashboard.md) for how to implement the same customizations in the new plugin. -- [`dressing.nvim`](https://github.com/stevearc/dressing.nvim) → [`snacks.nvim`](https://github.com/folke/snacks.nvim) - - If you are customizing the `input` field in `dressing.nvim`, check out the [`snacks.input` Documentation](https://github.com/folke/snacks.nvim/blob/main/docs/input.md) for how to implement the same customizations in the new plugin. - - If you are customizing the `select` field in `dressing.nvim`, checkout the [`snacks.picker` Documentation](https://github.com/folke/snacks.nvim/blob/main/docs/picker.md) for how to implement the same customizations in the new plugin. -- [`indent-blankline.nvim`](https://github.com/lukas-reineke/indent-blankline.nvim) → [`snacks.nvim`](https://github.com/folke/snacks.nvim) - - If you are customizing `indent-blankline.nvim`, checkout the [`snacks.indent` Documentation](https://github.com/folke/snacks.nvim/blob/main/docs/indent.md) for how to implement the same customizations in the new plugin. -- [`lspkind.nvim`](https://github.com/onsails/lspkind.nvim) → [`mini.icons`](https://github.com/echasnovski/mini.icons) - - - If you are customizing lsp kind icons, check out the [`mini.icons` Documentation](https://github.com/echasnovski/mini.icons/blob/main/doc/mini-icons.txt) for how to implement the same custom icons in the new plugin. - - If you have customized the `mode` option in `lspkind.nvim` to change the look of the LSP icons, this can be done easily by customizing the [`completion.menu.draw.columns`](https://cmp.saghen.dev/configuration/completion.html#menu-draw) option in `blink.cmp`: - - ```lua title="lua/plugins/blink_menu.lua" - return { - "Saghen/blink.cmp", - opts = { - completion = { - menu = { - draw = { - columns = { - -- rearrange these as necessary to match desired look - { "label", "label_description", gap = 1 }, - { "kind_icon", "kind", gap = 1 }, - }, - }, - }, - }, - }, - } - ``` - -- [`mini.bufremove`](https://github.com/echasnovski/mini.bufremove) → [`snacks.nvim`](https://github.com/folke/snacks.nvim) - - If you are using any of the API provided by `mini.bufremove`, check out the [`snacks.bufdelete` Documentation](https://github.com/folke/snacks.nvim/blob/main/docs/bufdelete.md) for the new method names to call. -- [`nvim-cmp`](https://github.com/hrsh7th/nvim-cmp) → [`blink.cmp`](https://github.com/Saghen/blink.cmp) - - If you are customizing `nvim-cmp`, checkout the [updated Cmp Customizations recipes](/recipes/cmp) and the [`blink.cmp` Documentation](https://cmp.saghen.dev/) for how to implement the same customizations in the new plugin. -- [`nvim-colorizer.lua`](https://github.com/NvChad/nvim-colorizer.lua) → [`nvim-highlight-colors`](https://github.com/brenoprata10/nvim-highlight-colors) - - If you are customizing `nvim-colorizer.lua`, check out the [`nvim-highlight-colors` Documentation](https://github.com/brenoprata10/nvim-highlight-colors) for how to implement the same customizations in the new plugin. -- [`nvim-notify`](https://github.com/rcarriga/nvim-notify) → [`snacks.nvim`](https://github.com/folke/snacks.nvim) - - If you are customizing `nvim-notify`, checkout the [`snacks.notify` Documentation](https://github.com/folke/snacks.nvim/blob/main/docs/notify.md) for how to implement the same customizations in the new plugin. -- [`nvim-web-devicons`](https://github.com/nvim-tree/nvim-web-devicons) → [`mini.icons`](https://github.com/echasnovski/mini.icons) - - If you are customizing icons, check out the [`mini.icons` Documentation](https://github.com/echasnovski/mini.icons/blob/main/doc/mini-icons.txt) for how to implement the same custom icons in the new plugin. -- [`telescope.nvim`](https://github.com/nvim-telescope/telescope.nvim) → [`snacks.nvim`](https://github.com/folke/snacks.nvim) - - If you are customizing `telescope.nvim`, checkout the [`snacks.picker` Documentation](https://github.com/folke/snacks.nvim/blob/main/docs/picker.md) for how to implement the same customizations in the new plugin. - - Some plugins have strong `telescope.nvim` integration, if you have plugins such as this, look to see if they have support for `snacks.picker` or just the native `vim.ui.select` function which will use `snacks.picker`. - - If you want to revert back to using `telescope.nvim`, you can install it from [AstroCommunity](https://github.com/AstroNvim/astrocommunity/tree/main/lua/astrocommunity/fuzzy-finder/telescope-nvim) - -### AstroNvim Core Plugin Changes - -#### AstroCore - -- The `system_open` function has been removed and any references to `require("astrocore").system_open()` should be replaced with `vim.ui.open()` -- The `features.diagnostics_mode` configuration option has been simplified to just be `features.diagnostics`. This new value is either a boolean (`true`/`false`) to enable/disable diagnostics completely on startup, or it can be a table in the form of `{ virtual_text = true, virtual_lines = false }` to control the display of virtual text/virtual lines on startup. New toggles have been added (`uv` and `uV`) to toggle the virtual text and virtual lines at runtime. -- The mapping `ud` simply enables/disables diagnostics completely rather than managing various different states. -- The `mappings` configuration table now does some basic normalization which means specific casing of the keys should not matter as much. It is still recommended to use the official keycode casing to maintain the most stable behavior (keycode casing can be found in [`:h keycodes`](https://neovim.io/doc/user/intro.html#keycodes)). -- The `mason` module has been removed. If you are using `require("astrocore.mason")` anywhere, investigate the APIs available from [`mason.nvim`](https://github.com/williamboman/mason.nvim/blob/main/doc/reference.md) and [`mason-tool-installer.nvim`](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim) for alternatives. - -#### AstroLSP - -- Configuration of `vim.lsp.buf.hover` and `vim.lsp.buf.signature_help` are no longer configured through the `handlers["textDocument/hover"]` and `handlers["textDocument/signature_help"]` configuration options. This is because of a breaking change in core Neovim where these are no longer configured as such. The options are now configured through a new `defaults` table in the AstroLSP configuration (`defaults.hover` and `defaults.signature_help`). If you have customized those handlers in your configuration, then check the [AstroLSP Documentation](https://github.com/AstroNvim/astrolsp) for where to place those configurations. -- The `mappings` configuration table now does some basic normalization which means specific casing of the keys should not matter as much. It is still recommended to use the official keycode casing to maintain the most stable behavior (keycode casing can be found in [`:h keycodes`](https://neovim.io/doc/user/intro.html#keycodes)). - -#### AstroUI - -- Introduction of a new `folding` module for a custom built `foldexpr` function in order to replace `nvim-ufo`. - - This feature is currently only enabled by default if you are using Neovim v0.11 as this provides LSP based folding out of the box, but if you want to use it with Neovim v0.10 then you can simply disable `nvim-ufo` in your user configuration. - - When in use, it also exposes a new command, `:AstroFoldInfo` which displays the current fold information. - - The folding behavior can also be configured through the new `folding` configuration table which can be explored through the [AstroUI Documentation](https://github.com/AstroNvim/astroui) which allows the user to configure when folding is enabled as well as which folding methods are utilized (currently supports treesitter based folding, indentation based folding, and LSP based folding which is Neovim v0.11 only). -- AstroUI status providers and component defaults options can now be configured in the `opts` table through `status.providers` and `status.components`. - - - All of these options have strong typing and autocompletion as long as the type is set with Lua annotations in the code (an example of this is shown in the code example below). - - This is primarily useful for customizing default options for the providers such as setting up custom LSP client name mappings or alignment/padding of some elements without having to fully modify the statusline in `heirline.nvim`. For example, if you want to set up custom LSP client names to be displayed, you can do the following: - - ```lua title="lua/plugins/astroui_lsp_client_names.lua" - return { - "AstroNvim/astroui", - ---@type AstroUIOpts - opts = { - status = { - providers = { - lsp_client_names = { - mappings = { - -- display `lua_ls` as just `LUA` in the statusline - lua_ls = "LUA", - }, - }, - }, - }, - }, - } - ``` - -### Other Breaking Changes - -- Drop support for Neovim v0.9 -- `AstroMasonUpdate` and `AstroMasonUpdateAll` commands have been removed in favor for the commands provided by [`mason-tool-installer`](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim) -- The mapping `` for saving while in insert mode has been removed as this is now a core Neovim binding for showing signature help. -- The mapping `gI` for lsp implementation has been moved to `gri` to align with new core Neovim default LSP mappings - -### New Features - -Some changes have been made that do not necessarily require any user intervention during the migration, but are just new features! Here are a few highlights - -- Neovim v0.11 adds a ton of great new features such as `vim.lsp.foldexpr` and context based comment strings. When using Neovim v0.11 we disable a few plugins and just rely on core features - - `Comment.nvim` and `nvim-ts-context-commentstring` are disabled in Neovim v0.11 in favor of the built in commenting features - - `nvim-ufo` is disabled in Neovim v0.11 in favor of the new AstroUI based fold expression. This provides a much clearer implementation of folding rather than relying on the "manual" fold method which can lead to some strange behavior. -- With Neovim v0.11 diagnostic navigation bindings (`[d`/`]d`/`[w`/`]w`/`[e`/`]e`) support `v:count`, for example `3]e` will navigate 3 errors forward. -- New mappings `gco` and `gcO` for inserting new comments below and above the current line -- New mappings `uv` and `uV` for toggling diagnostic virtual text and virtual lines (virtual lines are only available in Neovim v0.11 and can replace plugins such as `lsp_lines.nvim`) -- New mapping `gO` for document symbols to align with new core Neovim default LSP mappings -- New mapping `uZ` for toggling "Zen mode" for the current buffer which maximizes the buffer, centers the code, and disables most of the "eye candy" such as diagnostics -- New mapping `go` for opening the current buffer's git URL in the browser if it is a git tracked file -- A new command, `:AstroRename` has been added which renames the current file. This uses a new function in AstroCore, [`require("astrocore").rename_file()`](https://github.com/AstroNvim/astrocore/blob/main/doc/api.md#rename_file) -- AstroLSP has a full implementation for LSP based file operations which can help with things such as updating import statements when renaming files. These features are now enabled by default and have integration with [`neo-tree.nvim`](https://github.com/nvim-neo-tree/neo-tree.nvim) when moving and renaming files as well as the `:AstroRename` command diff --git a/src/content/docs/configuration/v6_migration.mdx b/src/content/docs/configuration/v6_migration.mdx new file mode 100644 index 000000000..5b4bf7a1f --- /dev/null +++ b/src/content/docs/configuration/v6_migration.mdx @@ -0,0 +1,247 @@ +--- +id: v6_migration +title: Migration to v6.0 +--- + +import { Steps } from "@astrojs/starlight/components"; + +AstroNvim v6 brings together many exciting updates mainly focusing on moving towards newer Neovim APIs. Neovim v0.11 introduced a new LSP configuration API (`vim.lsp.config`) which over the past year has been refined and cleaned up. Now with the release of Neovim v0.12 this API seems to be stable and nearly has feature parity with the original method with the API previously provided by `nvim-lspconfig`. Along with this LSP restructuring, Neovim has been pushing to integrate a solid treesitter API into the core Neovim codebase. This has led to a big refactor of the `nvim-treesitter` plugin to simply act as a treesitter language parser download utility rather than providing modules and functionality. AstroNvim v6 adapts to both of these major breaking changes and utilizes it's core plugins such as AstroCore and AstroLSP to make sure these features are still easy to configure for users. Along with these we have removed a few legacy plugins that were only enabled in Neovim v0.10 as well as plugins that do not support the new `vim.lsp.config` APIs. + +:::note + +Before getting started it is recommended to review the [Getting Started](/) guide. The guide explains how AstroNvim uses `lazy.nvim` and it also explains the AstroNvim configuration template, which is the recommended way to migrate from the previous version. + +::: + +## Setting Up a Migration Environment + +Breaking your working editor configuration when migrating to v6 will make it difficult to edit your new configuration. As such, we **recommend following the process** below so that your existing editor keeps working while you upgrade to the new v6 configuration. This workflow makes use of an [Isolated Installation](/reference/alt_install/#isolated-installation) environment. + +:::tip + +Checkout the [Managing User Configuration Page](/configuration/manage_user_config) for details on how to create a new git repository from our template or convert the clone described above into a repository. It is highly recommended to set up your configuration as a git repository so that it is backed up as well as easier to share. + +::: + +:::tip + +Rather than cloning the template into `~/.config/astronvim_v6`, you can also clone your personal configuration into that location and change the AstroNvim version in the `lazy_setup.lua` file to `"^6"` and do the migration with your current configuration while using your old installation as the main editor while testing. + +::: + + + +1. Clone the AstroNvim v6 configuration template to a new location (`astronvim_v6` is used as the example): + + ```sh + git clone https://github.com/AstroNvim/template ~/.config/astronvim_v6 + rm -rf ~/.config/astronvim_v6/.git + ``` + +2. Start `nvim` in the new environment. `nvim` should start, bootstrap itself by installing and loading `lazy.nvim`. Lazy will load all of the plugins specified by AstroNvim. + + ```sh + NVIM_APPNAME=astronvim_v6 nvim + ``` + +3. Migrate your AstroNvim v5 configuration to your new AstroNvim v6 environment at `~/.config/astronvim_v6` using the guide below. You can use your previous AstroNvim setup to do the editing and then continue running the command in Step 2 to test the new installation. + +4. Once you have your configuration set up how you like it, move it over to the default neovim configuration location `~/.config/nvim`: + + ```sh + # Backup old Neovim folders + mv ~/.local/share/nvim ~/.local/share/nvim.bak # backup old data folder + mv ~/.local/state/nvim ~/.local/state/nvim.bak # backup old state folder + mv ~/.cache/nvim ~/.cache/nvim.bak # backup old cache folder + mv ~/.config/nvim ~/.config/nvim.bak # backup old config + # Move new configuration into place + mv ~/.config/astronvim_v6 ~/.config/nvim # move new config + ``` + +5. Run your new v6 environment simply with `nvim` 🎉 + + + +## Migration Guide + +### Configuration Option Changes + +:::caution + +This is a work in progress. This guide is taking shape and covers much of the migration. There are holes though! If you see something missing drop a note on the Discord `#next` channel or open a pull request on GitHub. + +::: + +Each "Migrating" section below has an link to documentation and/or an example configuration. Each example configuration file shows the structure for configuring that plugin. The comments in each example configuration describes the configuration keys. + +The [plugin configuration files.](https://github.com/AstroNvim/AstroNvim/tree/main/lua%2Fastronvim%2Fplugins) in the AstroNvim codebase itself are also a good reference to learn how to configure. + +**Please also read the [Other Breaking Changes section](#other-breaking-changes)** - there are a number of changes that are not just "move some config from one place to another". For example, updating default plugins to new releases with breaking changes which may require configuration changes if the user has modified them. + +If you get stuck, people on the [Discord](https://discord.astronvim.com/) forum are active and friendly! Like all humans, sometimes they are grumpy, so be nice to them! The best place to post is most likely the `#help-forum`, but poke around a few of the other channels, you never know what you will find that is useful. + +### Plugin Changes + +AstroNvim v6 comes with some changes to our default plugin list that user's should keep in mind while performing the migration. + +#### Renamed Plugins + +A few plugins have been updated to a new name due to changes in the plugin repository owner. Please make sure to search and replace the old plugin entry names with the new to make sure plugin spec merging happens correctly. + +| Old Plugin Name | New Plugin Name | +| ----------------------------------- | -------------------------------- | +| `Saghen/blink.cmp` | `saghen/blink.cmp` | +| `echasnovski/mini.icons` | `nvim-mini/mini.icons` | +| `williamboman/mason-lspconfig.nvim` | `mason-org/mason-lspconfig.nvim` | +| `williamboman/mason.nvim` | `mason-org/mason.nvim` | + +#### Removed Plugins + +A few plugins have been removed due to being replaced with core Neovim functions or no longer support the new Neovim APIs. + +| Old Plugin Name | Reason | +| --------------------------------------------- | ---------------------------------------------------------- | +| `JoosepAlviste/nvim-ts-context-commentstring` | Not necessary in Neovim v0.11+ and built in commenting | +| `folke/neoconf.nvim` | Does not support `vim.lsp.config` | +| `kevinhwang91/nvim-ufo` | Replaced with built in `foldexpr` | +| `RRethy/vim-illuminate` | Replaced with `snacks.words` module in `folke/snacks.nvim` | + +#### Details + +- `nvim-ufo` and `nvim-ts-context-commentstring` in v5 were only used when users were using Neovim v0.10, so this shouldn't require changes for most users. If you were previously using AstroNvim v5 and Neovim v0.10 please make sure to remove usages of these plugins in your configuration, or if you want to continue using these rather than the built in functionality explore installing them again using AstroCommunity. +- `neoconf.nvim` has been removed as folke is no longer supporting it in lieu of focusing on users utilizing the new `vim.lsp.config` API and the new `lsp/.lua` configuration files. If you were previously using `neoconf.nvim` for project local LSP settings, look into alternatives. A lot of language servers support project configuration files (such as `.luarc` for the Lua language server), for other language servers project local Neovim configuration files can be used with the `exrc` option (see `:h exrc`). + +### AstroNvim Core Plugin Changes + +#### AstroCore + +- Configuration of Treesitter features in Neovim. With the latest development of the `nvim-treesitter` plugin, the plugin has moved to simply being a download utility for treesitter parsers and it is up to the user to configure treesitter features such as highlighting and folding. This also applies to `nvim-treesitter-textobjects` which now is simply a plugin that provides an API for manually creating key mappings. AstroCore has added a new `treesitter` module to help aid with this and can be configured through the plugin configuration `opts`. This configuration table includes the ability to configure both `nvim-treesitter` and `nvim-treesitter-textobjects` in a similar format to how they were configured before. If you have custom configuration for either plugins you will need to migrate those plugin configurations to AstroCore. For more details, checkout the new [Treesitter Configuration Documentation](/recipes/treesitter) + + ```lua title="lua/plugins/astrocore_treesitter.lua" del={2-13} ins={14-28} + return { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { "vim", "lua" }, + highlight = { enable = true }, + textobjects = { + select = { + keymaps = { + ["ak"] = { query = "@block.outer", desc = "around block" }, + }, + }, + }, + }, + "AstroNvim/astrocore", + ---@type AstroCoreOpts + opts = { + treesitter = { + ensure_installed = { "vim", "lua" }, + highlight = true, + textobjects = { + select = { + select_textobject = { + ["ak"] = { query = "@block.outer", desc = "around block" }, + }, + }, + }, + }, + }, + } + ``` + +#### AstroLSP + +The biggest change for AstroLSP is the migration to using `vim.lsp.config` as the backend for language server configuration. In general, this doesn't change all that much of the configuration. The `config` and `handlers` tables can still be used for configuring language server options as well as how they are actually enabled, but now each table has a `["*"]` key for defining defaults. Below is a walk through of each major configuration change: + +- `config["*"]` is now used for the default language server options which in turn calls `vim.lsp.config("*", config_table)`. Previously this was done with separate `capabilities` and `flags` tables at the root of the AstroLSP opts. If you have anything in the `capabilities` or `flags` tables, they should be moved to `config["*"].capabilities` and `config["*"].flags` respectively. + + ```lua title="lua/plugins/astroui_default_config.lua" del={5-12} ins={13-24} + return { + "AstroNvim/astrolsp", + ---@type AstroLSPOpts + opts = { + capabilities = { + textDocument = { + foldingRange = { dynamicRegistration = false }, + }, + }, + flags = { + exit_timeout = 5000, + }, + config = { + ["*"] = { + capabilities = { + textDocument = { + foldingRange = { dynamicRegistration = false }, + }, + }, + flags = { + exit_timeout = 5000, + }, + }, + }, + }, + } + ``` + +- The `handlers` table default handler is no longer done through the first entry with no key which blended list-like and dictionary-like tables. This is now done with the `"*"` key. This makes it clearer to the user which handler is the global one and cleaner to define. The other change is the default handler is now `vim.lsp.enable` by default. Lastly, handler functions here simply provide the server name as a parameter and no longer pass in the server options. Users should use the new `vim.lsp.config[server_name]` built in Neovim LSP API for accessing the resolved language server configuration table. + + ```lua title="lua/plugins/astroui_default_handler.lua" del={6-8} ins={9-14} + return { + "AstroNvim/astrolsp", + ---@type AstroLSPOpts + opts = { + handlers = { + function(server, opts) + require("lspconfig")[server].setup(opts) + end, + ["*"] = function(server) + -- If you need the LSP options for a server use `vim.lsp.config` table + -- This is useful for cases of setting up language server specific plugins + local opts = vim.lsp.config[server] + vim.lsp.enable(server) + end, + }, + }, + } + ``` + +- `require("astrolsp").lsp_opts(server_name)` function has been removed, users should replace all usages with `vim.lsp.config[server_name]`. This typically comes up when configuring language server specific plugins. For migration of language server specific plugins, you should also verify with each plugin to make sure they have support for the new `vim.lsp.config` APIs and Neovim v0.11+. Some plugins that are no longer actively maintained may still rely on old `nvim-lspconfig` APIs that are no longer available. Be sure to check out the updated [Advanced LSP Setup Documentation](/recipes/advanced_lsp). + +- Previously we had a relatively undocumented configuration table for `mason_lspconfig` which allowed hot patching mason-lspconfig to recognize packages that didn't define their language servers. This is no longer necessary as the Mason Registry maintenance has been improved and the registry provides the mapping to language servers rather than `mason-lspconfig` maintaining the mapping. This configuration table and functionality has been removed, if you happen to use it you should remove all usages. + +#### AstroUI + +- No user facing changes, code updated to use new APIs in AstroNvim plugins as well as core Neovim. + +### Other Breaking Changes + +- Drop support for Neovim v0.9 +- `nvim-treesitter/nvim-treesitter` has been updated to the new (and default) `main` branch with the latest rewrite and development. Verify that user installed treesitter based plugins are updated to use this new version rather than the removed module system of the previous `nvim-treesitter` release. +- `nvim-treesitter/nvim-treesitter-textobjects` has been updated to the new (and default) `main` branch. This refactors it to no longer be a module for `nvim-treesitter`. If you are doing configuration of this plugin in your user configuration, make sure to follow the AstroCore changes detailed above. +- `mason-org/mason-lspconfig.nvim` has been updated to v2 which utilizes the new `vim.lsp.config` APIs as well as Mason packages self registering as language servers. Make sure language server specific plugins are not reliant on `mason-lspconfig` v1 if they have any sort of integration. +- `:LspInfo`, `:LspLog`, `:LspStart`, `:LspRestart`, `:LspStop` commands from `nvim-lspconfig` are removed in Neovim v0.12. `:LspInfo` has been replaced with `:checkhealth vim.lsp` and `:Lsp{Start/Restart/Stop}` with the built in `:lsp` command (`:h lsp-commands`). If you are using these commands in your configuration make sure to update them accordingly. + +### New Features + +- Full adoption of `vim.lsp.config` which includes support for configuring language servers with `lsp/.lua` (`:h lsp-config` for more details) +- Migration to using `winborder` Neovim option for specifying window border settings. This provides a single option for choosing to remove borders from floating windows. + + ```lua title="lua/plugins/disable_borders.lua" + return { + { + "AstroNvim/astrocore", + ---@type AstroCoreOpts + opts = { + options = { + opt = { + winborder = "none", + }, + }, + }, + }, + } + ``` + +- New mappings: + - `lw` - Workspace diagnostics (Neovim v0.12+ only) diff --git a/src/content/docs/faq.mdx b/src/content/docs/faq.mdx index 4df8ec5cf..2433c18f5 100644 --- a/src/content/docs/faq.mdx +++ b/src/content/docs/faq.mdx @@ -34,10 +34,6 @@ If you're already using a Nerd Font and face this issue it's very likely that yo If your icons appear too small it's because you're using a Mono font. If a font ends with `mono` the icons will also be monospaced. [Video recommendation](https://youtu.be/mQdB_kHyZn8) on how to install a Nerd Font for a handful of popular terminals. -## Why am I getting `symbol not found` error on Mac OS Sonoma? - -This was a bug in core Neovim not supporting Mac OS Sonoma. Most likely you have an outdated [Neovim](https://github.com/neovim/neovim) version, please update to at least v0.10. - ## Why is `fw` not working? Make sure you have [ripgrep](https://github.com/BurntSushi/ripgrep) installed. For other missing feature please check [optional requirements section](/#-requirements) in the documentation. diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 9f8b1b501..6424946a0 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -6,7 +6,7 @@ head: content: Getting Started banner: content: | - AstroNvim v5 is officially released! Upgrade today with the v5 migration guide! + AstroNvim v6 is officially released! Upgrade today with the v6 migration guide! --- import { Tabs, TabItem, FileTree, Steps } from "@astrojs/starlight/components"; @@ -25,8 +25,9 @@ AstroNvim is an aesthetically pleasing and feature-rich neovim config that is ex ## ⚡ Requirements - [Nerd Fonts](https://www.nerdfonts.com/font-downloads) (_Optional with manual intervention:_ See [Recipes/Customizing Icons](/recipes/icons#disable-icons)) [[1]](#1) -- [Neovim v0.10+ (_Not_ including nightly)](https://github.com/neovim/neovim/releases/tag/stable) -- [Tree-sitter CLI](https://github.com/tree-sitter/tree-sitter/blob/master/crates/cli/README.md) (_Note:_ This is only necessary if you want to use `auto_install` feature with Treesitter) +- [Neovim v0.11+ (_Not_ including nightly)](https://github.com/neovim/neovim/releases/tag/stable) +- [Tree-sitter CLI](https://github.com/tree-sitter/tree-sitter/blob/master/crates/cli/README.md) (_Note:_ If not installed, this will be auto-installed with Mason if available) +- A C compiler in your path (see [https://docs.rs/cc/latest/cc/#compile-time-requirements](https://docs.rs/cc/latest/cc/#compile-time-requirements)) - A clipboard tool is necessary for the integration with the system clipboard (see [`:help clipboard-tool`](https://neovim.io/doc/user/provider.html#clipboard-tool) for supported solutions) - Terminal with true color support (for the default theme, otherwise it is dependent on the theme you are using) [[2]](#2) - Optional Requirements: @@ -161,7 +162,6 @@ docker run -w /root -it --rm alpine:edge sh -uelic ' > Example: `:DapInstall python` - **Manage plugins** - - Run `:Lazy check` (`pu`) to check for plugin updates - Run `:Lazy update` (`pU`) to apply any pending plugin updates - Run `:Lazy sync` (`pS`) to update and clean plugins @@ -186,7 +186,7 @@ docker run -w /root -it --rm alpine:edge sh -uelic ' - Plugin management with [lazy.nvim](https://github.com/folke/lazy.nvim) - Package management with [mason.nvim](https://github.com/williamboman/mason.nvim) - File explorer with [Neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim) -- Autocompletion with [Blink.cmp](https://github.com/Saghen/blink.cmp) +- Autocompletion with [Blink.cmp](https://github.com/saghen/blink.cmp) - Git integration with [Gitsigns](https://github.com/lewis6991/gitsigns.nvim) - Terminal with [Toggleterm](https://github.com/akinsho/toggleterm.nvim) - Fuzzy finding with [snacks.picker](https://github.com/folke/snacks.nvim/blob/main/docs/picker.md) diff --git a/src/content/docs/mappings.mdx b/src/content/docs/mappings.mdx index aefc8d357..39e4d1fdd 100644 --- a/src/content/docs/mappings.mdx +++ b/src/content/docs/mappings.mdx @@ -138,35 +138,36 @@ AstroNvim generally relies on `` driven mappings, which is default set t ## LSP Mappings -| Action | Mappings | -| --------------------------- | -------------------------------- | -| LSP Info | `Leader + li` | -| None-ls Info | `Leader + lI` | -| Hover Document | `K` | -| Format Document | `Leader + lf` | -| Symbols Outline | `Leader + lS` | -| Line Diagnostics | `gl`, `Leader + ld`, ` + d` | -| All Diagnostics | `Leader + lD` | -| Code Actions | `gra`, `Leader + la` | -| Source Code Actions | `Leader + lA` | -| Signature Help | `Leader + lh` | -| Rename | `grn`, `Leader + lr` | -| Document Symbols | `Leader + ls` | -| Workspace Symbols | `Leader + lG` | -| Diagnostic Next | `]d` | -| Diagnostics Previous | `[d` | -| Diagnostic Error Next | `]e` | -| Diagnostic Error Previous | `[e` | -| Diagnostic Warning Next | `]w` | -| Diagnostic Warning Previous | `[w` | -| Document Symbol Next | `]y` | -| Document Symbol Previous | `[y` | -| Document Symbol | `gO` | -| Declaration | `gD` | -| Type Definition | `gy` | -| Definition | `gd` | -| Implementation | `gri` | -| References | `grr`, `Leader + lR` | +| Action | Mappings | +| --------------------------- | ---------------------------------- | +| LSP Info | `Leader + li` | +| None-ls Info | `Leader + lI` | +| Hover Document | `K` | +| Format Document | `Leader + lf` | +| Symbols Outline | `Leader + lS` | +| Line Diagnostics | `gl`, `Leader + ld`, ` + d` | +| All Diagnostics | `Leader + lD` | +| Workspace Diagnostics | `Leader + lw` (Neovim v0.12+ only) | +| Code Actions | `gra`, `Leader + la` | +| Source Code Actions | `Leader + lA` | +| Signature Help | `Leader + lh` | +| Rename | `grn`, `Leader + lr` | +| Document Symbols | `Leader + ls` | +| Workspace Symbols | `Leader + lG` | +| Diagnostic Next | `]d` | +| Diagnostics Previous | `[d` | +| Diagnostic Error Next | `]e` | +| Diagnostic Error Previous | `[e` | +| Diagnostic Warning Next | `]w` | +| Diagnostic Warning Previous | `[w` | +| Document Symbol Next | `]y` | +| Document Symbol Previous | `[y` | +| Document Symbol | `gO` | +| Declaration | `gD` | +| Type Definition | `gy` | +| Definition | `gd` | +| Implementation | `gri` | +| References | `grr`, `Leader + lR` | ## Debugger Mappings diff --git a/src/content/docs/recipes/advanced_lsp.mdx b/src/content/docs/recipes/advanced_lsp.mdx index 0d25c365f..43315883f 100644 --- a/src/content/docs/recipes/advanced_lsp.mdx +++ b/src/content/docs/recipes/advanced_lsp.mdx @@ -7,9 +7,17 @@ LSP configuration is mostly done through the help of [AstroLSP](https://github.c ## Configuring Language Servers -Our main tool for configuring and setting up language servers is with the [nvim-lspconfig plugin](https://github.com/neovim/nvim-lspconfig). This plugin provides configurations for many common language servers (A full list can be found in [nvim-lspconfig server configurations documentation](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md)). These baseline configuration options are not always sufficient to meet everyone's needs, and are typically configured by calling `require("lspconfig")[].setup(opts)` where `opts` is a table of options. For the complete set of options that can be used in the `nvim-lspconfig` setup check out `:h lspconfig-setup` in your editor. +Our main tool for configuring and setting up language servers is with the [nvim-lspconfig plugin](https://github.com/neovim/nvim-lspconfig). This plugin provides configurations for many common language servers (A full list can be found in [nvim-lspconfig server configurations documentation](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md) or `:h lspconfig-all`). These baseline configuration options are not always sufficient to meet everyone's needs. For the complete set of options that can be used when configuraing language servers, check out `:h lsp-config` in your editor. -AstroLSP automatically calls these `setup` functions for language servers installed through Mason and for servers specified manually (See [LSP Setup Without Installer](#lsp-setup-without-installer)). AstroLSP also provides a simple `config` table in the plugin's options for extending the built in server configurations provided by `nvim-lspconfig`. +AstroLSP automatically enables language servers installed through Mason and for servers specified manually (See [LSP Setup Without Installer](#lsp-setup-without-installer)). Neovim allows for easy language server customization within the `after/lsp/` folder in the root of your configuration (Check out `:h lsp-config`). While the `after/lsp/` directory is the recommended way to configure language servers, AstroLSP also provides a simple `config` table in the plugin's options for extending the built in server configurations provided by `nvim-lspconfig`. This can be helpful if you want to conditionally make modifications in your plugin configuration. + +```lua title="lsp/clangd.lua" +return { + capabilities = { + offsetEncoding = "utf-8", + }, +} +``` ```lua title="lua/plugins/astrolsp.lua" {5-13} return { @@ -31,23 +39,34 @@ return { ### Custom LSP Definition -`nvim-lspconfig` is great, but it doesn't support all language servers that exist. You may want to set up a custom server where you manually define the `cmd` and the `root_dir`. This can also be done completely through `servers` and `config` tables similar to configuring servers that are supported by `nvim-lspconfig`! For these custom servers, the minimum requirement is defining a `cmd` in the `config` entry, but to get automatic starting of language servers you also need to set `filetypes` and `root_dir`. Here is a simple example setting up a Prolog LSP with `swipl`: +`nvim-lspconfig` is great, but it doesn't support all language servers that exist. You may want to set up a custom server where you manually define the `cmd` and the `root_markers`. This can be achieved by putting a new file in your `lsp/` folder at the root of your configuration with the necessary information. This can also be done completely through `servers` and `config` tables similar to configuring servers that are supported by `nvim-lspconfig`! For these custom servers, the minimum requirement is defining a `cmd` in the `config` entry, but to get automatic starting of language servers you also need to set `filetypes` and `root_markers`. Here is a simple example setting up a Prolog LSP with `swipl`: -```lua title="lua/plugins/astrolsp.lua" {6-31} +```lua title="lsp/prolog_lsp.lua" +return { + cmd = { + "swipl", + "-g", + "use_module(library(lsp_server)).", + "-g", + "lsp_server:main", + "-t", + "halt", + "--", + "stdio", + }, + filetypes = { "prolog" }, + root_markers = { "pack.pl" }, +} +``` + +```lua title="lua/plugins/astrolsp.lua" {6-23} return { "AstroNvim/astrolsp", - -- we need to use the function notation to get access to the `lspconfig` module - ---@param opts AstroLSPOpts - opts = function(plugin, opts) - -- insert "prolog_lsp" into our list of servers - opts.servers = opts.servers or {} - table.insert(opts.servers, "prolog_lsp") - - -- extend our configuration table to have our new prolog server - opts.config = require("astrocore").extend_tbl(opts.config or {}, { - -- this must be a function to get access to the `lspconfig` module + ---@type AstroLSPOpts + opts = { + servers = { "prolog_lsp" }, -- always necessary to tell AstroNvim to enable the language server + config = { -- only necessary if not configured through `lsp/` prolog_lsp = { - -- the command for starting the server cmd = { "swipl", "-g", @@ -59,34 +78,25 @@ return { "--", "stdio", }, - -- the filetypes to attach the server to filetypes = { "prolog" }, - -- root directory detection for detecting the project root - root_dir = require("lspconfig.util").root_pattern("pack.pl"), + root_markers = { "pack.pl" }, }, - }) - end, + }, + }, } ``` ### LSP Setup Without Installer -AstroNvim comes with [mason-lspconfig](https://github.com/williamboman/mason-lspconfig.nvim) as an easy interface for setting up language servers installed with Mason, but this might not be adequate for all users. The LSP installer doesn't support all of the language servers that Neovim's LSP config supports and some users may already have the language servers installed on their machine and don't want to reinstall it separately. In these cases we have added an easy interface for setting up these servers. The following plugin specification for AstroLSP simply sets up `pyright` language server for a user with `pyright` already available on their system: +AstroNvim comes with [mason-lspconfig](https://github.com/williamboman/mason-lspconfig.nvim) as an easy interface for setting up language servers installed with Mason, but this might not be adequate for all users. The LSP installer doesn't support all of the language servers that Neovim's LSP config supports and some users may already have the language servers installed on their machine and don't want to reinstall it separately. In these cases we have added an easy interface for enabling these servers. The following plugin specification for AstroLSP simply sets up `pyright` language server for a user with `pyright` already available on their system: -```lua title="lua/plugins/astrolsp.lua" {7-12} +```lua title="lua/plugins/astrolsp.lua" {5} return { "AstroNvim/astrolsp", - -- we must use the function override because table merging - -- does not play nicely with list-like tables - ---@param opts AstroLSPOpts - opts = function(plugin, opts) - -- safely extend the servers list - opts.servers = opts.servers or {} - vim.list_extend(opts.servers, { - "pyright", - -- add more servers as needed... - }) - end, + ---@type AstroLSPOpts + opts = { + servers = { "pyright" }, + }, } ``` @@ -315,46 +325,7 @@ Many of these can be found pre-configured in the [AstroNvim Community Repository ::: -There are some plugins available for doing advanced setup of language servers that require the user to not use the `lspconfig` setup call and instead use their own plugin setup for handling this. AstroNvim provides a nice way to do this while still using `mason.nvim` for installing the language servers. You can use the `setup_handlers` table for specifying how language servers should be setup such as using a language specific plugin. This function for each handler has two parameters, the first is the name of the server and the second is the options we would be passing to the `lspconfig` setup call. These options include things such as our built in `capabilities`, `on_attach`, as well as the user defined options in the `config` table. Here are a couple examples for some common LSP plugins: - -### Typescript ([typescript.nvim](https://github.com/jose-elias-alvarez/typescript.nvim)) - -:::tip - -This is included in the [AstroCommunity TypeScript language pack](https://github.com/AstroNvim/astrocommunity/tree/main/lua/astrocommunity/pack/typescript) - -```lua title="lua/community.lua" ins={3} -return { - "AstroNvim/astrocommunity", - { import = "astrocommunity.pack.typescript" }, -} -``` - -::: - -```lua title="lua/plugins/typescript.lua" -return { - { "jose-elias-alvarez/typescript.nvim", lazy = true }, -- add lsp plugin - { - "AstroNvim/astrolsp", - ---@type AstroLSPOpts - opts = { - setup_handlers = { - -- add custom handler - tsserver = function(_, opts) - require("typescript").setup({ server = opts }) - end, - }, - }, - }, - { - "WhoIsSethDaniel/mason-tool-installer.nvim", - opts = { - ensure_installed = { "typescript-language-server" }, -- automatically install lsp - }, - }, -} -``` +There are some plugins available for doing advanced setup of language servers that require the user to not use the `lspconfig` setup call and instead use their own plugin setup for handling this. AstroNvim provides a nice way to do this while still using `mason.nvim` for installing the language servers. You can use the `handlers` table for specifying how language servers should be setup such as using a language specific plugin. This function for each handler can take a single parameter which is the name of the server. The current lsp configuration settings can be retried with `vim.lsp.config[server_name]`. These options include things such as our built in `capabilities`, `on_attach`, as well as the user defined options in and `lsp/.lua` and `after/lsp/.lua` files the `config` table. Here are a couple examples for some common LSP plugins: ### Deno ([deno-nvim](https://github.com/sigmaSd/deno-nvim)) @@ -378,10 +349,10 @@ return { "AstroNvim/astrolsp", ---@type AstroLSPOpts opts = { - setup_handlers = { + handlers = { -- add custom handler - denols = function(_, opts) - require("deno-nvim").setup({ server = opts }) + denols = function() + require("deno-nvim").setup({ server = vim.lsp.config.denols }) end, }, }, @@ -412,30 +383,26 @@ return { ::: -To conditionally enable `tsserver`/`denols` based on the presence of `package.json`/`deno.json`, add the following plugin specs: +To conditionally enable `tsserver`/`denols` based on the presence of `package.json`/`deno.json`, put the following LSP definitions in your `after/lsp/` directory: -```lua title="lua/plugins/typescript_deno.lua" +```lua title="after/lsp/denols.lua" +---@type vim.lsp.Config return { - "AstroNvim/astrolsp", - ---@param opts AstroLSPOpts - opts = function(plugin, opts) - require("astrocore").extend_tbl(opts, { - config = { - denols = { - root_dir = require("lspconfig.util").root_pattern( - "deno.json", - "deno.jsonc" - ), - }, - tsserver = { - root_dir = require("lspconfig.util").root_pattern("package.json"), - }, - -- eslint = { - -- root_dir = require("lspconfig.util").root_pattern("package.json", ".eslintrc.json", ".eslintrc.js"), - -- }, - }, - }) - end, + root_markers = { "deno.json", "deno.jsonc" }, +} +``` + +```lua title="after/lsp/tsserver.lua" +---@type vim.lsp.Config +return { + root_markers = { "package.json" }, +} +``` + +```lua title="after/lsp/eslint.lua" +---@type vim.lsp.Config +return { + root_markers = { "package.json", ".eslintrc.json", ".eslintrc.js" }, } ``` @@ -504,30 +471,23 @@ return { ::: -```lua title="lua/plugins/clangd.lua" +```lua title="after/lsp/clangd.lua" +---@type vim.lsp.Config return { - { - "AstroNvim/astrolsp", - ---@type AstroLSPOpts - opts = { - config = { - clangd = { - capabilities = { - offsetEncoding = "utf-8", - }, - }, - }, - }, + capabilities = { + offsetEncoding = "utf-8", }, +} +``` + +```lua title="lua/plugins/clangd.lua" +return { { "p00f/clangd_extensions.nvim", -- install lsp plugin lazy = true, init = function() -- load clangd extensions when clangd attaches - local augroup = - vim.api.nvim_create_augroup("clangd_extensions", { clear = true }) vim.api.nvim_create_autocmd("LspAttach", { - group = augroup, desc = "Load clangd_extensions with clangd", callback = function(args) if @@ -536,7 +496,7 @@ return { then require("clangd_extensions") -- add more `clangd` setup here as needed such as loading autocmds - vim.api.nvim_del_augroup_by_id(augroup) -- delete auto command since it only needs to happen once + return true -- delete the autocommand once the plugin is loaded end end, }) @@ -568,37 +528,38 @@ return { ::: +```lua title="after/lsp/dartls.lua" +---@type vim.lsp.Config +return { + config = { + dartls = { + -- any changes you want to make to the LSP setup, for example + color = { + enabled = true, + }, + settings = { + showTodos = true, + completeFunctionCalls = true, + }, + }, + }, +} +``` + ```lua title="lua/plugins/flutter-tools.lua" return { { "akinsho/flutter-tools.nvim", lazy = true }, -- add lsp plugin { "AstroNvim/astrolsp", - ---@param opts AstroLSPOpts - opts = function(plugin, opts) - opts.servers = opts.servers or {} - table.insert(opts.servers, "dartls") - - opts = require("astrocore").extend_tbl(opts, { - setup_handlers = { - -- add custom handler - dartls = function(_, dartls_opts) - require("flutter-tools").setup({ lsp = dartls_opts }) - end, - }, - config = { - dartls = { - -- any changes you want to make to the LSP setup, for example - color = { - enabled = true, - }, - settings = { - showTodos = true, - completeFunctionCalls = true, - }, - }, - }, - }) - end, + ---@type AstroLSPOpts + opts = { + servers = { "dartls" }, + handlers = { + dartls = function() + require("flutter-tools").setup({ lsp = vim.lsp.config.dartls }) + end, + }, + }, }, } ``` @@ -621,19 +582,19 @@ return { ```lua title="lua/plugins/rustaceanvim.lua" return { { - 'mrcjkb/rustaceanvim', -- add lsp plugin - version = '^5', + "mrcjkb/rustaceanvim", -- add lsp plugin + version = "^5", lazy = false, -- This plugin is already lazy opts = function(_, opts) - local astrolsp_avail, astrolsp = pcall(require, "astrolsp") - local astrolsp_opts = (astrolsp_avail and astrolsp.lsp_opts "rust_analyzer") or {} + local server_opts = vim.lsp.config.rust_analyzer local server = { ---@type table | (fun(project_root:string|nil, default_settings: table|nil):table) -- The rust-analyzer settings or a function that creates them. settings = function(project_root, default_settings) - local astrolsp_settings = astrolsp_opts.settings or {} - - local merge_table = require("astrocore").extend_tbl(default_settings or {}, astrolsp_settings) - local ra = require "rustaceanvim.config.server" + local merge_table = require("astrocore").extend_tbl( + default_settings or {}, + server_opts.settings or {} + ) + local ra = require("rustaceanvim.config.server") -- load_rust_analyzer_settings merges any found settings with the passed in default settings table and then returns that table return ra.load_rust_analyzer_settings(project_root, { settings_file_pattern = "rust-analyzer.json", @@ -641,11 +602,13 @@ return { }) end, } - return { server = require("astrocore").extend_tbl(astrolsp_opts, server) } + return { server = require("astrocore").extend_tbl(server_opts, server) } end, -- configure `rustaceanvim` by setting the `vim.g.rustaceanvim` variable - config = function(_, opts) vim.g.rustaceanvim = require("astrocore").extend_tbl(opts, vim.g.rustaceanvim) end, - + config = function(_, opts) + vim.g.rustaceanvim = + require("astrocore").extend_tbl(opts, vim.g.rustaceanvim) + end, }, { "AstroNvim/astrolsp", @@ -680,69 +643,10 @@ return { ```lua title="lua/plugins/jdtls.lua" return { - { "mfussenegger/nvim-jdtls", lazy = true }, -- load jdtls on module { "AstroNvim/astrolsp", - ---@type AstroLSPOpts - opts = { - setup_handlers = { - -- add custom handler - jdtls = function(_, opts) - vim.api.nvim_create_autocmd("Filetype", { - pattern = "java", -- autocmd to start jdtls - callback = function() - if opts.root_dir and opts.root_dir ~= "" then - require("jdtls").start_or_attach(opts) - end - end, - }) - end, - }, - config = { - -- set jdtls server settings - jdtls = function() - -- use this function notation to build some variables - local root_markers = - { ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" } - local root_dir = require("jdtls.setup").find_root(root_markers) - - -- calculate workspace dir - local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t") - local workspace_dir = vim.fn.stdpath("data") - .. "/site/java/workspace-root/" - .. project_name - os.execute("mkdir " .. workspace_dir) - - -- get the mason jdtls path - local jdtls_files = vim.fn.expand("$MASON/share/jdtls") - - -- return the server config - return { - cmd = { - "java", - "-Declipse.application=org.eclipse.jdt.ls.core.id1", - "-Dosgi.bundles.defaultStartLevel=4", - "-Declipse.product=org.eclipse.jdt.ls.core.product", - "-Dlog.protocol=true", - "-Dlog.level=ALL", - "-javaagent:" .. jdtls_files .. "/lombok.jar", - "-Xms1g", - "--add-modules=ALL-SYSTEM", - "--add-opens", - "java.base/java.util=ALL-UNNAMED", - "--add-opens", - "java.base/java.lang=ALL-UNNAMED", - "-jar", - jdtls_files .. "/plugins/org.eclipse.equinox.launcher.jar", - "-configuration", - jdtls_files .. "/config", - "-data", - workspace_dir, - }, - root_dir = root_dir, - } - end, - }, + dependencies = { + { "mfussenegger/nvim-jdtls" }, -- load jdtls before loading language servers }, }, { @@ -772,7 +676,7 @@ return { ## Inlay Hints -Since Neovim v0.10 there is the ability to handle and render inline virtual text and therefore first class support of inlay hints. AstroLSP comes with a built in feature for enabling inlay hints easily as well as toggling them during runtime. By default inlay hints are disabled, but they can easily be enabled by default by modifying `features.inlay_hints` in the AstroLSP `opts`: +Neovim has the ability to handle and render inline virtual text and therefore first class support of inlay hints. AstroLSP comes with a built in feature for enabling inlay hints easily as well as toggling them during runtime. By default inlay hints are disabled, but they can easily be enabled by default by modifying `features.inlay_hints` in the AstroLSP `opts`: ```lua title="lua/plugins/inlay_hints.lua" return { @@ -811,8 +715,7 @@ return { autocmds = { no_insert_inlay_hints = { -- only create for language servers that support inlay hints - -- (and only if vim.lsp.inlay_hint is available) - cond = vim.lsp.inlay_hint and "textDocument/inlayHint" or false, + cond = "textDocument/inlayHint", { -- when going into insert mode event = "InsertEnter", diff --git a/src/content/docs/recipes/ai.mdx b/src/content/docs/recipes/ai.mdx index 9740b1fce..6f06a9a7a 100644 --- a/src/content/docs/recipes/ai.mdx +++ b/src/content/docs/recipes/ai.mdx @@ -24,13 +24,13 @@ In order to make AI plugins play nicely with AstroNvim it's important to set up These configurations set up the completion engines to look for a function stored in `vim.g.ai_accept` which can be later configured by an AI completion plugin to choose what action should be taken when attempting to accept an AI suggestion if available. -#### [blink.cmp](https://github.com/Saghen/blink.cmp) Integration +#### [blink.cmp](https://github.com/saghen/blink.cmp) Integration -By default AstroNvim comes with [blink.cmp](https://github.com/Saghen/blink.cmp) for completion. This modifies the default configuration to set up the `` key as described above: +By default AstroNvim comes with [blink.cmp](https://github.com/saghen/blink.cmp) for completion. This modifies the default configuration to set up the `` key as described above: ```lua title="lua/plugins/cmp_ai.lua" return { - "Saghen/blink.cmp", + "saghen/blink.cmp", optional = true, opts = function(_, opts) if not opts.keymap then diff --git a/src/content/docs/recipes/cmp.mdx b/src/content/docs/recipes/cmp.mdx index c42d75da3..35641f540 100644 --- a/src/content/docs/recipes/cmp.mdx +++ b/src/content/docs/recipes/cmp.mdx @@ -3,7 +3,7 @@ id: cmp title: Customize cmp Completion --- -AstroNvim comes with [blink.cmp](https://github.com/Saghen/blink.cmp) for powering completion out of the box. This page documents common configuration options such as custom keybindings or adding more sources, for more detailed information on configuring the plugin be sure to check out the extensive [blink.cmp Documentation](https://cmp.saghen.dev/). +AstroNvim comes with [blink.cmp](https://github.com/saghen/blink.cmp) for powering completion out of the box. This page documents common configuration options such as custom keybindings or adding more sources, for more detailed information on configuring the plugin be sure to check out the extensive [blink.cmp Documentation](https://cmp.saghen.dev/). ### Customize Keybindings @@ -11,7 +11,7 @@ Some overrides require access to the plugin itself that you are overriding. This ```lua title="lua/plugins/blink.lua" return { -- override blink.cmp plugin - "Saghen/blink.cmp", + "saghen/blink.cmp", opts = { keymap = { [""] = { "snippet_forward", "fallback" }, @@ -26,7 +26,7 @@ Similarly to customizing mappings, you can customize and configure your `blink.c ```lua title="lua/plugins/blink.lua" return { -- override blink.cmp plugin - "Saghen/blink.cmp", + "saghen/blink.cmp", opts = { sources = { providers = { @@ -46,7 +46,7 @@ You can use this `blink.cmp` override to also customize the options of the sourc ```lua title="lua/plugins/blink.lua" return { -- override blink.cmp plugin - "Saghen/blink.cmp", + "saghen/blink.cmp", opts = { sources = { providers = { @@ -74,7 +74,7 @@ return { lazy = true, specs = { { - "Saghen/blink.cmp", + "saghen/blink.cmp", optional = true, opts = { sources = { @@ -98,11 +98,11 @@ return { #### Add `nvim-cmp` Sources -Not all sources for `nvim-cmp` are available as `blink.cmp` providers, but `blink.cmp` provides a compatibility layer to make it easy to add more sources. For more detail check out the [`blink.compat` Documentation](https://github.com/Saghen/blink.compat). Here is an example for adding `cmp-latex-symbols`: +Not all sources for `nvim-cmp` are available as `blink.cmp` providers, but `blink.cmp` provides a compatibility layer to make it easy to add more sources. For more detail check out the [`blink.compat` Documentation](https://github.com/saghen/blink.compat). Here is an example for adding `cmp-latex-symbols`: ```lua title="lua/plugins/cmp-latex-symbols.lua" return { - "Saghen/blink.cmp", + "saghen/blink.cmp", optional = true, dependencies = { -- add the legacy cmp source as a dependency for `blink.cmp` @@ -110,7 +110,7 @@ return { }, specs = { -- install the blink, nvim-cmp compatibility layer - { "Saghen/blink.compat", version = "*", lazy = true, opts = {} }, + { "saghen/blink.compat", version = "*", lazy = true, opts = {} }, }, opts = { sources = { diff --git a/src/content/docs/recipes/diagnostics.mdx b/src/content/docs/recipes/diagnostics.mdx index 270966387..3c8d3c928 100644 --- a/src/content/docs/recipes/diagnostics.mdx +++ b/src/content/docs/recipes/diagnostics.mdx @@ -18,7 +18,7 @@ return { -- All available options can be found with `:h vim.diagnostic.Opts` diagnostics = { virtual_text = true, - virtual_lines = false, -- Neovim v0.11+ only + virtual_lines = false, update_in_insert = false, underline = true, severity_sort = true, @@ -47,7 +47,7 @@ return { -- All available options can be found with `:h vim.diagnostic.Opts` diagnostics = { virtual_text = true, - virtual_lines = true, -- Neovim v0.11+ only + virtual_lines = true, update_in_insert = false, underline = true, severity_sort = true, diff --git a/src/content/docs/recipes/disable_borders.mdx b/src/content/docs/recipes/disable_borders.mdx index 5cacc36ba..d6809b6b7 100644 --- a/src/content/docs/recipes/disable_borders.mdx +++ b/src/content/docs/recipes/disable_borders.mdx @@ -3,9 +3,7 @@ id: disable_borders title: Disable Borders --- -By default AstroNvim unifies the user interface to utilize rounded borders. If you prefer other border types such as setting borders to `"none"` then you currently must do this for each individual plugin which has configurable borders. The provided code below helps aid the user in getting started with this. - -It is worth noting that Neovim v0.11 adds support for a new option, `winborder`, which will allow an easy place to change this option. Currently AstroNvim is not able to utilize this option due to lack of support in plugins currently which leads to unexpected results in the user interface. Once plugins catch up in general we will move to utilizing this option globally to improve the user configuration experience. +By default AstroNvim unifies the user interface to utilize rounded borders. If you prefer other border types such as setting borders to `"none"` then you currently must do this for each individual plugin which has configurable borders. This can be easily configured with the `vim.opt.winborder` configuration setting. Here is some example code: :::tip @@ -21,50 +19,16 @@ return { ::: ```lua title="lua/plugins/disable_borders.lua" -local border_type = "none" - return { { "AstroNvim/astrocore", ---@type AstroCoreOpts opts = { - diagnostics = { float = { border = border_type } }, - }, - }, - { - "AstroNvim/astrolsp", - optional = true, - ---@type AstroLSPOpts - opts = { - defaults = { - hover = { border = border_type }, - signature_help = { border = border_type }, - }, - }, - }, - { - "akinsho/toggleterm.nvim", - optional = true, - opts = { - float_opts = { border = border_type }, - }, - }, - { - "rcarriga/nvim-dap-ui", - optional = true, - opts = { - floating = { border = border_type }, - }, - }, - { - "Saghen/blink.cmp", - optional = true, - opts = { - completion = { - menu = { border = border_type }, - documentation = { window = { border = border_type } }, + options = { + opt = { + winborder = "none", + }, }, - signature = { window = { border = border_type } }, }, }, } diff --git a/src/content/docs/recipes/icons.mdx b/src/content/docs/recipes/icons.mdx index dc02cf119..a8f589bf0 100644 --- a/src/content/docs/recipes/icons.mdx +++ b/src/content/docs/recipes/icons.mdx @@ -212,7 +212,7 @@ return { }, }, { - "echasnovski/mini.icons", + "nvim-mini/mini.icons", optional = true, opts = { lsp = { diff --git a/src/content/docs/recipes/treesitter.mdx b/src/content/docs/recipes/treesitter.mdx new file mode 100644 index 000000000..381d269a5 --- /dev/null +++ b/src/content/docs/recipes/treesitter.mdx @@ -0,0 +1,82 @@ +--- +id: treesitter +title: Customize Treesitter +--- + +AstroCore v3 comes with the ability to help configure `nvim-treesitter` and `nvim-treesitter-textobjects`. These plugins have recently moved to being small utilities and leaving the configuration of features in Neovim up to the users. To alleviate the need for manual configuration for the users, we have added configuration options under a `treesitter` table in AstroCore that align very similarly with the previous configuration options of `nvim-treesitter`. Here is an overview of the available configuration options: + +```lua title="lua/plugins/treesitter.lua" +return { + "AstroNvim/astrocore", + ---@type AstroCoreOpts + opts = { + -- Configuration of treesitter features in Neovim + treesitter = { + -- Globally enable or disable treesitter features + -- can be: + -- - a boolean + -- - a function (`fun(lang: string, bufnr: integer): boolean`) + enabled = function(lang, bufnr) + return not require("astrocore.buffer").is_large(bufnr) + end, + -- Enable or disable treesitter based highlighting + -- can be: + -- - a boolean + -- - a function (`fun(lang: string, bufnr: integer): boolean`) + highlight = true, + -- Enable or disable treesitter based indenting + -- can be: + -- - a boolean + -- - a function (`fun(lang: string, bufnr: integer): boolean`) + indent = true, + -- List of treesitter parsers that should be installed automatically + -- ("all" can be used to install all available parsers) + ensure_installed = { "lua", "vim", "vimdoc" }, + -- Automatically detect missing treesitter parser and install when editing file + auto_install = true, + -- Configure treesitter based text objects (requires `nvim-treesitter-textobjects`) + -- These options set up automatic detection of available queries for a file and creates + -- only the available bindings for each buffer. + textobjects = { + select = { + select_textobject = { + ["af"] = { query = "@function.outer", desc = "around function" }, + ["if"] = { query = "@function.inner", desc = "around function" }, + }, + }, + move = { + goto_next_start = { + ["]f"] = { query = "@function.outer", desc = "Next function start" }, + }, + goto_next_end = { + ["]F"] = { query = "@function.outer", desc = "Next function end" }, + }, + goto_previous_start = { + ["[f"] = { + query = "@function.outer", + desc = "Previous function start", + }, + }, + goto_previous_end = { + ["[F"] = { + query = "@function.outer", + desc = "Previous function end", + }, + }, + }, + swap = { + swap_next = { + [">F"] = { query = "@function.outer", desc = "Swap next function" }, + }, + swap_previous = { + ["ls"] = "call VSCodeNotify('workbench.action.gotoSymbol')", }, }, + -- disable treesitter highlighting + treesitter = { + highlight = false, + }, }, }, -- disable colorscheme setting { "AstroNvim/astroui", opts = { colorscheme = false } }, - -- disable treesitter highlighting - { - "nvim-treesitter/nvim-treesitter", - opts = { highlight = { enable = false } }, - }, } ``` diff --git a/src/content/docs/reference/alt_install.mdx b/src/content/docs/reference/alt_install.mdx index e6a1b1366..580a3dfab 100644 --- a/src/content/docs/reference/alt_install.mdx +++ b/src/content/docs/reference/alt_install.mdx @@ -34,7 +34,7 @@ nvim --headless +q ## Isolated Installation -Neovim v0.9 introduced a great new environment variable called `NVIM_APPNAME` which allows the user to easily use configuration directories separate from the standard location. This is very useful if you want to install or try out AstroNvim without overwriting an existing Neovim configuration. The full details on the environment variable usage can be found in the Neovim documentation [`:h NVIM_APPNAME`](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME). Here is an example where we set it up using `NVIM_APPNAME=astronvim`: +Neovim has the ability to utilize a very helpful environment variable called `NVIM_APPNAME` which allows the user to easily use configuration directories separate from the standard location. This is very useful if you want to install or try out AstroNvim without overwriting an existing Neovim configuration. The full details on the environment variable usage can be found in the Neovim documentation [`:h NVIM_APPNAME`](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME). Here is an example where we set it up using `NVIM_APPNAME=astronvim`: diff --git a/src/content/docs/reference/autocmds.mdx b/src/content/docs/reference/autocmds.mdx index c7083c8b5..b6ddc1fbd 100644 --- a/src/content/docs/reference/autocmds.mdx +++ b/src/content/docs/reference/autocmds.mdx @@ -35,14 +35,11 @@ Neovim autocmd events, check the help page with `:h autocmd-events`. AstroCore. This event fires if a file is read into a buffer that exceeds these limits. -- `AstroLspSetup`: AstroNvim has a lot of internal tooling surrounding setting - up handlers for the internal LSP mechanisms. `AstroLspSetup` is triggered when - we have finished setting up these handlers and configuring `lspconfig`. - - `AstroUpdateCompleted`: AstroNvim provides a custom command for easily updating all plugins and packages using `:AstroUpdate`. `AstroUpdateCompleted` is triggered after all of the available updates have been applied. Useful for headless updates: + ```bash nvim --headless -c "autocmd User AstroUpdateCompleted quitall" -c "AstroUpdate" ``` diff --git a/src/content/docs/reference/default_plugins.mdx b/src/content/docs/reference/default_plugins.mdx index 1b582aee7..fe1a70d47 100644 --- a/src/content/docs/reference/default_plugins.mdx +++ b/src/content/docs/reference/default_plugins.mdx @@ -9,31 +9,28 @@ title: Default Plugins | [AstroNvim/astrolsp](https://github.com/AstroNvim/astrolsp) | LSP Integration | | [AstroNvim/astrotheme](https://github.com/AstroNvim/astrotheme) | Default Colorscheme/Theme | | [AstroNvim/astroui](https://github.com/AstroNvim/astroui) | UI Configuration | -| [JoosepAlviste/nvim-ts-context-commentstring](https://github.com/JoosepAlviste/nvim-ts-context-commentstring) | Contextual commenting (_Nvim 0.10 only_) | | [L3MON4D3/LuaSnip](https://github.com/L3MON4D3/LuaSnip) | Snippet Engine | | [MunifTanjim/nui.nvim](https://github.com/MunifTanjim/nui.nvim) | UI Component Library (for Neo-Tree) | | [NMAC427/guess-indent.nvim](https://github.com/NMAC427/guess-indent.nvim) | Automatic Indentation Detection | -| [Saghen/blink.cmp](https://github.com/Saghen/blink.cmp) | Completion Engine | +| [saghen/blink.cmp](https://github.com/saghen/blink.cmp) | Completion Engine | | [WhoIsSethDaniel/mason-tool-installer.nvim](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim) | Automatic Mason Installation | | [akinsho/toggleterm.nvim](https://github.com/akinsho/toggleterm.nvim) | Terminal Management | | [brenoprata10/nvim-highlight-colors](https://github.com/brenoprata10/nvim-highlight-colors) | Highlight Color Strings | -| [echasnovski/mini.icons](https://github.com/echasnovski/mini.icons) | Icon Provider | | [folke/lazy.nvim](https://github.com/folke/lazy.nvim) | Plugin Management | -| [folke/neoconf.nvim](https://github.com/folke/neoconf.nvim) | Global and Project-local settings | -| [folke/neodev.nvim](https://github.com/folke/neodev.nvim) | Neovim Lua LSP Integration | +| [folke/lazydev.nvim](https://github.com/folke/lazydev.nvim) | Neovim Lua LSP Integration | | [folke/snacks.nvim](https://github.com/folke/snacks.nvim) | Finder/Picker, better `vim.ui`, pretty notifications, indentation indicators, dashboard | | [folke/which-key.nvim](https://github.com/folke/which-key.nvim) | Keymap Popup/Help Window | | [jay-babu/mason-null-ls.nvim](https://github.com/jay-babu/mason-null-ls.nvim) | Mason Null-LS (None-LS) Integration | | [jay-babu/mason-nvim-dap.nvim](https://github.com/jay-babu/mason-nvim-dap.nvim) | Mason Nvim-DAP Integration | -| [kevinhwang91/nvim-ufo](https://github.com/kevinhwang91/nvim-ufo) | Fold detection (_Nvim 0.10 only_) | -| [kevinhwang91/promise-async](https://github.com/kevinhwang91/promise-async) | Asynchronous Library (helper) | | [lewis6991/gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) | Buffer Git Integration | +| [mason-org/mason-lspconfig.nvim](https://github.com/mason-org/mason-lspconfig.nvim) | Mason LSP Integration | +| [mason-org/mason.nvim](https://github.com/mason-org/mason.nvim) | External Package Manager | | [max397574/better-escape.nvim](https://github.com/max397574/better-escape.nvim) | Easy Escape (`jj`, `jk`) | | [mfussenegger/nvim-dap](https://github.com/mfussenegger/nvim-dap) | Debugger Adapter Protocol | | [mrjones2014/smart-splits.nvim](https://github.com/mrjones2014/smart-splits.nvim) | Split Navigation and Multiplexer Integration | | [neovim/nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) | Language Server Configurations | -| [numToStr/Comment.nvim](https://github.com/numToStr/Comment.nvim) | Comment Vim Operators (_Nvim 0.10 only_) | | [nvim-lua/plenary.nvim](https://github.com/nvim-lua/plenary.nvim) | Lua Helper Functions (helper) | +| [nvim-mini/mini.icons](https://github.com/nvim-mini/mini.icons) | Icon Provider | | [nvim-neo-tree/neo-tree.nvim](https://github.com/nvim-neo-tree/neo-tree.nvim) | File Explorer | | [nvim-treesitter/nvim-treesitter-textobjects](https://github.com/nvim-treesitter/nvim-treesitter-textobjects) | Treesitter Vim Text Objects | | [nvim-treesitter/nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) | Syntax Tree Based Highlighting | @@ -45,7 +42,5 @@ title: Default Plugins | [s1n7ax/nvim-window-picker](https://github.com/s1n7ax/nvim-window-picker) | Window Picker (for Neo-tree) | | [stevearc/aerial.nvim](https://github.com/stevearc/aerial.nvim) | Symbol Overview/Code Outline | | [stevearc/resession.nvim](https://github.com/stevearc/resession.nvim) | Session Management | -| [williamboman/mason-lspconfig.nvim](https://github.com/williamboman/mason-lspconfig.nvim) | Mason LSP Integration | -| [williamboman/mason.nvim](https://github.com/williamboman/mason.nvim) | External Package Manager | | [windwp/nvim-autopairs](https://github.com/windwp/nvim-autopairs) | Automatically Close Pairs | | [windwp/nvim-ts-autotag](https://github.com/windwp/nvim-ts-autotag) | Automatically Close/Rename Tags |