diff --git a/astro.config.mjs b/astro.config.mjs index abd71c23..621c4159 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,7 +1,10 @@ import sitemap from "@astrojs/sitemap"; import svelte from "@astrojs/svelte"; import tailwind from "@astrojs/tailwind"; +import { pluginCollapsibleSections } from "@expressive-code/plugin-collapsible-sections"; +import { pluginLineNumbers } from "@expressive-code/plugin-line-numbers"; import swup from "@swup/astro"; +import expressiveCode from "astro-expressive-code"; import icon from "astro-icon"; import { defineConfig } from "astro/config"; import rehypeAutolinkHeadings from "rehype-autolink-headings"; @@ -12,11 +15,14 @@ import remarkDirective from "remark-directive"; /* Handle directives */ import remarkGithubAdmonitionsToDirectives from "remark-github-admonitions-to-directives"; import remarkMath from "remark-math"; import remarkSectionize from "remark-sectionize"; +import { expressiveCodeConfig } from "./src/config.ts"; +import { pluginLanguageBadge } from "./src/plugins/expressive-code/language-badge.ts"; import { AdmonitionComponent } from "./src/plugins/rehype-component-admonition.mjs"; import { GithubCardComponent } from "./src/plugins/rehype-component-github-card.mjs"; import { parseDirectiveNode } from "./src/plugins/remark-directive-rehype.js"; import { remarkExcerpt } from "./src/plugins/remark-excerpt.js"; import { remarkReadingTime } from "./src/plugins/remark-reading-time.mjs"; +import { pluginCustomCopyButton } from "./src/plugins/expressive-code/custom-copy-button.js"; // https://astro.build/config export default defineConfig({ @@ -49,7 +55,51 @@ export default defineConfig({ "fa6-solid": ["*"], }, }), - svelte(), + expressiveCode({ + themes: [expressiveCodeConfig.theme, expressiveCodeConfig.theme], + plugins: [ + pluginCollapsibleSections(), + pluginLineNumbers(), + pluginLanguageBadge(), + pluginCustomCopyButton() + ], + defaultProps: { + wrap: true, + overridesByLang: { + 'shellsession': { + showLineNumbers: false, + }, + }, + }, + styleOverrides: { + codeBackground: "var(--codeblock-bg)", + borderRadius: "0.75rem", + borderColor: "none", + codeFontSize: "0.875rem", + codeFontFamily: "'JetBrains Mono Variable', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace", + codeLineHeight: "1.5rem", + frames: { + editorBackground: "var(--codeblock-bg)", + terminalBackground: "var(--codeblock-bg)", + terminalTitlebarBackground: "var(--codeblock-topbar-bg)", + editorTabBarBackground: "var(--codeblock-topbar-bg)", + editorActiveTabBackground: "none", + editorActiveTabIndicatorBottomColor: "var(--primary)", + editorActiveTabIndicatorTopColor: "none", + editorTabBarBorderBottomColor: "var(--codeblock-topbar-bg)", + terminalTitlebarBorderBottomColor: "none" + }, + textMarkers: { + delHue: 0, + insHue: 180, + markHue: 250 + } + }, + frames: { + showCopyToClipboardButton: false, + } + }), + svelte(), sitemap(), ], markdown: { diff --git a/package.json b/package.json index 057c23b2..f8b0157d 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,9 @@ "@astrojs/sitemap": "^3.4.0", "@astrojs/svelte": "7.1.0", "@astrojs/tailwind": "^6.0.2", + "@expressive-code/core": "^0.41.2", + "@expressive-code/plugin-collapsible-sections": "^0.41.2", + "@expressive-code/plugin-line-numbers": "^0.41.2", "@fontsource-variable/jetbrains-mono": "^5.2.5", "@fontsource/roboto": "^5.2.5", "@iconify-json/fa6-brands": "^1.2.5", @@ -31,6 +34,7 @@ "@swup/astro": "^1.6.0", "@tailwindcss/typography": "^0.5.16", "astro": "5.8.1", + "astro-expressive-code": "^0.41.2", "astro-icon": "^1.1.5", "hastscript": "^9.0.1", "katex": "^0.16.22", @@ -61,6 +65,7 @@ "@astrojs/ts-plugin": "^1.10.4", "@biomejs/biome": "1.9.4", "@rollup/plugin-yaml": "^4.1.2", + "@types/hast": "^3.0.4", "@types/markdown-it": "^14.1.2", "@types/mdast": "^4.0.4", "@types/sanitize-html": "^2.16.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3cbd09e3..51cc6113 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,19 @@ importers: version: 3.4.0 '@astrojs/svelte': specifier: 7.1.0 - version: 7.1.0(@types/node@22.15.24)(astro@5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(svelte@5.33.10)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) + version: 7.1.0(@types/node@22.14.0)(astro@5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(svelte@5.33.11)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(tailwindcss@3.4.17) + version: 6.0.2(astro@5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(tailwindcss@3.4.17) + '@expressive-code/core': + specifier: ^0.41.2 + version: 0.41.2 + '@expressive-code/plugin-collapsible-sections': + specifier: ^0.41.2 + version: 0.41.2 + '@expressive-code/plugin-line-numbers': + specifier: ^0.41.2 + version: 0.41.2 '@fontsource-variable/jetbrains-mono': specifier: ^5.2.5 version: 5.2.5 @@ -40,10 +49,10 @@ importers: version: 1.2.3 '@iconify-json/material-symbols': specifier: ^1.2.22 - version: 1.2.22 + version: 1.2.23 '@iconify/svelte': specifier: ^4.2.0 - version: 4.2.0(svelte@5.33.10) + version: 4.2.0(svelte@5.33.11) '@swup/astro': specifier: ^1.6.0 version: 1.6.0(@types/babel__core@7.20.5) @@ -52,7 +61,10 @@ importers: version: 0.5.16(tailwindcss@3.4.17) astro: specifier: 5.8.1 - version: 5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) + version: 5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) + astro-expressive-code: + specifier: ^0.41.2 + version: 0.41.2(astro@5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0)) astro-icon: specifier: ^1.1.5 version: 1.1.5 @@ -118,7 +130,7 @@ importers: version: 0.64.0 svelte: specifier: ^5.33.10 - version: 5.33.10 + version: 5.33.11 tailwindcss: specifier: ^3.4.17 version: 3.4.17 @@ -138,6 +150,9 @@ importers: '@rollup/plugin-yaml': specifier: ^4.1.2 version: 4.1.2(rollup@2.79.2) + '@types/hast': + specifier: ^3.0.4 + version: 3.0.4 '@types/markdown-it': specifier: ^14.1.2 version: 14.1.2 @@ -182,9 +197,6 @@ packages: '@astrojs/compiler@2.11.0': resolution: {integrity: sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==} - '@astrojs/compiler@2.12.0': - resolution: {integrity: sha512-7bCjW6tVDpUurQLeKBUN9tZ5kSv5qYrGmcn0sG0IwacL7isR2ZbyyA3AdZ4uxsuUFOS2SlgReTH7wkxO6zpqWA==} - '@astrojs/internal-helpers@0.6.1': resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==} @@ -316,10 +328,18 @@ packages: resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} @@ -336,8 +356,13 @@ packages: resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.3': - resolution: {integrity: sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==} + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.27.4': + resolution: {integrity: sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==} engines: {node: '>=6.0.0'} hasBin: true @@ -783,6 +808,10 @@ packages: resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + '@babel/types@7.27.3': resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} @@ -855,6 +884,10 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} + '@emmetio/abbreviation@2.3.3': resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} @@ -876,159 +909,180 @@ packages: '@emmetio/stream-reader@2.2.0': resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@emnapi/runtime@1.4.3': resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@expressive-code/core@0.41.2': + resolution: {integrity: sha512-AJW5Tp9czbLqKMzwudL9Rv4js9afXBxkSGLmCNPq1iRgAYcx9NkTPJiSNCesjKRWoVC328AdSu6fqrD22zDgDg==} + + '@expressive-code/plugin-collapsible-sections@0.41.2': + resolution: {integrity: sha512-gyg864xlkLFYLDlOoO5wyZVmuFOc2vi6b/tJjEfXDj/xc8//ttuRLZ0EjuLIkch1hEhEQc9XF6agmiNYUCzeww==} + + '@expressive-code/plugin-frames@0.41.2': + resolution: {integrity: sha512-pfy0hkJI4nbaONjmksFDcuHmIuyPTFmi1JpABe4q2ajskiJtfBf+WDAL2pg595R9JNoPrrH5+aT9lbkx2noicw==} + + '@expressive-code/plugin-line-numbers@0.41.2': + resolution: {integrity: sha512-xdRoScuFWQbYEpWTh6G7kJ0VK46kcUPHPMjRo3CG2ynZ1rqiJCC9FnZQQWQ7U8aGd/n7EnU3vJBkBeVqhZyEWg==} + + '@expressive-code/plugin-shiki@0.41.2': + resolution: {integrity: sha512-xD4zwqAkDccXqye+235BH5bN038jYiSMLfUrCOmMlzxPDGWdxJDk5z4uUB/aLfivEF2tXyO2zyaarL3Oqht0fQ==} + + '@expressive-code/plugin-text-markers@0.41.2': + resolution: {integrity: sha512-JFWBz2qYxxJOJkkWf96LpeolbnOqJY95TvwYc0hXIHf9oSWV0h0SY268w/5N3EtQaD9KktzDE+VIVwb9jdb3nw==} + '@fontsource-variable/jetbrains-mono@5.2.5': resolution: {integrity: sha512-G3sN1xq1moZd0JL+hFaA4MEdsiQS+JXC/z7m+EqA5/Fzn5CQlXGUaaNKFGQdDsFuLTnCfW0KOOSWHjygNfjEPw==} @@ -1044,8 +1098,8 @@ packages: '@iconify-json/fa6-solid@1.2.3': resolution: {integrity: sha512-C5o8YJF+ekrS4wRb/6/0SE2KjRyJlCg++IOVC/fineiRinITivsmzFRNW1MQX2xfDZ1T7bxeKxLN6lcaTG3jGA==} - '@iconify-json/material-symbols@1.2.22': - resolution: {integrity: sha512-raleOIRt8iPtwAkDzmw/c5zb06nIaicsYs5bZ3yfRjBxuYT/UYNa2ZFQQMl3uuTTiZuUXwFa1M8PJW3CFRAN0w==} + '@iconify-json/material-symbols@1.2.23': + resolution: {integrity: sha512-GoNuWl8dVDiVFQq+HEgbOmPW0vTycs7qXgtpfBAx4XgDI4MVwnEIjIcYy/tlzzjMF1TPDwkX5fI1+KIylSdBwQ==} '@iconify/svelte@4.2.0': resolution: {integrity: sha512-fEl0T7SAPonK7xk6xUlRPDmFDZVDe2Z7ZstlqeDS/sS8ve2uyU+Qa8rTWbIqzZJlRvONkK5kVXiUf9nIc+6OOQ==} @@ -1495,121 +1549,139 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.41.1': - resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + '@rollup/rollup-android-arm-eabi@4.38.0': + resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.41.1': - resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + '@rollup/rollup-android-arm64@4.38.0': + resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.41.1': - resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + '@rollup/rollup-darwin-arm64@4.38.0': + resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.41.1': - resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + '@rollup/rollup-darwin-x64@4.38.0': + resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.41.1': - resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + '@rollup/rollup-freebsd-arm64@4.38.0': + resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.41.1': - resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + '@rollup/rollup-freebsd-x64@4.38.0': + resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.41.1': - resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + '@rollup/rollup-linux-arm-gnueabihf@4.38.0': + resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.41.1': - resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + '@rollup/rollup-linux-arm-musleabihf@4.38.0': + resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.41.1': - resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + '@rollup/rollup-linux-arm64-gnu@4.38.0': + resolution: {integrity: sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.41.1': - resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + '@rollup/rollup-linux-arm64-musl@4.38.0': + resolution: {integrity: sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.41.1': - resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + '@rollup/rollup-linux-loongarch64-gnu@4.38.0': + resolution: {integrity: sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': - resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': + resolution: {integrity: sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.41.1': - resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + '@rollup/rollup-linux-riscv64-gnu@4.38.0': + resolution: {integrity: sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.41.1': - resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + '@rollup/rollup-linux-riscv64-musl@4.38.0': + resolution: {integrity: sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.41.1': - resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + '@rollup/rollup-linux-s390x-gnu@4.38.0': + resolution: {integrity: sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.41.1': - resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + '@rollup/rollup-linux-x64-gnu@4.38.0': + resolution: {integrity: sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.41.1': - resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + '@rollup/rollup-linux-x64-musl@4.38.0': + resolution: {integrity: sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.41.1': - resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + '@rollup/rollup-win32-arm64-msvc@4.38.0': + resolution: {integrity: sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.41.1': - resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + '@rollup/rollup-win32-ia32-msvc@4.38.0': + resolution: {integrity: sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.41.1': - resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + '@rollup/rollup-win32-x64-msvc@4.38.0': + resolution: {integrity: sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==} cpu: [x64] os: [win32] + '@shikijs/core@3.2.1': + resolution: {integrity: sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==} + '@shikijs/core@3.4.2': resolution: {integrity: sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ==} + '@shikijs/engine-javascript@3.2.1': + resolution: {integrity: sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==} + '@shikijs/engine-javascript@3.4.2': resolution: {integrity: sha512-1/adJbSMBOkpScCE/SB6XkjJU17ANln3Wky7lOmrnpl+zBdQ1qXUJg2GXTYVHRq+2j3hd1DesmElTXYDgtfSOQ==} + '@shikijs/engine-oniguruma@3.2.1': + resolution: {integrity: sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==} + '@shikijs/engine-oniguruma@3.4.2': resolution: {integrity: sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==} + '@shikijs/langs@3.2.1': + resolution: {integrity: sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==} + '@shikijs/langs@3.4.2': resolution: {integrity: sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==} + '@shikijs/themes@3.2.1': + resolution: {integrity: sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==} + '@shikijs/themes@3.4.2': resolution: {integrity: sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==} + '@shikijs/types@3.2.1': + resolution: {integrity: sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==} + '@shikijs/types@3.4.2': resolution: {integrity: sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==} @@ -1796,11 +1868,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@22.15.17': - resolution: {integrity: sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==} - - '@types/node@22.15.24': - resolution: {integrity: sha512-w9CZGm9RDjzTh/D+hFwlBJ3ziUaVw7oufKA3vOFSOZlzmW9AkZnfjPb+DLnrV6qtgL/LNmP0/2zBNCFHL3F0ng==} + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1918,6 +1987,11 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + astro-expressive-code@0.41.2: + resolution: {integrity: sha512-HN0jWTnhr7mIV/2e6uu4PPRNNo/k4UEgTLZqbp3MrHU+caCARveG2yZxaZVBmxyiVdYqW5Pd3u3n2zjnshixbw==} + peerDependencies: + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 + astro-icon@1.1.5: resolution: {integrity: sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==} @@ -1996,6 +2070,9 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2076,9 +2153,6 @@ packages: caniuse-lite@1.0.30001707: resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} - caniuse-lite@1.0.30001712: - resolution: {integrity: sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2188,7 +2262,7 @@ packages: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2226,8 +2300,8 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.3.5: - resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + crossws@0.3.4: + resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} css-declaration-sorter@6.4.1: resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} @@ -2241,6 +2315,9 @@ packages: css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-selector-parser@3.1.1: + resolution: {integrity: sha512-Y+DuvJ7JAjpL1f4DeILe5sXCC3kRXMl0DxM4lAWbS8/jEZ29o3V0L5TL6zIifj4Csmj6c+jiF2ENjida2OVOGA==} + css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} @@ -2313,15 +2390,6 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - decode-named-character-reference@1.1.0: resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} @@ -2358,14 +2426,18 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.5: - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} engines: {node: '>=0.10'} hasBin: true + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + detect-libc@2.0.4: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} @@ -2390,6 +2462,10 @@ packages: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -2444,6 +2520,9 @@ packages: emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -2466,10 +2545,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} - engines: {node: '>=0.12'} - error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2485,8 +2560,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} @@ -2500,8 +2575,8 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} hasBin: true @@ -2549,6 +2624,9 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + expressive-code@0.41.2: + resolution: {integrity: sha512-aLZiZaqorRtNExtGpUjK9zFH9aTpWeoTXMyLo4b4IcuXfPqtLPPxhRm/QlPb8QqIcMMXnSiGRHSFpQfX0m7HJw==} + exsolve@1.0.4: resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} @@ -2580,6 +2658,14 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fdir@6.4.5: resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} peerDependencies: @@ -2722,7 +2808,6 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -2757,11 +2842,11 @@ packages: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} - h3@1.15.3: - resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} + h3@1.15.1: + resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + resolution: {integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=} engines: {node: '>=0.10.0'} has-bigints@1.1.0: @@ -2803,6 +2888,9 @@ packages: hast-util-from-parse5@8.0.3: resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + hast-util-heading-rank@3.0.0: resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} @@ -2818,6 +2906,9 @@ packages: hast-util-raw@9.1.0: resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + hast-util-select@6.0.4: + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} + hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} @@ -2851,8 +2942,8 @@ packages: htmlparser2@9.1.0: resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -2886,8 +2977,7 @@ packages: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2914,7 +3004,7 @@ packages: engines: {node: '>= 0.4'} is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -2997,7 +3087,7 @@ packages: engines: {node: '>= 0.4'} is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} @@ -3243,13 +3333,13 @@ packages: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -3619,6 +3709,12 @@ packages: oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + oniguruma-parser@0.5.4: + resolution: {integrity: sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==} + + oniguruma-to-es@4.1.0: + resolution: {integrity: sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==} + oniguruma-to-es@4.3.3: resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} @@ -3638,7 +3734,7 @@ packages: engines: {node: '>= 0.4'} p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} engines: {node: '>=4'} p-limit@2.3.0: @@ -3679,15 +3775,15 @@ packages: package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - package-manager-detector@1.3.0: - resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + package-manager-detector@1.1.0: + resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==} pagefind@1.3.0: resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==} hasBin: true pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + resolution: {integrity: sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -3715,9 +3811,6 @@ packages: parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -4090,7 +4183,7 @@ packages: engines: {node: '>=6'} promise.series@0.2.0: - resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + resolution: {integrity: sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=} engines: {node: '>=0.12'} prompts@2.4.2: @@ -4143,7 +4236,7 @@ packages: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=} engines: {node: '>= 0.10'} reflect.getprototypeof@1.0.10: @@ -4193,6 +4286,9 @@ packages: rehype-components@0.3.0: resolution: {integrity: sha512-yl2bUkZi+sU0gxwVCun7IkjiDLPczSs1SKMKHmjlSLkk4mMryBd/aYba5J8suhJdquBEKSw6ZNxU3MvVQ9xqoQ==} + rehype-expressive-code@0.41.2: + resolution: {integrity: sha512-vHYfWO9WxAw6kHHctddOt+P4266BtyT1mrOIuxJD+1ELuvuJAa5uBIhYt0OVMyOhlvf57hzWOXJkHnMhpaHyxw==} + rehype-katex@7.0.1: resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} @@ -4300,7 +4396,6 @@ packages: rollup-plugin-terser@7.0.2: resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: rollup: ^2.0.0 @@ -4331,8 +4426,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - rollup@4.41.1: - resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + rollup@4.38.0: + resolution: {integrity: sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4433,6 +4528,9 @@ packages: engines: {node: '>=4'} hasBin: true + shiki@3.2.1: + resolution: {integrity: sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==} + shiki@3.4.2: resolution: {integrity: sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ==} @@ -4471,8 +4569,8 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - smol-toml@1.3.4: - resolution: {integrity: sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==} + smol-toml@1.3.1: + resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -4499,7 +4597,6 @@ packages: stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -4590,8 +4687,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.33.10: - resolution: {integrity: sha512-/yArPQIBoQS2p86LKnvJywOXkVHeEXnFgrDPSxkEfIAEkykopYuy2bF6UUqHG4IbZlJD6OurLxJT8Kn7kTk9WA==} + svelte@5.33.11: + resolution: {integrity: sha512-BVnvd6T3OShNvsRwYPXdseSO5rnQ4SljmhLVCCpBX1nEQI+e2TopOlazo4z+1+aUukyHZxlIVg3hpZ5TMugrMQ==} engines: {node: '>=18'} svgo@2.8.0: @@ -4642,6 +4739,10 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} @@ -4666,8 +4767,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsconfck@3.1.6: - resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} + tsconfck@3.1.5: + resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -4679,8 +4780,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - type-fest@4.41.0: - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + type-fest@4.38.0: + resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==} engines: {node: '>=16'} typed-array-buffer@1.0.3: @@ -4721,8 +4822,8 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} @@ -4815,8 +4916,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unstorage@1.16.0: - resolution: {integrity: sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==} + unstorage@1.15.0: + resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -4824,7 +4925,7 @@ 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.0.3 '@deno/kv': '>=0.9.0' '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 '@planetscale/database': ^1.19.0 @@ -5050,7 +5151,7 @@ packages: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} @@ -5152,8 +5253,8 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} - yocto-spinner@0.2.3: - resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} + yocto-spinner@0.2.1: + resolution: {integrity: sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==} engines: {node: '>=18.19'} yoctocolors@2.1.1: @@ -5174,11 +5275,8 @@ packages: typescript: ^4.9.4 || ^5.0.2 zod: ^3 - zod@3.24.4: - resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} - - zod@3.25.36: - resolution: {integrity: sha512-eRFS3i8T0IrpGdL8HQyqFAugGOn7jOjyGgGdtv5NY4Wkhi7lJDk732bNZ609YMIGFbLoaj6J69O1Mura23gfIw==} + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -5214,13 +5312,11 @@ snapshots: '@astrojs/compiler@2.11.0': {} - '@astrojs/compiler@2.12.0': {} - '@astrojs/internal-helpers@0.6.1': {} '@astrojs/language-server@2.15.4(typescript@5.8.3)': dependencies: - '@astrojs/compiler': 2.12.0 + '@astrojs/compiler': 2.11.0 '@astrojs/yaml2ts': 0.2.2 '@jridgewell/sourcemap-codec': 1.5.0 '@volar/kit': 2.4.12(typescript@5.8.3) @@ -5257,8 +5353,8 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.4.2 - smol-toml: 1.3.4 + shiki: 3.2.1 + smol-toml: 1.3.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -5280,16 +5376,16 @@ snapshots: dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 - zod: 3.24.4 + zod: 3.24.2 - '@astrojs/svelte@7.1.0(@types/node@22.15.24)(astro@5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(svelte@5.33.10)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0)': + '@astrojs/svelte@7.1.0(@types/node@22.14.0)(astro@5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(svelte@5.33.11)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0)': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.33.10)(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) - astro: 5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) - svelte: 5.33.10 - svelte2tsx: 0.7.39(svelte@5.33.10)(typescript@5.8.3) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.33.11)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) + astro: 5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) + svelte: 5.33.11 + svelte2tsx: 0.7.39(svelte@5.33.11)(typescript@5.8.3) typescript: 5.8.3 - vite: 6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -5304,9 +5400,9 @@ snapshots: - tsx - yaml - '@astrojs/tailwind@6.0.2(astro@5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(tailwindcss@3.4.17)': + '@astrojs/tailwind@6.0.2(astro@5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0))(tailwindcss@3.4.17)': dependencies: - astro: 5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) + astro: 5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) autoprefixer: 10.4.21(postcss@8.5.3) postcss: 8.5.3 postcss-load-config: 4.0.2(postcss@8.5.3) @@ -5317,7 +5413,7 @@ snapshots: '@astrojs/telemetry@3.3.0': dependencies: ci-info: 4.2.0 - debug: 4.4.1 + debug: 4.4.0 dlv: 1.1.3 dset: 3.1.4 is-docker: 3.0.0 @@ -5342,7 +5438,7 @@ snapshots: '@babel/code-frame@7.26.2': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -5356,12 +5452,12 @@ snapshots: '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.3 + '@babel/parser': 7.27.0 '@babel/template': 7.27.0 '@babel/traverse': 7.27.0 - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -5370,15 +5466,15 @@ snapshots: '@babel/generator@7.27.0': dependencies: - '@babel/parser': 7.27.3 - '@babel/types': 7.27.3 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 '@babel/helper-compilation-targets@7.27.0': dependencies: @@ -5413,7 +5509,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 - debug: 4.4.1 + debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: @@ -5422,14 +5518,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: '@babel/traverse': 7.27.0 - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.9': dependencies: '@babel/traverse': 7.27.0 - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -5437,14 +5533,14 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.25.9 '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 '@babel/helper-plugin-utils@7.26.5': {} @@ -5469,13 +5565,19 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: '@babel/traverse': 7.27.0 - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-string-parser@7.27.1': + optional: true + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-identifier@7.27.1': + optional: true '@babel/helper-validator-option@7.25.9': {} @@ -5483,18 +5585,23 @@ snapshots: dependencies: '@babel/template': 7.27.0 '@babel/traverse': 7.27.0 - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helpers@7.27.0': dependencies: '@babel/template': 7.27.0 - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 - '@babel/parser@7.27.3': + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@babel/parser@7.27.4': dependencies: '@babel/types': 7.27.3 + optional: true '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': dependencies: @@ -5742,7 +5849,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.25.9 '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -5850,7 +5957,7 @@ snapshots: '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -6014,7 +6121,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.27.3 + '@babel/types': 7.27.0 esutils: 2.0.3 '@babel/preset-react@7.26.3(@babel/core@7.26.10)': @@ -6036,25 +6143,31 @@ snapshots: '@babel/template@7.27.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.3 - '@babel/types': 7.27.3 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@babel/traverse@7.27.0': dependencies: '@babel/code-frame': 7.26.2 '@babel/generator': 7.27.0 - '@babel/parser': 7.27.3 + '@babel/parser': 7.27.0 '@babel/template': 7.27.0 - '@babel/types': 7.27.3 - debug: 4.4.1 + '@babel/types': 7.27.0 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.27.3': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + optional: true '@biomejs/biome@1.9.4': optionalDependencies: @@ -6107,6 +6220,8 @@ snapshots: dependencies: postcss-selector-parser: 7.1.0 + '@ctrl/tinycolor@4.1.0': {} + '@emmetio/abbreviation@2.3.3': dependencies: '@emmetio/scanner': 1.0.4 @@ -6130,86 +6245,124 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.4.3': dependencies: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.5': + '@esbuild/aix-ppc64@0.25.2': optional: true - '@esbuild/android-arm64@0.25.5': + '@esbuild/android-arm64@0.25.2': optional: true - '@esbuild/android-arm@0.25.5': + '@esbuild/android-arm@0.25.2': optional: true - '@esbuild/android-x64@0.25.5': + '@esbuild/android-x64@0.25.2': optional: true - '@esbuild/darwin-arm64@0.25.5': + '@esbuild/darwin-arm64@0.25.2': optional: true - '@esbuild/darwin-x64@0.25.5': + '@esbuild/darwin-x64@0.25.2': optional: true - '@esbuild/freebsd-arm64@0.25.5': + '@esbuild/freebsd-arm64@0.25.2': optional: true - '@esbuild/freebsd-x64@0.25.5': + '@esbuild/freebsd-x64@0.25.2': optional: true - '@esbuild/linux-arm64@0.25.5': + '@esbuild/linux-arm64@0.25.2': optional: true - '@esbuild/linux-arm@0.25.5': + '@esbuild/linux-arm@0.25.2': optional: true - '@esbuild/linux-ia32@0.25.5': + '@esbuild/linux-ia32@0.25.2': optional: true - '@esbuild/linux-loong64@0.25.5': + '@esbuild/linux-loong64@0.25.2': optional: true - '@esbuild/linux-mips64el@0.25.5': + '@esbuild/linux-mips64el@0.25.2': optional: true - '@esbuild/linux-ppc64@0.25.5': + '@esbuild/linux-ppc64@0.25.2': optional: true - '@esbuild/linux-riscv64@0.25.5': + '@esbuild/linux-riscv64@0.25.2': optional: true - '@esbuild/linux-s390x@0.25.5': + '@esbuild/linux-s390x@0.25.2': optional: true - '@esbuild/linux-x64@0.25.5': + '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/netbsd-arm64@0.25.5': + '@esbuild/netbsd-arm64@0.25.2': optional: true - '@esbuild/netbsd-x64@0.25.5': + '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/openbsd-arm64@0.25.5': + '@esbuild/openbsd-arm64@0.25.2': optional: true - '@esbuild/openbsd-x64@0.25.5': + '@esbuild/openbsd-x64@0.25.2': optional: true - '@esbuild/sunos-x64@0.25.5': + '@esbuild/sunos-x64@0.25.2': optional: true - '@esbuild/win32-arm64@0.25.5': + '@esbuild/win32-arm64@0.25.2': optional: true - '@esbuild/win32-ia32@0.25.5': + '@esbuild/win32-ia32@0.25.2': optional: true - '@esbuild/win32-x64@0.25.5': + '@esbuild/win32-x64@0.25.2': optional: true + '@expressive-code/core@0.41.2': + dependencies: + '@ctrl/tinycolor': 4.1.0 + hast-util-select: 6.0.4 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + hastscript: 9.0.1 + postcss: 8.5.4 + postcss-nested: 6.2.0(postcss@8.5.4) + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + + '@expressive-code/plugin-collapsible-sections@0.41.2': + dependencies: + '@expressive-code/core': 0.41.2 + + '@expressive-code/plugin-frames@0.41.2': + dependencies: + '@expressive-code/core': 0.41.2 + + '@expressive-code/plugin-line-numbers@0.41.2': + dependencies: + '@expressive-code/core': 0.41.2 + + '@expressive-code/plugin-shiki@0.41.2': + dependencies: + '@expressive-code/core': 0.41.2 + shiki: 3.4.2 + + '@expressive-code/plugin-text-markers@0.41.2': + dependencies: + '@expressive-code/core': 0.41.2 + '@fontsource-variable/jetbrains-mono@5.2.5': {} '@fontsource/roboto@5.2.5': {} @@ -6226,14 +6379,14 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/material-symbols@1.2.22': + '@iconify-json/material-symbols@1.2.23': dependencies: '@iconify/types': 2.0.0 - '@iconify/svelte@4.2.0(svelte@5.33.10)': + '@iconify/svelte@4.2.0(svelte@5.33.11)': dependencies: '@iconify/types': 2.0.0 - svelte: 5.33.10 + svelte: 5.33.11 '@iconify/tools@4.1.2': dependencies: @@ -6259,7 +6412,7 @@ snapshots: '@antfu/install-pkg': 1.0.0 '@antfu/utils': 8.1.1 '@iconify/types': 2.0.0 - debug: 4.4.1 + debug: 4.4.0 globals: 15.15.0 kolorist: 1.8.0 local-pkg: 1.1.1 @@ -6400,7 +6553,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.3.1 optional: true '@img/sharp-wasm32@0.34.2': @@ -6617,66 +6770,73 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/rollup-android-arm-eabi@4.41.1': + '@rollup/rollup-android-arm-eabi@4.38.0': optional: true - '@rollup/rollup-android-arm64@4.41.1': + '@rollup/rollup-android-arm64@4.38.0': optional: true - '@rollup/rollup-darwin-arm64@4.41.1': + '@rollup/rollup-darwin-arm64@4.38.0': optional: true - '@rollup/rollup-darwin-x64@4.41.1': + '@rollup/rollup-darwin-x64@4.38.0': optional: true - '@rollup/rollup-freebsd-arm64@4.41.1': + '@rollup/rollup-freebsd-arm64@4.38.0': optional: true - '@rollup/rollup-freebsd-x64@4.41.1': + '@rollup/rollup-freebsd-x64@4.38.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + '@rollup/rollup-linux-arm-gnueabihf@4.38.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.41.1': + '@rollup/rollup-linux-arm-musleabihf@4.38.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.41.1': + '@rollup/rollup-linux-arm64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.41.1': + '@rollup/rollup-linux-arm64-musl@4.38.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + '@rollup/rollup-linux-loongarch64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.41.1': + '@rollup/rollup-linux-riscv64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.41.1': + '@rollup/rollup-linux-riscv64-musl@4.38.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.41.1': + '@rollup/rollup-linux-s390x-gnu@4.38.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.41.1': + '@rollup/rollup-linux-x64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-x64-musl@4.41.1': + '@rollup/rollup-linux-x64-musl@4.38.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.41.1': + '@rollup/rollup-win32-arm64-msvc@4.38.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.41.1': + '@rollup/rollup-win32-ia32-msvc@4.38.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.41.1': + '@rollup/rollup-win32-x64-msvc@4.38.0': optional: true + '@shikijs/core@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + '@shikijs/core@3.4.2': dependencies: '@shikijs/types': 3.4.2 @@ -6684,25 +6844,49 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 + '@shikijs/engine-javascript@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.1.0 + '@shikijs/engine-javascript@3.4.2': dependencies: '@shikijs/types': 3.4.2 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 + '@shikijs/engine-oniguruma@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/engine-oniguruma@3.4.2': dependencies: '@shikijs/types': 3.4.2 '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/langs@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/langs@3.4.2': dependencies: '@shikijs/types': 3.4.2 + '@shikijs/themes@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/themes@3.4.2': dependencies: '@shikijs/types': 3.4.2 + '@shikijs/types@3.2.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/types@3.4.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 @@ -6721,25 +6905,25 @@ snapshots: dependencies: acorn: 8.14.1 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.33.10)(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)))(svelte@5.33.10)(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.33.11)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)))(svelte@5.33.11)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.33.10)(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) - debug: 4.4.1 - svelte: 5.33.10 - vite: 6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.33.11)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) + debug: 4.4.0 + svelte: 5.33.11 + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.33.10)(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.33.11)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.33.10)(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)))(svelte@5.33.10)(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) - debug: 4.4.1 + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.33.11)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)))(svelte@5.33.11)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) + debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 - svelte: 5.33.10 - vite: 6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) - vitefu: 1.0.6(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) + svelte: 5.33.11 + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) + vitefu: 1.0.6(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) transitivePeerDependencies: - supports-color @@ -6894,7 +7078,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.3 + '@babel/parser': 7.27.4 '@babel/types': 7.27.3 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 @@ -6908,7 +7092,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.3 + '@babel/parser': 7.27.4 '@babel/types': 7.27.3 optional: true @@ -6927,7 +7111,7 @@ snapshots: '@types/fontkit@2.0.8': dependencies: - '@types/node': 22.15.24 + '@types/node': 22.14.0 '@types/hast@2.3.10': dependencies: @@ -6960,11 +7144,7 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@22.15.17': - dependencies: - undici-types: 6.21.0 - - '@types/node@22.15.24': + '@types/node@22.14.0': dependencies: undici-types: 6.21.0 @@ -6972,7 +7152,7 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 22.15.24 + '@types/node': 22.14.0 '@types/sanitize-html@2.16.0': dependencies: @@ -6980,11 +7160,11 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 22.14.0 '@types/tar@6.1.13': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.14.0 minipass: 4.2.8 '@types/unist@2.0.11': {} @@ -6993,7 +7173,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.15.24 + '@types/node': 22.14.0 optional: true '@ungap/structured-clone@1.3.0': {} @@ -7105,6 +7285,11 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + astro-expressive-code@0.41.2(astro@5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0)): + dependencies: + astro: 5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0) + rehype-expressive-code: 0.41.2 + astro-icon@1.1.5: dependencies: '@iconify/tools': 4.1.2 @@ -7114,9 +7299,9 @@ snapshots: - debug - supports-color - astro@5.8.1(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0): + astro@5.8.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@2.79.2)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.7.0): dependencies: - '@astrojs/compiler': 2.12.0 + '@astrojs/compiler': 2.11.0 '@astrojs/internal-helpers': 0.6.1 '@astrojs/markdown-remark': 6.3.2 '@astrojs/telemetry': 3.3.0 @@ -7132,20 +7317,20 @@ snapshots: common-ancestor-path: 1.0.1 cookie: 1.0.2 cssesc: 3.0.0 - debug: 4.4.1 + debug: 4.4.0 deterministic-object-hash: 2.0.2 devalue: 5.1.1 diff: 5.2.0 dlv: 1.1.3 dset: 3.1.4 - es-module-lexer: 1.7.0 - esbuild: 0.25.5 + es-module-lexer: 1.6.0 + esbuild: 0.25.2 estree-walker: 3.0.3 flattie: 1.1.1 fontace: 0.3.0 github-slugger: 2.0.0 html-escaper: 3.0.3 - http-cache-semantics: 4.2.0 + http-cache-semantics: 4.1.1 import-meta-resolve: 4.1.0 js-yaml: 4.1.0 kleur: 4.1.5 @@ -7155,28 +7340,28 @@ snapshots: neotraverse: 0.6.18 p-limit: 6.2.0 p-queue: 8.1.0 - package-manager-detector: 1.3.0 + package-manager-detector: 1.1.0 picomatch: 4.0.2 prompts: 2.4.2 rehype: 13.0.2 - semver: 7.7.2 - shiki: 3.4.2 + semver: 7.7.1 + shiki: 3.2.1 tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tsconfck: 3.1.6(typescript@5.8.3) + tinyglobby: 0.2.12 + tsconfck: 3.1.5(typescript@5.8.3) ultrahtml: 1.6.0 unifont: 0.5.0 unist-util-visit: 5.0.0 - unstorage: 1.16.0 + unstorage: 1.15.0 vfile: 6.0.3 - vite: 6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) - vitefu: 1.0.6(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) + vitefu: 1.0.6(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 - yocto-spinner: 0.2.3 - zod: 3.25.36 - zod-to-json-schema: 3.24.5(zod@3.25.36) - zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.25.36) + yocto-spinner: 0.2.1 + zod: 3.24.2 + zod-to-json-schema: 3.24.5(zod@3.24.2) + zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.24.2) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -7232,16 +7417,6 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 - autoprefixer@10.4.21(postcss@8.5.4): - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.4 - postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -7291,7 +7466,7 @@ snapshots: babel-plugin-transform-replace-expressions@0.2.0(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.27.3 + '@babel/parser': 7.27.0 bail@2.0.2: {} @@ -7301,6 +7476,8 @@ snapshots: base64-js@1.5.1: {} + bcp-47-match@2.0.3: {} + binary-extensions@2.3.0: {} blob-to-buffer@1.2.9: {} @@ -7314,7 +7491,7 @@ snapshots: chalk: 5.4.1 cli-boxes: 3.0.0 string-width: 7.2.0 - type-fest: 4.41.0 + type-fest: 4.38.0 widest-line: 5.0.0 wrap-ansi: 9.0.0 @@ -7380,14 +7557,12 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001712 + caniuse-lite: 1.0.30001707 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 caniuse-lite@1.0.30001707: {} - caniuse-lite@1.0.30001712: {} - ccount@2.0.1: {} chalk@1.1.3: @@ -7544,13 +7719,13 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.3.5: + crossws@0.3.4: dependencies: uncrypto: 0.1.3 - css-declaration-sorter@6.4.1(postcss@8.5.4): + css-declaration-sorter@6.4.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 css-select@4.3.0: dependencies: @@ -7568,6 +7743,8 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 + css-selector-parser@3.1.1: {} + css-tree@1.1.3: dependencies: mdn-data: 2.0.14 @@ -7592,48 +7769,48 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@5.2.14(postcss@8.5.4): + cssnano-preset-default@5.2.14(postcss@8.5.3): dependencies: - css-declaration-sorter: 6.4.1(postcss@8.5.4) - cssnano-utils: 3.1.0(postcss@8.5.4) - postcss: 8.5.4 - postcss-calc: 8.2.4(postcss@8.5.4) - postcss-colormin: 5.3.1(postcss@8.5.4) - postcss-convert-values: 5.1.3(postcss@8.5.4) - postcss-discard-comments: 5.1.2(postcss@8.5.4) - postcss-discard-duplicates: 5.1.0(postcss@8.5.4) - postcss-discard-empty: 5.1.1(postcss@8.5.4) - postcss-discard-overridden: 5.1.0(postcss@8.5.4) - postcss-merge-longhand: 5.1.7(postcss@8.5.4) - postcss-merge-rules: 5.1.4(postcss@8.5.4) - postcss-minify-font-values: 5.1.0(postcss@8.5.4) - postcss-minify-gradients: 5.1.1(postcss@8.5.4) - postcss-minify-params: 5.1.4(postcss@8.5.4) - postcss-minify-selectors: 5.2.1(postcss@8.5.4) - postcss-normalize-charset: 5.1.0(postcss@8.5.4) - postcss-normalize-display-values: 5.1.0(postcss@8.5.4) - postcss-normalize-positions: 5.1.1(postcss@8.5.4) - postcss-normalize-repeat-style: 5.1.1(postcss@8.5.4) - postcss-normalize-string: 5.1.0(postcss@8.5.4) - postcss-normalize-timing-functions: 5.1.0(postcss@8.5.4) - postcss-normalize-unicode: 5.1.1(postcss@8.5.4) - postcss-normalize-url: 5.1.0(postcss@8.5.4) - postcss-normalize-whitespace: 5.1.1(postcss@8.5.4) - postcss-ordered-values: 5.1.3(postcss@8.5.4) - postcss-reduce-initial: 5.1.2(postcss@8.5.4) - postcss-reduce-transforms: 5.1.0(postcss@8.5.4) - postcss-svgo: 5.1.0(postcss@8.5.4) - postcss-unique-selectors: 5.1.1(postcss@8.5.4) + css-declaration-sorter: 6.4.1(postcss@8.5.3) + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 8.2.4(postcss@8.5.3) + postcss-colormin: 5.3.1(postcss@8.5.3) + postcss-convert-values: 5.1.3(postcss@8.5.3) + postcss-discard-comments: 5.1.2(postcss@8.5.3) + postcss-discard-duplicates: 5.1.0(postcss@8.5.3) + postcss-discard-empty: 5.1.1(postcss@8.5.3) + postcss-discard-overridden: 5.1.0(postcss@8.5.3) + postcss-merge-longhand: 5.1.7(postcss@8.5.3) + postcss-merge-rules: 5.1.4(postcss@8.5.3) + postcss-minify-font-values: 5.1.0(postcss@8.5.3) + postcss-minify-gradients: 5.1.1(postcss@8.5.3) + postcss-minify-params: 5.1.4(postcss@8.5.3) + postcss-minify-selectors: 5.2.1(postcss@8.5.3) + postcss-normalize-charset: 5.1.0(postcss@8.5.3) + postcss-normalize-display-values: 5.1.0(postcss@8.5.3) + postcss-normalize-positions: 5.1.1(postcss@8.5.3) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.3) + postcss-normalize-string: 5.1.0(postcss@8.5.3) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.3) + postcss-normalize-unicode: 5.1.1(postcss@8.5.3) + postcss-normalize-url: 5.1.0(postcss@8.5.3) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.3) + postcss-ordered-values: 5.1.3(postcss@8.5.3) + postcss-reduce-initial: 5.1.2(postcss@8.5.3) + postcss-reduce-transforms: 5.1.0(postcss@8.5.3) + postcss-svgo: 5.1.0(postcss@8.5.3) + postcss-unique-selectors: 5.1.1(postcss@8.5.3) - cssnano-utils@3.1.0(postcss@8.5.4): + cssnano-utils@3.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 - cssnano@5.1.15(postcss@8.5.4): + cssnano@5.1.15(postcss@8.5.3): dependencies: - cssnano-preset-default: 5.2.14(postcss@8.5.4) + cssnano-preset-default: 5.2.14(postcss@8.5.3) lilconfig: 2.1.0 - postcss: 8.5.4 + postcss: 8.5.3 yaml: 1.10.2 csso@4.2.0: @@ -7666,10 +7843,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.1: - dependencies: - ms: 2.1.3 - decode-named-character-reference@1.1.0: dependencies: character-entities: 2.0.2 @@ -7702,11 +7875,14 @@ snapshots: dequal@2.0.3: {} - destr@2.0.5: {} + destr@2.0.3: {} detect-libc@1.0.3: optional: true + detect-libc@2.0.3: + optional: true + detect-libc@2.0.4: {} deterministic-object-hash@2.0.2: @@ -7725,6 +7901,8 @@ snapshots: diff@5.2.0: {} + direction@2.0.1: {} + dlv@1.1.3: {} dom-serializer@1.4.1: @@ -7786,6 +7964,8 @@ snapshots: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 + emoji-regex-xs@1.0.0: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -7805,8 +7985,6 @@ snapshots: entities@4.5.0: {} - entities@6.0.0: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -7869,7 +8047,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} + es-module-lexer@1.6.0: {} es-object-atoms@1.1.1: dependencies: @@ -7888,33 +8066,33 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.25.5: + esbuild@0.25.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 escalade@3.2.0: {} @@ -7946,13 +8124,20 @@ snapshots: eventemitter3@5.0.1: {} + expressive-code@0.41.2: + dependencies: + '@expressive-code/core': 0.41.2 + '@expressive-code/plugin-frames': 0.41.2 + '@expressive-code/plugin-shiki': 0.41.2 + '@expressive-code/plugin-text-markers': 0.41.2 + exsolve@1.0.4: {} extend@3.0.2: {} extract-zip@2.0.1: dependencies: - debug: 4.4.1 + debug: 4.4.0 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -7984,6 +8169,10 @@ snapshots: dependencies: pend: 1.2.0 + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fdir@6.4.5(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -8174,16 +8363,16 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.15.3: + h3@1.15.1: dependencies: cookie-es: 1.2.2 - crossws: 0.3.5 + crossws: 0.3.4 defu: 6.1.4 - destr: 2.0.5 + destr: 2.0.3 iron-webcrypto: 1.2.1 node-mock-http: 1.0.0 radix3: 1.1.2 - ufo: 1.6.1 + ufo: 1.5.4 uncrypto: 0.1.3 has-ansi@2.0.0: @@ -8230,7 +8419,7 @@ snapshots: '@types/hast': 3.0.4 devlop: 1.1.0 hast-util-from-parse5: 8.0.3 - parse5: 7.3.0 + parse5: 7.2.1 vfile: 6.0.3 vfile-message: 4.0.2 @@ -8240,11 +8429,15 @@ snapshots: '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 - property-information: 7.1.0 + property-information: 7.0.0 vfile: 6.0.3 vfile-location: 5.0.3 web-namespaces: 2.0.1 + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-heading-rank@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -8270,13 +8463,31 @@ snapshots: hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 - parse5: 7.3.0 + parse5: 7.2.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 + hast-util-select@6.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.1.1 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.1 + hast-util-whitespace: 3.0.0 + nth-check: 2.1.1 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 @@ -8350,7 +8561,7 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 - http-cache-semantics@4.2.0: {} + http-cache-semantics@4.1.1: {} iconv-lite@0.6.3: dependencies: @@ -8358,9 +8569,9 @@ snapshots: icss-replace-symbols@1.1.0: {} - icss-utils@5.1.0(postcss@8.5.4): + icss-utils@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 immutable@4.3.7: optional: true @@ -8572,7 +8783,7 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 22.15.24 + '@types/node': 22.14.0 merge-stream: 2.0.0 supports-color: 7.2.0 @@ -8727,8 +8938,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.27.3 - '@babel/types': 7.27.3 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 source-map-js: 1.2.1 make-dir@3.1.0: @@ -8934,7 +9145,7 @@ snapshots: '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) '@surma/rollup-plugin-off-main-thread': 2.2.3 asyncro: 3.0.0 - autoprefixer: 10.4.21(postcss@8.5.4) + autoprefixer: 10.4.21(postcss@8.5.3) babel-plugin-macros: 3.1.0 babel-plugin-transform-async-to-promises: 0.8.18 babel-plugin-transform-replace-expressions: 0.2.0(@babel/core@7.26.10) @@ -8946,11 +9157,11 @@ snapshots: gzip-size: 6.0.0 kleur: 4.1.5 lodash.merge: 4.6.2 - postcss: 8.5.4 + postcss: 8.5.3 pretty-bytes: 5.6.0 rollup: 2.79.2 rollup-plugin-bundle-size: 1.0.3 - rollup-plugin-postcss: 4.0.2(postcss@8.5.4) + rollup-plugin-postcss: 4.0.2(postcss@8.5.3) rollup-plugin-terser: 7.0.2(rollup@2.79.2) rollup-plugin-typescript2: 0.32.1(rollup@2.79.2)(typescript@4.9.5) rollup-plugin-visualizer: 5.14.0(rollup@2.79.2) @@ -9157,7 +9368,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.0 decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -9221,7 +9432,7 @@ snapshots: acorn: 8.14.1 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.1 + ufo: 1.5.4 morphdom@2.7.4: {} @@ -9296,9 +9507,9 @@ snapshots: ofetch@1.4.1: dependencies: - destr: 2.0.5 + destr: 2.0.3 node-fetch-native: 1.6.6 - ufo: 1.6.1 + ufo: 1.5.4 ohash@2.0.11: {} @@ -9308,6 +9519,15 @@ snapshots: oniguruma-parser@0.12.1: {} + oniguruma-parser@0.5.4: {} + + oniguruma-to-es@4.1.0: + dependencies: + emoji-regex-xs: 1.0.0 + oniguruma-parser: 0.5.4 + regex: 6.0.1 + regex-recursion: 6.0.2 + oniguruma-to-es@4.3.3: dependencies: oniguruma-parser: 0.12.1 @@ -9368,7 +9588,7 @@ snapshots: dependencies: quansync: 0.2.10 - package-manager-detector@1.3.0: {} + package-manager-detector@1.1.0: {} pagefind@1.3.0: optionalDependencies: @@ -9425,10 +9645,6 @@ snapshots: dependencies: entities: 4.5.0 - parse5@7.3.0: - dependencies: - entities: 6.0.0 - pascal-case@3.1.2: dependencies: no-case: 3.0.4 @@ -9491,41 +9707,41 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-calc@8.2.4(postcss@8.5.4): + postcss-calc@8.2.4(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-colormin@5.3.1(postcss@8.5.4): + postcss-colormin@5.3.1(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-convert-values@5.1.3(postcss@8.5.4): + postcss-convert-values@5.1.3(postcss@8.5.3): dependencies: browserslist: 4.24.4 - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-discard-comments@5.1.2(postcss@8.5.4): + postcss-discard-comments@5.1.2(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 - postcss-discard-duplicates@5.1.0(postcss@8.5.4): + postcss-discard-duplicates@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 - postcss-discard-empty@5.1.1(postcss@8.5.4): + postcss-discard-empty@5.1.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 - postcss-discard-overridden@5.1.0(postcss@8.5.4): + postcss-discard-overridden@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-import@15.1.0(postcss@8.5.3): dependencies: @@ -9546,12 +9762,12 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.3 - postcss-load-config@3.1.4(postcss@8.5.4): + postcss-load-config@3.1.4(postcss@8.5.3): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-load-config@4.0.2(postcss@8.5.3): dependencies: @@ -9560,75 +9776,75 @@ snapshots: optionalDependencies: postcss: 8.5.3 - postcss-merge-longhand@5.1.7(postcss@8.5.4): + postcss-merge-longhand@5.1.7(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.5.4) + stylehacks: 5.1.1(postcss@8.5.3) - postcss-merge-rules@5.1.4(postcss@8.5.4): + postcss-merge-rules@5.1.4(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.5.4) - postcss: 8.5.4 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@5.1.0(postcss@8.5.4): + postcss-minify-font-values@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-gradients@5.1.1(postcss@8.5.4): + postcss-minify-gradients@5.1.1(postcss@8.5.3): dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.5.4) - postcss: 8.5.4 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-params@5.1.4(postcss@8.5.4): + postcss-minify-params@5.1.4(postcss@8.5.3): dependencies: browserslist: 4.24.4 - cssnano-utils: 3.1.0(postcss@8.5.4) - postcss: 8.5.4 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-selectors@5.2.1(postcss@8.5.4): + postcss-minify-selectors@5.2.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-modules-extract-imports@3.1.0(postcss@8.5.4): + postcss-modules-extract-imports@3.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 - postcss-modules-local-by-default@4.2.0(postcss@8.5.4): + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): dependencies: - icss-utils: 5.1.0(postcss@8.5.4) - postcss: 8.5.4 + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.4): + postcss-modules-scope@3.2.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-selector-parser: 7.1.0 - postcss-modules-values@4.0.0(postcss@8.5.4): + postcss-modules-values@4.0.0(postcss@8.5.3): dependencies: - icss-utils: 5.1.0(postcss@8.5.4) - postcss: 8.5.4 + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 - postcss-modules@4.3.1(postcss@8.5.4): + postcss-modules@4.3.1(postcss@8.5.3): dependencies: generic-names: 4.0.0 icss-replace-symbols: 1.1.0 lodash.camelcase: 4.3.0 - postcss: 8.5.4 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.4) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.4) - postcss-modules-scope: 3.2.1(postcss@8.5.4) - postcss-modules-values: 4.0.0(postcss@8.5.4) + postcss: 8.5.3 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) + postcss-modules-scope: 3.2.1(postcss@8.5.3) + postcss-modules-values: 4.0.0(postcss@8.5.3) string-hash: 1.1.3 postcss-nested@6.2.0(postcss@8.5.3): @@ -9636,6 +9852,11 @@ snapshots: postcss: 8.5.3 postcss-selector-parser: 6.1.2 + postcss-nested@6.2.0(postcss@8.5.4): + dependencies: + postcss: 8.5.4 + postcss-selector-parser: 6.1.2 + postcss-nesting@13.0.1(postcss@8.5.3): dependencies: '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.1.0) @@ -9643,67 +9864,67 @@ snapshots: postcss: 8.5.3 postcss-selector-parser: 7.1.0 - postcss-normalize-charset@5.1.0(postcss@8.5.4): + postcss-normalize-charset@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 - postcss-normalize-display-values@5.1.0(postcss@8.5.4): + postcss-normalize-display-values@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-positions@5.1.1(postcss@8.5.4): + postcss-normalize-positions@5.1.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@5.1.1(postcss@8.5.4): + postcss-normalize-repeat-style@5.1.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-string@5.1.0(postcss@8.5.4): + postcss-normalize-string@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@5.1.0(postcss@8.5.4): + postcss-normalize-timing-functions@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@5.1.1(postcss@8.5.4): + postcss-normalize-unicode@5.1.1(postcss@8.5.3): dependencies: browserslist: 4.24.4 - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-url@5.1.0(postcss@8.5.4): + postcss-normalize-url@5.1.0(postcss@8.5.3): dependencies: normalize-url: 6.1.0 - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@5.1.1(postcss@8.5.4): + postcss-normalize-whitespace@5.1.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-ordered-values@5.1.3(postcss@8.5.4): + postcss-ordered-values@5.1.3(postcss@8.5.3): dependencies: - cssnano-utils: 3.1.0(postcss@8.5.4) - postcss: 8.5.4 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-reduce-initial@5.1.2(postcss@8.5.4): + postcss-reduce-initial@5.1.2(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - postcss: 8.5.4 + postcss: 8.5.3 - postcss-reduce-transforms@5.1.0(postcss@8.5.4): + postcss-reduce-transforms@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 postcss-selector-parser@6.0.10: @@ -9721,15 +9942,15 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@5.1.0(postcss@8.5.4): + postcss-svgo@5.1.0(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-value-parser: 4.2.0 svgo: 2.8.0 - postcss-unique-selectors@5.1.1(postcss@8.5.4): + postcss-unique-selectors@5.1.1(postcss@8.5.3): dependencies: - postcss: 8.5.4 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} @@ -9878,6 +10099,10 @@ snapshots: hast-util-is-element: 3.0.0 unist-util-visit: 5.0.0 + rehype-expressive-code@0.41.2: + dependencies: + expressive-code: 0.41.2 + rehype-katex@7.0.1: dependencies: '@types/hast': 3.0.4 @@ -10051,17 +10276,17 @@ snapshots: chalk: 1.1.3 maxmin: 2.1.0 - rollup-plugin-postcss@4.0.2(postcss@8.5.4): + rollup-plugin-postcss@4.0.2(postcss@8.5.3): dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.5.4) + cssnano: 5.1.15(postcss@8.5.3) import-cwd: 3.0.0 p-queue: 6.6.2 pify: 5.0.0 - postcss: 8.5.4 - postcss-load-config: 3.1.4(postcss@8.5.4) - postcss-modules: 4.3.1(postcss@8.5.4) + postcss: 8.5.3 + postcss-load-config: 3.1.4(postcss@8.5.3) + postcss-modules: 4.3.1(postcss@8.5.3) promise.series: 0.2.0 resolve: 1.22.10 rollup-pluginutils: 2.8.2 @@ -10105,30 +10330,30 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.41.1: + rollup@4.38.0: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.41.1 - '@rollup/rollup-android-arm64': 4.41.1 - '@rollup/rollup-darwin-arm64': 4.41.1 - '@rollup/rollup-darwin-x64': 4.41.1 - '@rollup/rollup-freebsd-arm64': 4.41.1 - '@rollup/rollup-freebsd-x64': 4.41.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 - '@rollup/rollup-linux-arm-musleabihf': 4.41.1 - '@rollup/rollup-linux-arm64-gnu': 4.41.1 - '@rollup/rollup-linux-arm64-musl': 4.41.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 - '@rollup/rollup-linux-riscv64-gnu': 4.41.1 - '@rollup/rollup-linux-riscv64-musl': 4.41.1 - '@rollup/rollup-linux-s390x-gnu': 4.41.1 - '@rollup/rollup-linux-x64-gnu': 4.41.1 - '@rollup/rollup-linux-x64-musl': 4.41.1 - '@rollup/rollup-win32-arm64-msvc': 4.41.1 - '@rollup/rollup-win32-ia32-msvc': 4.41.1 - '@rollup/rollup-win32-x64-msvc': 4.41.1 + '@rollup/rollup-android-arm-eabi': 4.38.0 + '@rollup/rollup-android-arm64': 4.38.0 + '@rollup/rollup-darwin-arm64': 4.38.0 + '@rollup/rollup-darwin-x64': 4.38.0 + '@rollup/rollup-freebsd-arm64': 4.38.0 + '@rollup/rollup-freebsd-x64': 4.38.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.38.0 + '@rollup/rollup-linux-arm-musleabihf': 4.38.0 + '@rollup/rollup-linux-arm64-gnu': 4.38.0 + '@rollup/rollup-linux-arm64-musl': 4.38.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.38.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.38.0 + '@rollup/rollup-linux-riscv64-gnu': 4.38.0 + '@rollup/rollup-linux-riscv64-musl': 4.38.0 + '@rollup/rollup-linux-s390x-gnu': 4.38.0 + '@rollup/rollup-linux-x64-gnu': 4.38.0 + '@rollup/rollup-linux-x64-musl': 4.38.0 + '@rollup/rollup-win32-arm64-msvc': 4.38.0 + '@rollup/rollup-win32-ia32-msvc': 4.38.0 + '@rollup/rollup-win32-x64-msvc': 4.38.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -10220,8 +10445,8 @@ snapshots: sharp@0.33.5: dependencies: color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 + detect-libc: 2.0.3 + semver: 7.7.1 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -10289,6 +10514,17 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 + shiki@3.2.1: + dependencies: + '@shikijs/core': 3.2.1 + '@shikijs/engine-javascript': 3.2.1 + '@shikijs/engine-oniguruma': 3.2.1 + '@shikijs/langs': 3.2.1 + '@shikijs/themes': 3.2.1 + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + shiki@3.4.2: dependencies: '@shikijs/core': 3.4.2 @@ -10345,7 +10581,7 @@ snapshots: slash@3.0.0: {} - smol-toml@1.3.4: {} + smol-toml@1.3.1: {} source-map-js@1.2.1: {} @@ -10446,10 +10682,10 @@ snapshots: style-inject@0.3.0: {} - stylehacks@5.1.1(postcss@8.5.4): + stylehacks@5.1.1(postcss@8.5.3): dependencies: browserslist: 4.24.4 - postcss: 8.5.4 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 stylus@0.64.0: @@ -10480,14 +10716,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte2tsx@0.7.39(svelte@5.33.10)(typescript@5.8.3): + svelte2tsx@0.7.39(svelte@5.33.11)(typescript@5.8.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.33.10 + svelte: 5.33.11 typescript: 5.8.3 - svelte@5.33.10: + svelte@5.33.11: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -10596,6 +10832,11 @@ snapshots: tinyexec@0.3.2: {} + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + tinyglobby@0.2.14: dependencies: fdir: 6.4.5(picomatch@4.0.2) @@ -10615,13 +10856,13 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.1.6(typescript@5.8.3): + tsconfck@3.1.5(typescript@5.8.3): optionalDependencies: typescript: 5.8.3 tslib@2.8.1: {} - type-fest@4.41.0: {} + type-fest@4.38.0: {} typed-array-buffer@1.0.3: dependencies: @@ -10662,7 +10903,7 @@ snapshots: typescript-auto-import-cache@0.3.5: dependencies: - semver: 7.7.2 + semver: 7.7.1 typescript@4.9.5: {} @@ -10670,7 +10911,7 @@ snapshots: uc.micro@2.1.0: {} - ufo@1.6.1: {} + ufo@1.5.4: {} ultrahtml@1.6.0: {} @@ -10791,16 +11032,16 @@ snapshots: universalify@2.0.1: {} - unstorage@1.16.0: + unstorage@1.15.0: dependencies: anymatch: 3.1.3 chokidar: 4.0.3 - destr: 2.0.5 - h3: 1.15.3 + destr: 2.0.3 + h3: 1.15.1 lru-cache: 10.4.3 node-fetch-native: 1.6.6 ofetch: 1.4.1 - ufo: 1.6.1 + ufo: 1.5.4 update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: @@ -10825,16 +11066,16 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0): + vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0): dependencies: - esbuild: 0.25.5 + esbuild: 0.25.2 fdir: 6.4.5(picomatch@4.0.2) picomatch: 4.0.2 - postcss: 8.5.4 - rollup: 4.41.1 + postcss: 8.5.3 + rollup: 4.38.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 22.15.24 + '@types/node': 22.14.0 fsevents: 2.3.3 jiti: 1.21.7 lightningcss: 1.29.3 @@ -10843,9 +11084,9 @@ snapshots: terser: 5.39.0 yaml: 2.7.0 - vitefu@1.0.6(vite@6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)): + vitefu@1.0.6(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0)): optionalDependencies: - vite: 6.3.5(@types/node@22.15.24)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(sass@1.80.4)(stylus@0.64.0)(terser@5.39.0)(yaml@2.7.0) volar-service-css@0.0.62(@volar/language-service@2.4.12): dependencies: @@ -10887,7 +11128,7 @@ snapshots: volar-service-typescript@0.0.62(@volar/language-service@2.4.12): dependencies: path-browserify: 1.0.1 - semver: 7.7.2 + semver: 7.7.1 typescript-auto-import-cache: 0.3.5 vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 @@ -11090,7 +11331,7 @@ snapshots: yocto-queue@1.2.1: {} - yocto-spinner@0.2.3: + yocto-spinner@0.2.1: dependencies: yoctocolors: 2.1.1 @@ -11098,17 +11339,15 @@ snapshots: zimmerframe@1.1.2: {} - zod-to-json-schema@3.24.5(zod@3.25.36): + zod-to-json-schema@3.24.5(zod@3.24.2): dependencies: - zod: 3.25.36 + zod: 3.24.2 - zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.36): + zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.24.2): dependencies: typescript: 5.8.3 - zod: 3.25.36 + zod: 3.24.2 - zod@3.24.4: {} - - zod@3.25.36: {} + zod@3.24.2: {} zwitch@2.0.4: {} diff --git a/src/components/misc/Markdown.astro b/src/components/misc/Markdown.astro index 674030fb..33415d03 100644 --- a/src/components/misc/Markdown.astro +++ b/src/components/misc/Markdown.astro @@ -14,51 +14,30 @@ const className = Astro.props.class; diff --git a/src/config.ts b/src/config.ts index 53939b10..b0de7705 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,4 +1,5 @@ import type { + ExpressiveCodeConfig, LicenseConfig, NavBarConfig, ProfileConfig, @@ -81,3 +82,9 @@ export const licenseConfig: LicenseConfig = { name: "CC BY-NC-SA 4.0", url: "https://creativecommons.org/licenses/by-nc-sa/4.0/", }; + +export const expressiveCodeConfig: ExpressiveCodeConfig = { + // Note: Some styles (such as background color) are being overridden, see the astro.config.mjs file. + // Please select a dark theme, as this blog theme currently only supports dark background color + theme: "github-dark", +}; diff --git a/src/content/posts/expressive-code.md b/src/content/posts/expressive-code.md new file mode 100644 index 00000000..91d47e4e --- /dev/null +++ b/src/content/posts/expressive-code.md @@ -0,0 +1,311 @@ +--- +title: Expressive Code Example +published: 2024-04-10 +description: How code blocks look in Markdown using Expressive Code. +tags: [Markdown, Blogging, Demo] +category: Examples +draft: false +--- + +Here, we'll explore how code blocks look using [Expressive Code](https://expressive-code.com/). The provided examples are based on the official documentation, which you can refer to for further details. + +## Expressive Code + +### Syntax Highlighting + +[Syntax Highlighting](https://expressive-code.com/key-features/syntax-highlighting/) + +#### Regular syntax highlighting + +```js +console.log('This code is syntax highlighted!') +``` + +#### Rendering ANSI escape sequences + +```ansi +ANSI colors: +- Regular: Red Green Yellow Blue Magenta Cyan +- Bold: Red Green Yellow Blue Magenta Cyan +- Dimmed: Red Green Yellow Blue Magenta Cyan + +256 colors (showing colors 160-177): +160 161 162 163 164 165 +166 167 168 169 170 171 +172 173 174 175 176 177 + +Full RGB colors: +ForestGreen - RGB(34, 139, 34) + +Text formatting: Bold Dimmed Italic Underline +``` + +### Editor & Terminal Frames + +[Editor & Terminal Frames](https://expressive-code.com/key-features/frames/) + +#### Code editor frames + +```js title="my-test-file.js" +console.log('Title attribute example') +``` + +--- + +```html + +
File name comment example
+``` + +#### Terminal frames + +```bash +echo "This terminal frame has no title" +``` + +--- + +```powershell title="PowerShell terminal example" +Write-Output "This one has a title!" +``` + +#### Overriding frame types + +```sh frame="none" +echo "Look ma, no frame!" +``` + +--- + +```ps frame="code" title="PowerShell Profile.ps1" +# Without overriding, this would be a terminal frame +function Watch-Tail { Get-Content -Tail 20 -Wait $args } +New-Alias tail Watch-Tail +``` + +### Text & Line Markers + +[Text & Line Markers](https://expressive-code.com/key-features/text-markers/) + +#### Marking full lines & line ranges + +```js {1, 4, 7-8} +// Line 1 - targeted by line number +// Line 2 +// Line 3 +// Line 4 - targeted by line number +// Line 5 +// Line 6 +// Line 7 - targeted by range "7-8" +// Line 8 - targeted by range "7-8" +``` + +#### Selecting line marker types (mark, ins, del) + +```js title="line-markers.js" del={2} ins={3-4} {6} +function demo() { + console.log('this line is marked as deleted') + // This line and the next one are marked as inserted + console.log('this is the second inserted line') + + return 'this line uses the neutral default marker type' +} +``` + +#### Adding labels to line markers + +```jsx {"1":5} del={"2":7-8} ins={"3":10-12} +// labeled-line-markers.jsx + +``` + +#### Adding long labels on their own lines + +```jsx {"1. Provide the value prop here:":5-6} del={"2. Remove the disabled and active states:":8-10} ins={"3. Add this to render the children inside the button:":12-15} +// labeled-line-markers.jsx + +``` + +#### Using diff-like syntax + +```diff ++this line will be marked as inserted +-this line will be marked as deleted +this is a regular line +``` + +--- + +```diff +--- a/README.md ++++ b/README.md +@@ -1,3 +1,4 @@ ++this is an actual diff file +-all contents will remain unmodified + no whitespace will be removed either +``` + +#### Combining syntax highlighting with diff-like syntax + +```diff lang="js" + function thisIsJavaScript() { + // This entire block gets highlighted as JavaScript, + // and we can still add diff markers to it! +- console.log('Old code to be removed') ++ console.log('New and shiny code!') + } +``` + +#### Marking individual text inside lines + +```js "given text" +function demo() { + // Mark any given text inside lines + return 'Multiple matches of the given text are supported'; +} +``` + +#### Regular expressions + +```ts /ye[sp]/ +console.log('The words yes and yep will be marked.') +``` + +#### Escaping forward slashes + +```sh /\/ho.*\// +echo "Test" > /home/test.txt +``` + +#### Selecting inline marker types (mark, ins, del) + +```js "return true;" ins="inserted" del="deleted" +function demo() { + console.log('These are inserted and deleted marker types'); + // The return statement uses the default marker type + return true; +} +``` + +### Word Wrap + +[Word Wrap](https://expressive-code.com/key-features/word-wrap/) + +#### Configuring word wrap per block + +```js wrap +// Example with wrap +function getLongString() { + return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide' +} +``` + +--- + +```js wrap=false +// Example with wrap=false +function getLongString() { + return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide' +} +``` + +#### Configuring indentation of wrapped lines + +```js wrap preserveIndent +// Example with preserveIndent (enabled by default) +function getLongString() { + return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide' +} +``` + +--- + +```js wrap preserveIndent=false +// Example with preserveIndent=false +function getLongString() { + return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide' +} +``` + +## Collapsible Sections + +[Collapsible Sections](https://expressive-code.com/plugins/collapsible-sections/) + +```js collapse={1-5, 12-14, 21-24} +// All this boilerplate setup code will be collapsed +import { someBoilerplateEngine } from '@example/some-boilerplate' +import { evenMoreBoilerplate } from '@example/even-more-boilerplate' + +const engine = someBoilerplateEngine(evenMoreBoilerplate()) + +// This part of the code will be visible by default +engine.doSomething(1, 2, 3, calcFn) + +function calcFn() { + // You can have multiple collapsed sections + const a = 1 + const b = 2 + const c = a + b + + // This will remain visible + console.log(`Calculation result: ${a} + ${b} = ${c}`) + return c +} + +// All this code until the end of the block will be collapsed again +engine.closeConnection() +engine.freeMemory() +engine.shutdown({ reason: 'End of example boilerplate code' }) +``` + +## Line Numbers + +[Line Numbers](https://expressive-code.com/plugins/line-numbers/) + +### Displaying line numbers per block + +```js showLineNumbers +// This code block will show line numbers +console.log('Greetings from line 2!') +console.log('I am on line 3') +``` + +--- + +```js showLineNumbers=false +// Line numbers are disabled for this block +console.log('Hello?') +console.log('Sorry, do you know what line I am on?') +``` + +### Changing the starting line number + +```js showLineNumbers startLineNumber=5 +console.log('Greetings from line 5!') +console.log('I am on line 6') +``` diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index db99dfd7..6423971d 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -305,17 +305,6 @@ function initCustomScrollbar() { autoHideSuspend: false, }, }); - const preElements = document.querySelectorAll('pre'); - preElements.forEach((ele) => { - OverlayScrollbars(ele, { - scrollbars: { - theme: 'scrollbar-base scrollbar-dark px-2', - autoHide: 'leave', - autoHideDelay: 500, - autoHideSuspend: false - } - }); - }); const katexElements = document.querySelectorAll('.katex-display') as NodeListOf; @@ -328,14 +317,14 @@ function initCustomScrollbar() { const processKatexElement = (element: HTMLElement) => { if (!element.parentNode) return; if (element.hasAttribute('data-scrollbar-initialized')) return; - + const container = document.createElement('div'); container.className = 'katex-display-container'; container.setAttribute('aria-label', 'scrollable container for formulas'); - + element.parentNode.insertBefore(container, element); container.appendChild(element); - + OverlayScrollbars(container, { scrollbars: { theme: 'scrollbar-base scrollbar-auto', @@ -344,7 +333,7 @@ function initCustomScrollbar() { autoHideSuspend: false } }); - + element.setAttribute('data-scrollbar-initialized', 'true'); }; @@ -364,13 +353,13 @@ function initCustomScrollbar() { function showBanner() { if (!siteConfig.banner.enable) return; - + const banner = document.getElementById('banner'); if (!banner) { console.error('Banner element not found'); return; } - + banner.classList.remove('opacity-0', 'scale-105'); } diff --git a/src/plugins/expressive-code/custom-copy-button.ts b/src/plugins/expressive-code/custom-copy-button.ts new file mode 100644 index 00000000..47e9cb75 --- /dev/null +++ b/src/plugins/expressive-code/custom-copy-button.ts @@ -0,0 +1,90 @@ +import { definePlugin } from "@expressive-code/core"; +import type { Element } from "hast"; + +export function pluginCustomCopyButton() { + return definePlugin({ + name: "Custom Copy Button", + hooks: { + postprocessRenderedBlock: (context) => { + function traverse(node: Element) { + if (node.type === "element" && node.tagName === "pre") { + processCodeBlock(node); + return; + } + if (node.children) { + for (const child of node.children) { + if (child.type === "element") traverse(child); + } + } + } + + function processCodeBlock(node: Element) { + const copyButton = { + type: "element" as const, + tagName: "button", + properties: { + className: ["copy-btn"], + "aria-label": "Copy code", + }, + children: [ + { + type: "element" as const, + tagName: "div", + properties: { + className: ["copy-btn-icon"], + }, + children: [ + { + type: "element" as const, + tagName: "svg", + properties: { + viewBox: "0 -960 960 960", + xmlns: "http://www.w3.org/2000/svg", + className: ["copy-btn-icon", "copy-icon"], + }, + children: [ + { + type: "element" as const, + tagName: "path", + properties: { + d: "M368.37-237.37q-34.48 0-58.74-24.26-24.26-24.26-24.26-58.74v-474.26q0-34.48 24.26-58.74 24.26-24.26 58.74-24.26h378.26q34.48 0 58.74 24.26 24.26 24.26 24.26 58.74v474.26q0 34.48-24.26 58.74-24.26 24.26-58.74 24.26H368.37Zm0-83h378.26v-474.26H368.37v474.26Zm-155 238q-34.48 0-58.74-24.26-24.26-24.26-24.26-58.74v-515.76q0-17.45 11.96-29.48 11.97-12.02 29.33-12.02t29.54 12.02q12.17 12.03 12.17 29.48v515.76h419.76q17.45 0 29.48 11.96 12.02 11.97 12.02 29.33t-12.02 29.54q-12.03 12.17-29.48 12.17H213.37Zm155-238v-474.26 474.26Z", + }, + children: [], + }, + ], + }, + { + type: "element" as const, + tagName: "svg", + properties: { + viewBox: "0 -960 960 960", + xmlns: "http://www.w3.org/2000/svg", + className: ["copy-btn-icon", "success-icon"], + }, + children: [ + { + type: "element" as const, + tagName: "path", + properties: { + d: "m389-377.13 294.7-294.7q12.58-12.67 29.52-12.67 16.93 0 29.61 12.67 12.67 12.68 12.67 29.53 0 16.86-12.28 29.14L419.07-288.41q-12.59 12.67-29.52 12.67-16.94 0-29.62-12.67L217.41-430.93q-12.67-12.68-12.79-29.45-.12-16.77 12.55-29.45 12.68-12.67 29.62-12.67 16.93 0 29.28 12.67L389-377.13Z", + }, + children: [], + }, + ], + }, + ], + }, + ], + } as Element; + + if (!node.children) { + node.children = []; + } + node.children.push(copyButton); + } + + traverse(context.renderData.blockAst); + }, + }, + }); +} diff --git a/src/plugins/expressive-code/language-badge.ts b/src/plugins/expressive-code/language-badge.ts new file mode 100644 index 00000000..c17f8951 --- /dev/null +++ b/src/plugins/expressive-code/language-badge.ts @@ -0,0 +1,48 @@ +/** + * Based on the discussion at https://github.com/expressive-code/expressive-code/issues/153#issuecomment-2282218684 + */ +import { definePlugin } from "@expressive-code/core"; + +export function pluginLanguageBadge() { + return definePlugin({ + name: "Language Badge", + baseStyles: ({ cssVar }) => ` + [data-language]::before { + position: absolute; + z-index: 2; + right: 0.5rem; + top: 0.5rem; + padding: 0.1rem 0.5rem; + content: attr(data-language); + font-size: 0.75rem; + font-weight: bold; + text-transform: uppercase; + color: oklch(0.75 0.1 var(--hue)); + background: oklch(0.33 0.035 var(--hue)); + border-radius: 0.5rem; + pointer-events: none; + transition: opacity 0.3s; + opacity: 0; + } + .frame:not(.has-title):not(.is-terminal) { + @media (hover: none) { + & [data-language]::before { + opacity: 1; + margin-right: 3rem; + } + & [data-language]:active::before { + opacity: 0; + } + } + @media (hover: hover) { + & [data-language]::before { + opacity: 1; + } + &:hover [data-language]::before { + opacity: 0; + } + } + } + `, + }); +} diff --git a/src/styles/expressive-code.css b/src/styles/expressive-code.css new file mode 100644 index 00000000..12bb24c6 --- /dev/null +++ b/src/styles/expressive-code.css @@ -0,0 +1,3 @@ +.expressive-code .frame { + @apply !shadow-none; +} diff --git a/src/styles/main.css b/src/styles/main.css index f517d8c0..d6af28eb 100644 --- a/src/styles/main.css +++ b/src/styles/main.css @@ -110,22 +110,6 @@ .btn-regular-dark.success { @apply bg-[oklch(0.75_0.14_var(--hue))] dark:bg-[oklch(0.75_0.14_var(--hue))] } - - .copy-btn-icon { - @apply absolute top-1/2 left-1/2 transition -translate-x-1/2 -translate-y-1/2 - } - .copy-btn .copy-icon { - @apply opacity-100 fill-white dark:fill-white/75 - } - .copy-btn.success .copy-icon { - @apply opacity-0 fill-[var(--deep-text)] - } - .copy-btn .success-icon { - @apply opacity-0 - } - .copy-btn.success .success-icon { - @apply opacity-100 - } } .custom-md img, #post-cover img { @@ -154,4 +138,4 @@ .collapsed { height: var(--collapsedHeight); -} \ No newline at end of file +} diff --git a/src/styles/markdown.css b/src/styles/markdown.css index 1f956eca..17d89db4 100644 --- a/src/styles/markdown.css +++ b/src/styles/markdown.css @@ -58,19 +58,38 @@ } } - pre { - @apply bg-[var(--codeblock-bg)] !important; - @apply rounded-xl px-5; + .copy-btn { + all: initial; + @apply btn-regular-dark opacity-0 shadow-lg shadow-black/50 absolute active:scale-90 h-8 w-8 top-3 right-3 text-sm rounded-lg transition-all ease-in-out z-20 cursor-pointer; + } + .frame:hover .copy-btn { + opacity: 1; + } - code { - @apply bg-transparent text-inherit text-sm p-0; + .copy-btn-icon { + @apply absolute top-1/2 left-1/2 transition -translate-x-1/2 -translate-y-1/2 w-4 h-4 fill-white pointer-events-none; + } + .copy-btn .copy-icon { + @apply opacity-100 fill-white dark:fill-white/75; + } + .copy-btn.success .copy-icon { + @apply opacity-0 fill-[var(--deep-text)] + } + .copy-btn .success-icon { + @apply opacity-0 fill-white; + } + .copy-btn.success .success-icon { + @apply opacity-100 + } - ::selection { - @apply bg-[var(--codeblock-selection)]; - } + .expressive-code { + @apply my-4; + ::selection { + @apply bg-[var(--codeblock-selection)]; } } + ul, ol { li::marker { @apply text-[var(--primary)]; diff --git a/src/styles/variables.styl b/src/styles/variables.styl index 9bccc093..fe4b530f 100644 --- a/src/styles/variables.styl +++ b/src/styles/variables.styl @@ -56,7 +56,8 @@ define({ --inline-code-color: var(--btn-content) --selection-bg: oklch(0.90 0.05 var(--hue)) oklch(0.40 0.08 var(--hue)) --codeblock-selection: oklch(0.40 0.08 var(--hue)) - --codeblock-bg: oklch(0.2 0.015 var(--hue)) oklch(0.17 0.015 var(--hue)) + --codeblock-bg: oklch(0.17 0.015 var(--hue)) oklch(0.17 0.015 var(--hue)) + --codeblock-topbar-bg: oklch(0.3 0.02 var(--hue)) oklch(0.12 0.015 var(--hue)) --license-block-bg: black(0.03) var(--codeblock-bg) diff --git a/src/types/config.ts b/src/types/config.ts index 9a11a6fb..c28d5c67 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -86,3 +86,7 @@ export type BlogPostData = { nextTitle?: string; nextSlug?: string; }; + +export type ExpressiveCodeConfig = { + theme: string; +}; diff --git a/src/utils/setting-utils.ts b/src/utils/setting-utils.ts index 9a18f94a..b9dfd7eb 100644 --- a/src/utils/setting-utils.ts +++ b/src/utils/setting-utils.ts @@ -1,3 +1,4 @@ +import { expressiveCodeConfig } from "@/config"; import type { LIGHT_DARK_MODE } from "@/types/config"; import { AUTO_MODE, @@ -42,6 +43,12 @@ export function applyThemeToDocument(theme: LIGHT_DARK_MODE) { } break; } + + // Set the theme for Expressive Code + document.documentElement.setAttribute( + "data-theme", + expressiveCodeConfig.theme, + ); } export function setTheme(theme: LIGHT_DARK_MODE): void {