diff --git a/astro.config.mjs b/astro.config.mjs index 77c9cb4b..6324d594 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,14 +1,8 @@ -import { defineConfig } from "astro/config" -// import tailwind from "@astrojs/tailwind" -// import sitemap from "@astrojs/sitemap" -// import compressor from "astro-compressor" +import { defineConfig, svgoOptimizer } from "astro/config"; import icon from "astro-icon" import starlight from '@astrojs/starlight' import starlightBlog from 'starlight-blog' -import { defineConfig, svgoOptimizer } from "astro/config"; - import astroBrokenLinksChecker from 'astro-broken-link-checker'; - import mdx from "@astrojs/mdx" // https://astro.build/config diff --git a/package.json b/package.json index c9621429..6c8f5474 100644 --- a/package.json +++ b/package.json @@ -10,33 +10,33 @@ "astro": "astro" }, "dependencies": { - "@astrojs/check": "^0.9.9", - "@astrojs/mdx": "^7.0.3", - "@astrojs/sitemap": "^3.7.3", - "@astrojs/starlight": "^0.41.3", + "@astrojs/check": "^0.9.10", + "@astrojs/mdx": "^7.0.8", + "@astrojs/sitemap": "^3.7.4", + "@astrojs/starlight": "^0.41.11", "@iconify-json/fa6-regular": "^1.2.4", "@iconify-json/fa6-solid": "^1.2.4", - "@iconify-json/octicon": "^1.2.29", - "@iconify-json/simple-icons": "^1.2.90", - "@iconify-json/tabler": "^1.2.35", + "@iconify-json/octicon": "^1.2.34", + "@iconify-json/simple-icons": "^1.2.95", + "@iconify-json/tabler": "^1.2.38", "@preline/accordion": "^2.6.0", "@preline/collapse": "^2.6.0", "@preline/dropdown": "^2.6.0", "@preline/overlay": "^2.6.0", "@preline/tabs": "^2.6.0", "@types/html-to-text": "^9.0.4", - "@types/markdown-it": "^14.1.2", - "astro": "^7.0.9", + "@types/markdown-it": "^14.2.0", + "astro": "^7.3.2", "astro-broken-link-checker": "github:imazen/astro-broken-link-checker", "astro-compressor": "^1.3.0", - "astro-icon": "^1.1.5", + "astro-icon": "^1.2.0", "clipboard": "^2.0.11", "globby": "^14.1.0", "gray-matter": "^4.0.3", "gsap": "^3.15.0", "html-minifier-terser": "^7.2.0", "html-to-text": "^9.0.5", - "js-yaml": "^4.3.0", + "js-yaml": "^4.3.2", "preline": "^2.7.0", "rimraf": "^6.1.3", "sharp": "^0.33.5", @@ -45,7 +45,7 @@ }, "devDependencies": { "astro-vtbot": "^2.1.12", - "prettier": "^3.9.5", + "prettier": "^3.9.6", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.6.14", "typescript": "^5.9.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6aef3e36..f63b45e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,17 +9,17 @@ importers: .: dependencies: '@astrojs/check': - specifier: ^0.9.9 - version: 0.9.9(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(typescript@5.9.3) + specifier: ^0.9.10 + version: 0.9.10(prettier-plugin-astro@0.14.1)(prettier@3.9.6)(typescript@5.9.3) '@astrojs/mdx': - specifier: ^7.0.3 - version: 7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0)) + specifier: ^7.0.8 + version: 7.0.8(@astrojs/markdown-satteri@0.3.8)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0)) '@astrojs/sitemap': - specifier: ^3.7.3 - version: 3.7.3 + specifier: ^3.7.4 + version: 3.7.4 '@astrojs/starlight': - specifier: ^0.41.3 - version: 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0))(typescript@5.9.3) + specifier: ^0.41.11 + version: 0.41.11(@astrojs/markdown-remark@7.3.1)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0))(typescript@5.9.3) '@iconify-json/fa6-regular': specifier: ^1.2.4 version: 1.2.4 @@ -27,14 +27,14 @@ importers: specifier: ^1.2.4 version: 1.2.4 '@iconify-json/octicon': - specifier: ^1.2.29 - version: 1.2.29 + specifier: ^1.2.34 + version: 1.2.34 '@iconify-json/simple-icons': - specifier: ^1.2.90 - version: 1.2.90 + specifier: ^1.2.95 + version: 1.2.95 '@iconify-json/tabler': - specifier: ^1.2.35 - version: 1.2.35 + specifier: ^1.2.38 + version: 1.2.38 '@preline/accordion': specifier: ^2.6.0 version: 2.6.0 @@ -54,11 +54,11 @@ importers: specifier: ^9.0.4 version: 9.0.4 '@types/markdown-it': - specifier: ^14.1.2 - version: 14.1.2 + specifier: ^14.2.0 + version: 14.2.0 astro: - specifier: ^7.0.9 - version: 7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0) + specifier: ^7.3.2 + version: 7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0) astro-broken-link-checker: specifier: github:imazen/astro-broken-link-checker version: astro-broken-links-checker@https://codeload.github.com/imazen/astro-broken-link-checker/tar.gz/b926cc019b04ab773c13c5270580d2c612296e28 @@ -66,8 +66,8 @@ importers: specifier: ^1.3.0 version: 1.3.0 astro-icon: - specifier: ^1.1.5 - version: 1.1.5 + specifier: ^1.2.0 + version: 1.2.0 clipboard: specifier: ^2.0.11 version: 2.0.11 @@ -87,8 +87,8 @@ importers: specifier: ^9.0.5 version: 9.0.5 js-yaml: - specifier: ^4.3.0 - version: 4.3.0 + specifier: ^4.3.2 + version: 4.3.2 preline: specifier: ^2.7.0 version: 2.7.0 @@ -103,114 +103,114 @@ importers: version: 0.1.5 starlight-blog: specifier: ^0.26.1 - version: 0.26.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0))(typescript@5.9.3))(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0)) + version: 0.26.1(@astrojs/starlight@0.41.11(@astrojs/markdown-remark@7.3.1)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0))(typescript@5.9.3))(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0)) devDependencies: astro-vtbot: specifier: ^2.1.12 version: 2.1.12 prettier: - specifier: ^3.9.5 - version: 3.9.5 + specifier: ^3.9.6 + version: 3.9.6 prettier-plugin-astro: specifier: ^0.14.1 version: 0.14.1 prettier-plugin-tailwindcss: specifier: ^0.6.14 - version: 0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.9.5) + version: 0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.9.6) typescript: specifier: ^5.9.3 version: 5.9.3 packages: - '@antfu/install-pkg@1.1.0': - resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@antfu/install-pkg@2.0.1': + resolution: {integrity: sha512-iCKVQcIC0e3oDxEfs3SHQGW+ovhBMZmS1TE+bTk50rVyMCBmCfClv7Qi3HQKlumYwvjb/iIMeWCW2i67q6kFfQ==} - '@antfu/utils@8.1.1': - resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} - - '@astrojs/check@0.9.9': - resolution: {integrity: sha512-A5UW8uIuErLWEoRQvzgXpO1gTjUFtK8r7nU2Z7GewAMxUb7bPvpk11qaKKgxqXlHJWlAvaaxy+Xg28A6bmQ1Tg==} + '@astrojs/check@0.9.10': + resolution: {integrity: sha512-zgx/UQMozdjOa3bOxjgeCFdtpE3c9rRX6xHwa+2QXvy8z8Akifu2AtubHyv/zzC2znO8dl8fFWL4K+Ba9kS8HQ==} hasBin: true peerDependencies: typescript: ^5.0.0 || ^6.0.0 - '@astrojs/compiler-binding-darwin-arm64@0.3.1': - resolution: {integrity: sha512-IEmEF2fUIlTHtpeE/isyEGVOB14cEyh/LZOFYt6wn3jNyVpdC8aR5OZ+RzFUR/f+8ZDM1LaMwZKvoA7eMyJeFw==} + '@astrojs/compiler-binding-darwin-arm64@0.4.0': + resolution: {integrity: sha512-ZVUwHundaQyFNjE6uoa0usaC0WOCitDCLS/4mdb4rOiJXwVUuKJBMxI5WMzXLWmamsXtK/Z//ifLXvV5Yeh4Hw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@astrojs/compiler-binding-darwin-x64@0.3.1': - resolution: {integrity: sha512-GF2kIxjpPDLsn94zbZNMsxEmkU828QqnmM7kiQJnaooS3jmI+I7kk6+oI6EpwOsK3femCMdcm+wmOsEqtGrmjQ==} + '@astrojs/compiler-binding-darwin-x64@0.4.0': + resolution: {integrity: sha512-FI6G8AY8u6fR1SI/QRR5yGMwtvZwP34CDmZpZ5HwJGa50UM1VISTLhqkhV4a476pmgd25X1Aur2dqw6hUnrlKA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': - resolution: {integrity: sha512-XJL3SDmOtVrqFhCirNcHwE91+IesJqlgNo23I4qW9QUYfwzm/TBZuH61fgqsb1ttgR1mMYz6ooPWs0JDhwMqpQ==} + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': + resolution: {integrity: sha512-lB9gLFJK7m82EnjaU8nlRBEfcwGNeHidW3sSjODTUjMNaoewVuUz9fwwdY5M4jiSXIqWLH3yl6TX8FTDKA74Sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': - resolution: {integrity: sha512-xqE8BVbDoBueK/B47w30PtkVofUWJKGkwoMVE+EOMLf11rnoANxIAdA9FPqY+rng4oNI5ndHGsri1yPj2k8vZQ==} + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': + resolution: {integrity: sha512-HPbvWqbxFxyaoQJhLxCaSjtYBx9KBo7JGVzEFZCmMl968a2PsSH0UfiODYgYPXofTOIsIH2aoCcrHXML0IA3ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': - resolution: {integrity: sha512-1y0StU1qiCuDFH3rmbRJXcxdfHxFPrES1Rd+RLffosvUR7I2cH5SF5SFnBN9vXpzpkmyElZm3Yr47iJBPN7vVA==} + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': + resolution: {integrity: sha512-tQKolMxoJ/+0AmLWm1PmJ/i+z3i10ZU1bNuVjEDulCf48azEMtUNjTZgHJ5MPtpYRNc7dlETr8QujUfduzoC7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-x64-musl@0.3.1': - resolution: {integrity: sha512-16q0fYf7kpbmdObZEeZJEup8hQv/whgNwVjrSvT8umrKwLDSnNIWiQpm09lQQu6bweZB0XyIvHwlPitvJhC+hg==} + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': + resolution: {integrity: sha512-5v5YymudsxMHp3NBLCS8BUlu5CRqeLtWD9cKS/4nIhIEHCbpz9okmVV6I0HWqmBAPhWYcDa3vw/vltYPrOQCTA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@astrojs/compiler-binding-wasm32-wasi@0.3.1': - resolution: {integrity: sha512-cB456shIwDv/PrVT+2QG7LFndpHkVge5HjqADKZgGaAc9JHVktCtjSrcdkRQ+3tbkPazNKaTLRjXLIiz2NIx9g==} + '@astrojs/compiler-binding-wasm32-wasi@0.4.0': + resolution: {integrity: sha512-m/phuH3x3PREvv1OnkM44NoPh4MatUadix1fB1u5SvMLCyDTUZykDJbKnWf1cjnYmHdlB8HcjTjl6JrCqAIXcw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': - resolution: {integrity: sha512-ur/9+If/yTE69mmeX5MqSZndL0HOyx67GeNZUy3N7wVdWpLz9UTJXwyWS4UR2PUQHitghjsM5xoX0Ge56WRVQQ==} + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': + resolution: {integrity: sha512-B9zYf3okEY83kM8gydlpH2BHP00w4ifxPqlYlWrgTwuD6wnkrJDCwBlgy1q31cERjCJRXN1lrE2VmkLvFjv/6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': - resolution: {integrity: sha512-k0W+kDBzDkNZOqu4kElDvCOIbKw5Ut9S1WZ1Krj3KTgNuBERNKXsMMsRLLcbgfdMdbe7bTekQLshZrrvmYpmwA==} + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': + resolution: {integrity: sha512-zB0Nrv0dGc0zZWPGDRmmETTPhDRqyZjAjk+gWMlVrJX5U89obpB3VUUE1ZiHxOCN5LQojeLK6O8L/dnoHolvNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@astrojs/compiler-binding@0.3.1': - resolution: {integrity: sha512-DaAUj29AIBU2XdJ8uwcab8lW5O2pk9pY8AXkcMw0sw77nVa3oeTYRcO+Dvbbpoexf6ThMc0FMWYCQ/wN1/T7oQ==} + '@astrojs/compiler-binding@0.4.0': + resolution: {integrity: sha512-x2RjDUuWfwLNtc3mjAdSRInwqh/rqbLar9cm/5FOMbHvmYZB7yfKewzSclAxWjIZsypJDXv1lhaP2WG+P8TK3g==} engines: {node: ^20.19.0 || >=22.12.0} - '@astrojs/compiler-rs@0.3.1': - resolution: {integrity: sha512-aT7xkgsbNoS6nriY5qKpbihK43slFHO41iqgHCTdOvn1ifaQxLCc5yXy+6GzAtiafoaC1zA7OwVXCXMsvUZOkg==} + '@astrojs/compiler-rs@0.4.0': + resolution: {integrity: sha512-koVikeon1kreEy+/JzLQRy3vzHHQVOjycs4degg4vFufKApZOwMZvSSAEztYNhmcQVfNVsVZZI4cEge3cexAbQ==} engines: {node: '>=22.12.0'} '@astrojs/compiler@2.13.1': resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} - '@astrojs/internal-helpers@0.10.1': - resolution: {integrity: sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q==} + '@astrojs/internal-helpers@0.10.4': + resolution: {integrity: sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA==} + + '@astrojs/internal-helpers@0.11.0': + resolution: {integrity: sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==} '@astrojs/internal-helpers@0.9.1': resolution: {integrity: sha512-1pWuARqYom/TzuU3+0ZugsTrKlUydWKuULmDqSMTuonY+9IRDUEGKX/8PXQ1nBxRq3w85uGtd9q9SXfqEldMIQ==} - '@astrojs/language-server@2.16.12': - resolution: {integrity: sha512-3LpFphBCzveUgm5ZVDINB/v3YA4TgPa1EMOEFn3Zt/Ww6jojR25iN+kmzeUz7v/b9xkmq+hMACTX4hizN3VCEQ==} + '@astrojs/language-server@2.16.16': + resolution: {integrity: sha512-KuS17AOOqH/M5mHXPmKvtp8L+NNteARC7Xjf395+9R9dtJOBndqdStwU4V+OKzYZpgZ+hliV13knzx/oMtFl7Q==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -224,11 +224,17 @@ packages: '@astrojs/markdown-remark@7.1.2': resolution: {integrity: sha512-caXZ4Dc2St2dW8luEg22GlP0gupLdztCTQE4EzZOxW1pqWXz9mbeJEuHUkgDYcKWW8tjIHkydYDhWLVoxJ327Q==} - '@astrojs/markdown-remark@7.2.1': - resolution: {integrity: sha512-jPVNIqTvk+yKviikszv/Y1U4jGUSKpp/Nw48QZV4qjWgp70j4Lkq3lhSDRbWwCfgKvEyO9GHuVbV1dM2WYXy1w==} + '@astrojs/markdown-remark@7.2.4': + resolution: {integrity: sha512-MvspGMynWKAjTe4/lTUdmBPHIFKNVLTCF6UlyWGogTGzNrTvjD+D4n48k7h8swxsEPKHK2TwxkZO7uoaCv1Pow==} + + '@astrojs/markdown-remark@7.3.1': + resolution: {integrity: sha512-QCjsjZQl0+Cgb91+T3Ip9hyUe1r5aLm4udi584rML9YO3syupbAYE+jWpAxYg+z4lFLNUugPrylFxZ+8qFTClg==} - '@astrojs/markdown-satteri@0.3.4': - resolution: {integrity: sha512-6Lvt/bQZEBW+zzdhPblvfZEy5PGEYJaUsUqaCgwHeRPxZJL1gc9I+DRLKWJjjYTWDzVUTzXlMq4WwSK+X34CVw==} + '@astrojs/markdown-satteri@0.3.8': + resolution: {integrity: sha512-n8ItpFTCmlDsVR5+rwDmehSf+jFCYLWmZiisZNGuF7xILqYhsVeBfcha4qgS2Seq3fAc9Tm58ZVrvqFQ6RQgRQ==} + + '@astrojs/markdown-satteri@0.4.1': + resolution: {integrity: sha512-EniHbFNa6SQHDih7JnpPos3NWXO6hdt4raBcOosfGmlfc3gP9CI/sESA3VOf1PgJZ7SFfewlZW9Livn0JugEZg==} '@astrojs/mdx@5.0.6': resolution: {integrity: sha512-4dKe0ZMmqujofPNDHahzClkwinn9f8jHPcaXcgdGvPAlboD2mjzkUCofli2cBnxYAkdfhC6d50gBJ8i/cH8gHw==} @@ -236,8 +242,8 @@ packages: peerDependencies: astro: ^6.0.0 - '@astrojs/mdx@7.0.3': - resolution: {integrity: sha512-RxyIwU0uFam5ftwqKOjpIdhnFxZ/kEikeimLyQy3eGXbHT8WgRGzzesOIHVU8+m9TY8ag5WVOyvV24/GyqPdPQ==} + '@astrojs/mdx@7.0.8': + resolution: {integrity: sha512-RNuwq2ccTSi7NX9YqlR0noaWoVdOrZuJvdfWXotAzdhMVB0b0zEMLnNU+xar7le0GwTMlTObD/QAu8jeHA/3nA==} engines: {node: '>=22.12.0'} peerDependencies: '@astrojs/markdown-satteri': ^0.3.1 @@ -253,11 +259,11 @@ packages: '@astrojs/rss@4.0.19': resolution: {integrity: sha512-e+z5wYeYtffQdHQO8c2tkSd2JEBdAuRXJV4ZEU5IxkYeE6e39woDd7nw1PH1Kk2tEYNCYuKdylnnbhGmt61awA==} - '@astrojs/sitemap@3.7.3': - resolution: {integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==} + '@astrojs/sitemap@3.7.4': + resolution: {integrity: sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==} - '@astrojs/starlight@0.41.3': - resolution: {integrity: sha512-8xsG6UpK581TJmtOc7/pnxHKEbP16rV06VLWaVa7FOyE/VEwnaHOsLtL+miifCEfuiuv0Wn+j8u3JSluRQesMQ==} + '@astrojs/starlight@0.41.11': + resolution: {integrity: sha512-hM95Mbsl4l60SBwaNQA/HTxpOLGfeB5EfR9qY3kr0SsAVKUspCssjO0RVBsLiPAE6EA5xuORcCoz/Q6DTX+MuQ==} peerDependencies: '@astrojs/markdown-remark': ^7.2.0 astro: ^7.0.2 @@ -280,59 +286,108 @@ packages: resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} + '@bruits/satteri-darwin-arm64@0.10.5': + resolution: {integrity: sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==} + cpu: [arm64] + os: [darwin] + '@bruits/satteri-darwin-arm64@0.9.5': resolution: {integrity: sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==} cpu: [arm64] os: [darwin] + '@bruits/satteri-darwin-x64@0.10.5': + resolution: {integrity: sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==} + cpu: [x64] + os: [darwin] + '@bruits/satteri-darwin-x64@0.9.5': resolution: {integrity: sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==} cpu: [x64] os: [darwin] + '@bruits/satteri-linux-arm64-gnu@0.10.5': + resolution: {integrity: sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@bruits/satteri-linux-arm64-gnu@0.9.5': resolution: {integrity: sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==} cpu: [arm64] os: [linux] libc: [glibc] + '@bruits/satteri-linux-arm64-musl@0.10.5': + resolution: {integrity: sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@bruits/satteri-linux-arm64-musl@0.9.5': resolution: {integrity: sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==} cpu: [arm64] os: [linux] libc: [musl] + '@bruits/satteri-linux-x64-gnu@0.10.5': + resolution: {integrity: sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@bruits/satteri-linux-x64-gnu@0.9.5': resolution: {integrity: sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==} cpu: [x64] os: [linux] libc: [glibc] + '@bruits/satteri-linux-x64-musl@0.10.5': + resolution: {integrity: sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==} + cpu: [x64] + os: [linux] + libc: [musl] + '@bruits/satteri-linux-x64-musl@0.9.5': resolution: {integrity: sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==} cpu: [x64] os: [linux] libc: [musl] + '@bruits/satteri-wasm32-wasi@0.10.5': + resolution: {integrity: sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@bruits/satteri-wasm32-wasi@0.9.5': resolution: {integrity: sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@bruits/satteri-win32-arm64-msvc@0.10.5': + resolution: {integrity: sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==} + cpu: [arm64] + os: [win32] + '@bruits/satteri-win32-arm64-msvc@0.9.5': resolution: {integrity: sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==} cpu: [arm64] os: [win32] + '@bruits/satteri-win32-x64-msvc@0.10.5': + resolution: {integrity: sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==} + cpu: [x64] + os: [win32] + '@bruits/satteri-win32-x64-msvc@0.9.5': resolution: {integrity: sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==} cpu: [x64] @@ -345,18 +400,21 @@ packages: resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} engines: {node: '>=18'} - '@clack/core@1.4.3': - resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + '@clack/core@1.5.0': + resolution: {integrity: sha512-zNikCcd8BbcEvzzG1sbXFrRHFk5kHPrpwZwksPvf9qyQO1Teb7JaXaOAxXZei9nZLDW0gaZawiuTCji88bTBhw==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.7.0': - resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + '@clack/prompts@1.8.0': + resolution: {integrity: sha512-PXzLZ8N34rxmuo4dJg3xtOXhcBse94qGjDqsteoEYrFrrZ5FSjIGwMAuOcv64ln8rHVBBD06XeVGr+/JX+plcA==} engines: {node: '>= 20.12.0'} - '@ctrl/tinycolor@4.2.0': - resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} + '@ctrl/tinycolor@4.2.1': + resolution: {integrity: sha512-Vh5uy9Y1JBMId6J1f68TMXnZrTCvNdo9Fu2k0d1YnJngR+sM5kWTKl441c/3TFs+cG0NWOjRWgQ/iaWhbYx+7A==} engines: {node: '>=14'} + '@cyberalien/svg-utils@1.2.19': + resolution: {integrity: sha512-paDJoDu+LhuH5Ma1q0BDqBpg6d16Xk22cZZrlg/s/J9oB8KgnnpU/snaEETJu2G1pwYcWQINUz6WUqu0Wm9k6A==} + '@emmetio/abbreviation@2.3.3': resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} @@ -384,179 +442,179 @@ packages: '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} - '@emnapi/runtime@1.11.2': - resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@expressive-code/core@0.44.0': - resolution: {integrity: sha512-xgiF2P6tYUbrhi3+x0S8xHZWT1t3Bvb3U91tAtRbLb9HLejLvYc5GZUqKICKLaUN4iSGhhNJu2fM/aH8e5yCMg==} + '@expressive-code/core@0.44.2': + resolution: {integrity: sha512-Yw5KonQCD1HoOO2P89y4wifqS9qrJcGVY0LkVMUsVZjhi++bhz4WwQ37inenKFNOEVo50P7cjoVsCdaVnUbq8w==} - '@expressive-code/plugin-frames@0.44.0': - resolution: {integrity: sha512-V6M6+zVc1GzqCvXkQHc2m5rcFOIVzJgMq5gnfrMnVf2gwtj/sg4H93c1f/mGeqHycubwkHFUDyParAOiGeDZeA==} + '@expressive-code/plugin-frames@0.44.2': + resolution: {integrity: sha512-gVLm6TQMNIRWIaM7o+mCtxkGNjLZY5/2faSTLoXeo9wv/Pkj/0QAtZyXPVPrRsPARqiipATNFmfvQFLJudxPHQ==} - '@expressive-code/plugin-shiki@0.44.0': - resolution: {integrity: sha512-RZsdaqlbGqyAQKuoX4myQXxjmiE2l5KBpJ/gKPh62tCdIdpWyjbzVqSo8+5XsezZxkfi8AJ/J6EUaBTPROFX/Q==} + '@expressive-code/plugin-shiki@0.44.2': + resolution: {integrity: sha512-ebWIvCDzXvjyD8rH6T6DfytYJw1GoArLR4nusIAE4VxXrCQf3d+owytiv010KU/dUg+SRLZskDn0N+HaFXeuSg==} - '@expressive-code/plugin-text-markers@0.44.0': - resolution: {integrity: sha512-0/m3A5b+lz2upyNq+wzZ1S69HRoJmyFs5LsR42lVZ9pmGRlBiSBYQpvqlji4DBj1+Riamxc0AvcCr5kuzOQeWA==} + '@expressive-code/plugin-text-markers@0.44.2': + resolution: {integrity: sha512-SNI7EgUSiADqbqUzzMbj1ZeC/r2pa5eg3KyFOGAd3a7EsIA4qzjXQLp+ODWQtHVDKFCdGs4J3ovSJUqvKIK96g==} '@iconify-json/fa6-regular@1.2.4': resolution: {integrity: sha512-fnUS/MLj3ZAp29oRsC8/aY8Wau7NIg7VesTz3jCcE6VJBzcz95Yxp/Dl5yHvkP+aQxrNw5Lj3nrOXB4nQh+oNA==} @@ -564,23 +622,23 @@ packages: '@iconify-json/fa6-solid@1.2.4': resolution: {integrity: sha512-LmDNNdJVyvF5mPm1yxWvL8KjCc/E8LzoqnF1LNTVpyY2ZJRUlGOWuPIThdbuFBF2IovgttkIyumhyqfmlHdwKg==} - '@iconify-json/octicon@1.2.29': - resolution: {integrity: sha512-yREprVAv+SiAO8dxGw40LMLou4eXDYJX9Cz4MB1Cki4d+peSCpQ4b99YaaRbwuJeyyjLM4Q03QzBcEfcf6xCcg==} + '@iconify-json/octicon@1.2.34': + resolution: {integrity: sha512-s9iYCzMAr2dPX1CKmRdiMQ2z49o30hocyEQ6DOnpPdvuZ52gIkrexlp9/8XMVVR4RHBlFgj1fGWxQISh7JToZw==} - '@iconify-json/simple-icons@1.2.90': - resolution: {integrity: sha512-zt2o2ZvQpHVvZJARIkZ51RnaHY2oqcPJMvHE+mVnxkSr+c33fnX4gciiXu+wyX5ei+s0qbVX1wD0DWBbaGBYMA==} + '@iconify-json/simple-icons@1.2.95': + resolution: {integrity: sha512-QwWgcoiL+eNCD38QM0OStFVFoOgDvzeHrcwMAvATvcFl0VvMEtED92qp3K3juS0H6RZ9BGUlgq9mODPwNWkjJg==} - '@iconify-json/tabler@1.2.35': - resolution: {integrity: sha512-/sJMqHvh5ZWrEERVfDCT5NjVDeKJdhosFtKjJofAVl+P/3AzLiryOQw7WvrfDF25Xa5N/eoOQ15Y1jnhYXxBoQ==} + '@iconify-json/tabler@1.2.38': + resolution: {integrity: sha512-9v6ooRU/bKOK/Whv4w2aiK5gBnfCV9Ei+uD1iDDeLu2b+EnF3G3ZKkRKWEOOLG8bJyfKn6XEia6gUQ9oO7cF+Q==} - '@iconify/tools@4.2.0': - resolution: {integrity: sha512-WRxPva/ipxYkqZd1+CkEAQmd86dQmrwH0vwK89gmp2Kh2WyyVw57XbPng0NehP3x4V1LzLsXUneP1uMfTMZmUA==} + '@iconify/tools@5.0.14': + resolution: {integrity: sha512-wJ4ZE3/HZh2iBqLwG+8FOMHe7CMJAJqwSXZSpPwMdj1gZM3Z4t2hbQMVw4Vm45oQ985qn0g89PUIcDEdKTheBA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.3.0': - resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + '@iconify/utils@3.1.7': + resolution: {integrity: sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==} '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} @@ -592,8 +650,8 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-darwin-arm64@0.35.3': - resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} + '@img/sharp-darwin-arm64@0.35.4': + resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] @@ -604,14 +662,14 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-darwin-x64@0.35.3': - resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} + '@img/sharp-darwin-x64@0.35.4': + resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-freebsd-wasm32@0.35.3': - resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} + '@img/sharp-freebsd-wasm32@0.35.4': + resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} engines: {node: '>=20.9.0'} os: [freebsd] @@ -620,8 +678,8 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.3.2': - resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} + '@img/sharp-libvips-darwin-arm64@1.3.3': + resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} cpu: [arm64] os: [darwin] @@ -630,8 +688,8 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.3.2': - resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} + '@img/sharp-libvips-darwin-x64@1.3.3': + resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} cpu: [x64] os: [darwin] @@ -641,8 +699,8 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm64@1.3.2': - resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} + '@img/sharp-libvips-linux-arm64@1.3.3': + resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} cpu: [arm64] os: [linux] libc: [glibc] @@ -653,20 +711,20 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.3.2': - resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} + '@img/sharp-libvips-linux-arm@1.3.3': + resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.3.2': - resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} + '@img/sharp-libvips-linux-ppc64@1.3.3': + resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.3.2': - resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} + '@img/sharp-libvips-linux-riscv64@1.3.3': + resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} cpu: [riscv64] os: [linux] libc: [glibc] @@ -677,8 +735,8 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.3.2': - resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} + '@img/sharp-libvips-linux-s390x@1.3.3': + resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} cpu: [s390x] os: [linux] libc: [glibc] @@ -689,8 +747,8 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.3.2': - resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} + '@img/sharp-libvips-linux-x64@1.3.3': + resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} cpu: [x64] os: [linux] libc: [glibc] @@ -701,8 +759,8 @@ packages: os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-arm64@1.3.2': - resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} cpu: [arm64] os: [linux] libc: [musl] @@ -713,8 +771,8 @@ packages: os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.3.2': - resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} cpu: [x64] os: [linux] libc: [musl] @@ -726,8 +784,8 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-arm64@0.35.3': - resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} + '@img/sharp-linux-arm64@0.35.4': + resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] @@ -740,22 +798,22 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.35.3': - resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} + '@img/sharp-linux-arm@0.35.4': + resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.35.3': - resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} + '@img/sharp-linux-ppc64@0.35.4': + resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.35.3': - resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} + '@img/sharp-linux-riscv64@0.35.4': + resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] @@ -768,8 +826,8 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.35.3': - resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} + '@img/sharp-linux-s390x@0.35.4': + resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] @@ -782,8 +840,8 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.35.3': - resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} + '@img/sharp-linux-x64@0.35.4': + resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] @@ -796,8 +854,8 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linuxmusl-arm64@0.35.3': - resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} + '@img/sharp-linuxmusl-arm64@0.35.4': + resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] @@ -810,8 +868,8 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.35.3': - resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} + '@img/sharp-linuxmusl-x64@0.35.4': + resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] @@ -822,17 +880,17 @@ packages: engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-wasm32@0.35.3': - resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} + '@img/sharp-wasm32@0.35.4': + resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} engines: {node: '>=20.9.0'} - '@img/sharp-webcontainers-wasm32@0.35.3': - resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} + '@img/sharp-webcontainers-wasm32@0.35.4': + resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.35.3': - resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} + '@img/sharp-win32-arm64@0.35.4': + resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] @@ -843,8 +901,8 @@ packages: cpu: [ia32] os: [win32] - '@img/sharp-win32-ia32@0.35.3': - resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} + '@img/sharp-win32-ia32@0.35.4': + resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} engines: {node: ^20.9.0} cpu: [ia32] os: [win32] @@ -855,16 +913,12 @@ packages: cpu: [x64] os: [win32] - '@img/sharp-win32-x64@0.35.3': - resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} + '@img/sharp-win32-x64@0.35.4': + resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -875,8 +929,8 @@ packages: '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -884,14 +938,15 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + '@napi-rs/wasm-runtime@1.2.4': + resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@nodable/entities@2.2.0': - resolution: {integrity: sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==} + '@nodable/entities@3.0.0': + resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -908,8 +963,8 @@ packages: '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@oxc-project/types@0.139.0': - resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + '@oxc-project/types@0.149.0': + resolution: {integrity: sha512-Efcc+iF0j3Bf67YjEqIqWXbX5XddXoK/Mw4K1/JuXwRCZ8N16VR7iT23nlCc9XrveFVh/E5Rqs2StT0V8v9LdA==} '@pagefind/darwin-arm64@1.5.2': resolution: {integrity: sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==} @@ -967,97 +1022,98 @@ packages: '@preline/tabs@2.6.0': resolution: {integrity: sha512-7zL1TAwRHjYyhMAX7HrJ56Xa8wgTnWBXl+5PsGKJsAeHrv09k5DbRKLYvAMbAROXg/ZRz8Z5Dko96/AUhuNecg==} - '@rolldown/binding-android-arm64@1.1.5': - resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + '@rolldown/binding-android-arm-eabi@1.2.8': + resolution: {integrity: sha512-tN5aztYkKCte4i5SIrrz5yK/HMjEuCqCSCJa418jOV8tZ1cBY3YF2otxB1ktPxzsLA1BeTqwapK0bfjxNvHJVw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.8': + resolution: {integrity: sha512-dIYTWl9XprMUiQFoc55KUyk/oS8SKYH3zFl0LTR7RT0Xj4hgSVyuJcroH8JUu8RcpF8fTB6E0aOwCkZoYPcDSQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.5': - resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + '@rolldown/binding-darwin-arm64@1.2.8': + resolution: {integrity: sha512-PCSDQGXD2IyTEFrcgPyBM8jJuGmrbCMuoIOXdbEGVemruKACXoLQJrb+A45Z0L5t1RQkdfJprAYPkikbh7dzdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.5': - resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + '@rolldown/binding-darwin-x64@1.2.8': + resolution: {integrity: sha512-Uk7lRsGhPFHVX/sAUC6D5H9Ol30dFHd6iquokll2th3LpdJ3F5CzQB+7DHn0Ri2mG+U7k2zXiPHDrwZenXhwSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.5': - resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + '@rolldown/binding-freebsd-x64@1.2.8': + resolution: {integrity: sha512-DjszaTEVogPqA5bYzsEeqDCQxbcp2fexQwKcRspYji2yzR68fCf+e4fx6kBSRDwX5/brZaHw/hWS9+A/+/w9sQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.8': + resolution: {integrity: sha512-zmwa7FTmdzB6aaEEuuls18H6Ap5JmJPSoPTuXixeJZV6tG40SyLkApQtz1g8ptZtiEKqj9OM0oNLPh1AgvE31Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + '@rolldown/binding-linux-arm64-gnu@1.2.8': + resolution: {integrity: sha512-KdYQDPHwJVnbFwdTGMgxsI9SqblBlz6STGM+w1We/d5B8OWWidYH0MwkU/uA1wM5fIpO2MkOVxXrNzzuZhw9ew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + '@rolldown/binding-linux-arm64-musl@1.2.8': + resolution: {integrity: sha512-jFJTifHnNPY+yzOoNZQfSIysrVyXzEQPhPnOUjmD1bcQGHH6s7c8cViKWar8YplQImE5N9JRqMCLrM2CdxOrZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + '@rolldown/binding-linux-ppc64-gnu@1.2.8': + resolution: {integrity: sha512-FhiOziBDWPBjbcmRzfLyIJnaP7AVMFXT7YCXPjXxj7wKU3vx24RjrCNN/zjvVa+N2vVoHJwCoUBvsrN/DG3zIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + '@rolldown/binding-linux-s390x-gnu@1.2.8': + resolution: {integrity: sha512-WnHfADMzOV2Y55wlx1hzzQnar/wDt/VdvWSD99r18Mz9ylNieIGOkRx3UV21h7m/eJvjySYJkO26VvGNFkwsIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + '@rolldown/binding-linux-x64-gnu@1.2.8': + resolution: {integrity: sha512-H9tRr5ibfXFVLxbPOseVewewFpl28zcEdjRDt2FTUZU7odxP0gEv1ki4/kGmcGOh78oRwZuuQllGLZ9zTJp84g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + '@rolldown/binding-linux-x64-musl@1.2.8': + resolution: {integrity: sha512-UefiqfM3D6IVNlZ8tSGs9+Ejjud2T+oxO0IHADU45Y+lyEjD2dVFyZHbkfX0LUb5Zugo/oIv1eCO/KVYhgYJYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + '@rolldown/binding-openharmony-arm64@1.2.8': + resolution: {integrity: sha512-637Ke4kWSy6rp9cxQ9gMOXlxPgIw/c1beASV4M//3+9I4uwBVOOl74G+e3zyU3u19U7RkRl/HuewixZ/Z6+Rjg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + '@rolldown/binding-win32-arm64-msvc@1.2.8': + resolution: {integrity: sha512-xWBkPOF1Q9k/Gv1nQXnVdLxKu74jXppuOM4Z3mnypVUJJJwLsMl7hNJGRAUJoG8A5MgOI1ACKM+wBFxSJzKy4A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + '@rolldown/binding-win32-x64-msvc@1.2.8': + resolution: {integrity: sha512-uz2ZvfgXbxqNwijjjbxrnvALwpyODDcgc1T1N8N3rf/DXKQmaFwmB4LX4yyjggpwN2obdQLb2rgirX5ffCWYng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1065,44 +1121,35 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@rollup/pluginutils@5.4.0': - resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@shikijs/core@4.3.1': - resolution: {integrity: sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==} + '@shikijs/core@4.4.3': + resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==} engines: {node: '>=20'} - '@shikijs/engine-javascript@4.3.1': - resolution: {integrity: sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ==} + '@shikijs/engine-javascript@4.4.3': + resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==} engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.3.1': - resolution: {integrity: sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg==} + '@shikijs/engine-oniguruma@4.4.3': + resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==} engines: {node: '>=20'} - '@shikijs/langs@4.3.1': - resolution: {integrity: sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ==} + '@shikijs/langs@4.4.3': + resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==} engines: {node: '>=20'} - '@shikijs/primitive@4.3.1': - resolution: {integrity: sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==} + '@shikijs/primitive@4.4.3': + resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==} engines: {node: '>=20'} - '@shikijs/themes@4.3.1': - resolution: {integrity: sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA==} + '@shikijs/themes@4.4.3': + resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==} engines: {node: '>=20'} - '@shikijs/types@4.3.1': - resolution: {integrity: sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==} + '@shikijs/types@4.4.3': + resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==} engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': @@ -1136,8 +1183,8 @@ packages: '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/markdown-it@14.1.2': - resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/markdown-it@14.2.0': + resolution: {integrity: sha512-NoQ2yGlLWj4wpxMs+TYmRKk3thDrQ97agr7sFqfLsAlvoS8SNQuTrlObhFqG9iugdTtgOE9jpJ6FNM4ZGsa5xQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -1154,11 +1201,8 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@24.13.3': - resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} - - '@types/node@26.1.1': - resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} + '@types/node@24.13.4': + resolution: {integrity: sha512-YJ7EqCstVTzIr0fMr7qul/977en+pQHrfmuKIo6Zr9i75Be21dr3MovcfvGtyvi2HAUrRerWps5sMO9I7WaxDw==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -1169,11 +1213,8 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - - '@ungap/structured-clone@1.3.3': - resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} '@volar/kit@2.4.28': resolution: {integrity: sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==} @@ -1185,15 +1226,30 @@ packages: '@volar/language-server@2.4.28': resolution: {integrity: sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true '@volar/language-service@2.4.28': resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true '@volar/source-map@2.4.28': resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} '@volar/typescript@2.4.28': resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true '@vscode/emmet-helper@2.11.0': resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} @@ -1213,16 +1269,16 @@ packages: '@vtbag/turn-signal@1.3.1': resolution: {integrity: sha512-6rWkG+ik3U+KQGI94yNOrOh5QedB9zmP/8H51X5WQwrJz8m2MAU5YwGRRcweO/dJ6wW/Bn7OsgC1vRURnwrvCg==} - '@vtbag/utensil-drawer@1.2.16': - resolution: {integrity: sha512-RSahZXk4NAFTF3zDYQH1x4qv8gFLcWus7qD//D0b58zoZIeqa2uKePLMy4lSHagYdkwBlKXKlfcDSrqUvWmxnw==} + '@vtbag/utensil-drawer@1.2.18': + resolution: {integrity: sha512-Veg1J8lviA2g878otiEHoyiGR2f4PZ5Rc40UyIR4YS95QnD+1+oAZsprhUPR+YudgZPrqWx5chyPNwjkHyA0uw==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.17.0: - resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} engines: {node: '>=0.4.0'} hasBin: true @@ -1246,13 +1302,13 @@ packages: resolution: {integrity: sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==} hasBin: true - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@6.3.0: + resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + engines: {node: '>=12'} - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -1290,13 +1346,14 @@ packages: resolution: {integrity: sha512-SrTcio7wSyaraYoeH7M1oRtfiqZKdpT73EfMUlA6tGoYV42oNyQw13nzumvZkXlgeCXTMXDho0AebfcNwaadoQ==} engines: {node: '>=22'} - astro-expressive-code@0.44.0: - resolution: {integrity: sha512-b1wN/ZvbJprzxlGKIpIes2kQrCY5KRLwys2tWbZAZyjGZcW5ZtgneZnBwzNRiBna9/48d4mQl19KLjcRuhO1hw==} + astro-expressive-code@0.44.2: + resolution: {integrity: sha512-avop7nZcRwC7quvIxVguhwEZ9Tp6IoTzKUCLwP30Fb7+er+pWQgcysP01dcuzRIJo81kLGg30q/YAI2Yb1Sdzg==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0 - astro-icon@1.1.5: - resolution: {integrity: sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==} + astro-icon@1.2.0: + resolution: {integrity: sha512-0848V2WZuTPhqGSqLeZimLJZ5wmamMtWYzvA2kvg8s2DrUPZ3/nrTcHJWN0eJHt62jy7uvNxgTNiUJGIr7JNxg==} + engines: {node: '>=22.12.0'} astro-remote@0.3.4: resolution: {integrity: sha512-jL5skNQLA0YBc1R3bVGXyHew3FqGqsT7AgLzWAVeTLzFkwVMUYvs4/lKJSmS7ygcF1GnHnoKG6++8GL9VtWwGQ==} @@ -1305,12 +1362,12 @@ packages: astro-vtbot@2.1.12: resolution: {integrity: sha512-6RlA0rdVPLT24FAyxsHAI71quTrLWuMXOADhcx8uEMTfuIVRhg4GajzmZmOiX6/nHA9p1gaIBuaTF3jVE1XWSA==} - astro@7.0.9: - resolution: {integrity: sha512-WB5pA4LLQnmqjBh6EIu0z8aUV4q2/AoThgSZq57Rsp+oqqvPu7OwZ5eF+W4ku20TUTxIhiJW8dccuGvJPiW2UA==} + astro@7.3.2: + resolution: {integrity: sha512-ysTcdpGP61XZpHoMRYC/CK19DQ94qkBvzXMtXEo0gEqPNkmOU/Tv++CtWmzaI4nF2Ck8RXFdiWvdlTWa2oOr9w==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true peerDependencies: - '@astrojs/markdown-remark': 7.2.1 + '@astrojs/markdown-remark': ^7.3.0 peerDependenciesMeta: '@astrojs/markdown-remark': optional: true @@ -1335,17 +1392,14 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@5.0.7: - resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} - engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1367,13 +1421,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.2.0: - resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} - engines: {node: '>=20.18.1'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -1382,10 +1429,6 @@ packages: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - ci-info@4.4.0: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} @@ -1397,9 +1440,9 @@ packages: clipboard@2.0.11: resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} @@ -1436,26 +1479,16 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - common-ancestor-path@2.0.0: resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} engines: {node: '>= 18'} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - confbox@0.2.4: - resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - cookie-es@1.2.3: resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} @@ -1463,6 +1496,9 @@ packages: css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-select@6.0.0: + resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==} + css-selector-parser@3.3.0: resolution: {integrity: sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==} @@ -1470,10 +1506,6 @@ packages: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-tree@3.2.1: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -1482,6 +1514,10 @@ packages: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} + css-what@7.0.0: + resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==} + engines: {node: '>= 6'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1532,14 +1568,14 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - devalue@5.8.1: - resolution: {integrity: sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==} + devalue@5.9.2: + resolution: {integrity: sha512-po4PAY5c53tw5XMocSnf8A/5OHhbbUftpr93aEN6BBoAdntUmK7vu7wOATqvt7cXO7m1Cl4gMVn6p7n6n4mj0w==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@8.0.4: - resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + diff@9.0.0: + resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} engines: {node: '>=0.3.1'} direction@2.0.1: @@ -1569,14 +1605,8 @@ packages: emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - encoding-sniffer@0.2.1: - resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} - - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -1586,12 +1616,8 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - - es-module-lexer@2.3.1: - resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -1599,8 +1625,8 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} engines: {node: '>=18'} hasBin: true @@ -1626,8 +1652,8 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + estree-util-scope@1.0.1: + resolution: {integrity: sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==} estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} @@ -1635,20 +1661,14 @@ packages: estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} - expressive-code@0.44.0: - resolution: {integrity: sha512-JXVWVNCKlLuZLMQH8cOiDUSosT0Bb+elwE/dbAkpwFwDFmyFyWlECoWZIohh2FkIF1iI67TQJ+Ts9k7oNDh2qA==} - - exsolve@1.1.0: - resolution: {integrity: sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==} + expressive-code@0.44.2: + resolution: {integrity: sha512-MLNghkvhyFgVW4oCD5DxBuYnnTXIf0PygzGmfT6OZeOOYWh/D4sH1j931biElkA5RG/J9wY/iuSMGAPF5vzHOg==} extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -1657,11 +1677,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1675,24 +1690,21 @@ packages: fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-uri@3.1.3: - resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} + fast-uri@3.1.7: + resolution: {integrity: sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==} fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - fast-xml-builder@1.3.0: - resolution: {integrity: sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ==} + fast-xml-builder@1.3.1: + resolution: {integrity: sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug==} - fast-xml-parser@5.10.0: - resolution: {integrity: sha512-SLhnTEqE5QpJHq/6zl9bsmImEP2adv+y6Wy+cJa7nVTRzQh1OZfCe9k29M5xN74LWnu0xa1zrUrq3KnOKl92Fg==} + fast-xml-parser@5.11.1: + resolution: {integrity: sha512-TBw6K/fxoQGGjCmZDw9w/ZwP3uDcnTM4YH/g+PFRWr8sbe5idXtxNN6vITh4+1ruCZaho6uBFurElsA7F0zzgw==} hasBin: true - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fastq@1.20.3: + resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -1703,10 +1715,17 @@ packages: picomatch: optional: true + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-proc@0.1.0: + resolution: {integrity: sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==} + engines: {node: ^20.19.0 || >=22.12.0} + flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -1727,9 +1746,9 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} get-tsconfig@5.0.0-beta.4: resolution: {integrity: sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==} @@ -1746,10 +1765,6 @@ packages: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - globby@14.1.0: resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} @@ -1849,17 +1864,14 @@ packages: html-whitespace-sensitive-tag-names@3.0.1: resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} - htmlparser2@10.1.0: - resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} - htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - i18next@26.3.6: - resolution: {integrity: sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==} + i18next@26.4.2: + resolution: {integrity: sha512-RX+R0VLg13IbvRuJSxnqykUFS9vQZTl8wYpWPCIUDWVrSGjsQywB5Y+pjzrkboxGAuYfJZVH1InFTdgBdxq6ug==} peerDependencies: typescript: ^5 || ^6 || ^7 peerDependenciesMeta: @@ -1869,14 +1881,13 @@ packages: ico-endec@0.1.6: resolution: {integrity: sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ignore@7.0.6: - resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + ignore@7.0.9: + resolution: {integrity: sha512-brTTsvFRt5C1gGHtPst/281UjPD5t9fBqbgoMPlVWy11ZLTPfu7HxK4ZYqO9H7o/yC9rSTCI85EaQ4OoY12qYw==} engines: {node: '>= 4'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} @@ -1908,10 +1919,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1927,15 +1934,15 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-unsafe@2.0.0: - resolution: {integrity: sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==} + is-unsafe@2.0.2: + resolution: {integrity: sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==} - js-yaml@3.15.0: - resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} + js-yaml@3.15.2: + resolution: {integrity: sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==} hasBin: true - js-yaml@4.3.0: - resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true json-schema-traverse@1.0.0: @@ -1959,90 +1966,83 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} - local-pkg@1.2.1: - resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} - engines: {node: '>=14'} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -2056,8 +2056,11 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.3: - resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} + magic-string@1.3.1: + resolution: {integrity: sha512-rm91zr2Ou+XueDTohjQQjdQEcYM6zVi8KVUCG8Ec3vHwUEKrhSdCNyfuIywkA6hcCAteIn0ZOtAHA6eGpiX+Pg==} + + magicast@0.5.5: + resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -2148,9 +2151,6 @@ packages: mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} @@ -2270,20 +2270,17 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} engines: {node: 18 || 20 || >=22} minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} - - mlly@1.8.2: - resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + modern-tar@0.8.5: + resolution: {integrity: sha512-snEhs+6G5Tjd4I7tLCDOaoln2RgE0bD19RzEKgvgK2hZ5VKy3MpLhLTZ2fWpXSTg4K2cyPwp+VHATFJhxfnOeA==} + engines: {node: '>=18.0.0'} mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} @@ -2295,13 +2292,13 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - nanoid@3.3.16: - resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + nanoid@3.3.19: + resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - neotraverse@0.6.18: - resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + neotraverse@1.0.1: + resolution: {integrity: sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==} engines: {node: '>= 10'} nlcst-to-string@4.0.0: @@ -2316,8 +2313,8 @@ packages: node-html-parser@7.1.0: resolution: {integrity: sha512-iJo8b2uYGT40Y8BTyy5ufL6IVbN8rbm/1QK2xffXU/1a/v3AAa0d1YAoqBNYqaS4R/HajkWIpIfdE6KcyFh1AQ==} - node-mock-http@1.0.4: - resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + node-mock-http@1.0.5: + resolution: {integrity: sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -2326,18 +2323,15 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + ohash@2.0.12: + resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==} oniguruma-parser@0.12.2: resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} @@ -2345,12 +2339,12 @@ packages: oniguruma-to-es@4.3.6: resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - p-limit@7.3.0: - resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} + p-limit@7.3.2: + resolution: {integrity: sha512-Ll0w3fU24vYpXoZmjjZIee6bJQDgG0oAyo1PdmFYI8UDwJJddaHAypxIH9avUu+t+lSsAwKVsb1jDCMIIChliw==} engines: {node: '>=20'} - p-queue@9.3.1: - resolution: {integrity: sha512-POWdiIPmsUPGwb4FeQ4OBg46aqmcInSWe45CKDsGHiOBiVQM9chqfQTuqhuTzcg2Vz9faTI65at0KkVyVEiCHw==} + p-queue@9.3.3: + resolution: {integrity: sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==} engines: {node: '>=20'} p-timeout@7.0.1: @@ -2360,8 +2354,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.7.0: - resolution: {integrity: sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ==} + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} pagefind@1.5.2: resolution: {integrity: sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==} @@ -2376,12 +2370,6 @@ packages: parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - - parse5-parser-stream@7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -2412,9 +2400,6 @@ packages: peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - piccolore@0.1.3: resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} @@ -2425,16 +2410,10 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - pkg-types@2.3.1: - resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} - postcss-nested@6.2.0: resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} engines: {node: '>=12.0'} @@ -2445,8 +2424,8 @@ packages: resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} engines: {node: '>=4'} - postcss@8.5.19: - resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} preline@2.7.0: @@ -2517,8 +2496,8 @@ packages: prettier-plugin-svelte: optional: true - prettier@3.9.5: - resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} engines: {node: '>=14'} hasBin: true @@ -2533,12 +2512,6 @@ packages: property-information@7.2.0: resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} - pump@3.0.4: - resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} - - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2549,8 +2522,8 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - readdirp@5.0.0: - resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + readdirp@5.1.1: + resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} engines: {node: '>= 20.19.0'} recma-build-jsx@1.0.0: @@ -2576,8 +2549,8 @@ packages: regex@6.1.0: resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - rehype-expressive-code@0.44.0: - resolution: {integrity: sha512-5r74C5F2sMR3X+QJH8OKWgZBO/cqRw5W1fLT6GVlSfLqepk+4j8tGFkyPqZYWjwntsBHzKPDH2zI68sZ7ScLfA==} + rehype-expressive-code@0.44.2: + resolution: {integrity: sha512-jvjQpsfWKBquDrEl5YQA3CJybRRIuDOYsui1BJTs5oKDUK8pPkJSSxY8FjxNlIFIdtgrTjC1zuahuY4Cc1j9SQ==} rehype-format@5.0.1: resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} @@ -2616,8 +2589,8 @@ packages: remark-rehype@11.1.2: resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - remark-smartypants@3.0.2: - resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + remark-smartypants@3.0.3: + resolution: {integrity: sha512-gCaK+ndZ0hYezlqFegHFCVh2CQemsi0Npdh1qVM9bxlUFknjkbP6VmojWhddOCrbK0PbbacmYLWfTULRiT1eWA==} engines: {node: '>=16.0.0'} remark-stringify@11.0.0: @@ -2629,10 +2602,6 @@ packages: request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -2661,8 +2630,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - rolldown@1.1.5: - resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + rolldown@1.2.8: + resolution: {integrity: sha512-Z67nTmhZe7anqnM/EjI392w5i/ANUinjip7QYsOyN37oayduxt3ksdX0hf5OOamkAd53BiIHfbfSzfUmzKFQqQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2672,17 +2641,17 @@ packages: s.color@0.0.15: resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} + satteri@0.10.5: + resolution: {integrity: sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==} + satteri@0.9.5: resolution: {integrity: sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==} - sax@1.6.0: - resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + sax@1.6.1: + resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} engines: {node: '>=11.0.0'} section-matter@1.0.0: @@ -2707,8 +2676,8 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.35.3: - resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} + sharp@0.35.4: + resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -2716,8 +2685,8 @@ packages: '@types/node': optional: true - shiki@4.3.1: - resolution: {integrity: sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw==} + shiki@4.4.3: + resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==} engines: {node: '>=20'} simple-swizzle@0.2.4: @@ -2739,8 +2708,8 @@ packages: resolution: {integrity: sha512-TzobUYoEft/xBtb2voRPryAUIvYguG0V7Tt3de79I1WfXgCwelqVsGuZSnu3GFGRZhXR90AeEYIM+icuB/S06Q==} hasBin: true - smol-toml@1.7.0: - resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} + smol-toml@1.8.0: + resolution: {integrity: sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -2770,26 +2739,27 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.38.0' - stream-replace-string@2.0.0: - resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + engines: {node: '>=20'} stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} - strnum@2.4.1: - resolution: {integrity: sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==} + strnum@2.4.2: + resolution: {integrity: sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw==} style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} @@ -2800,22 +2770,13 @@ packages: suf-log@2.5.3: resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} - svgo@3.3.4: - resolution: {integrity: sha512-GsNRis4e8jxn2Y9ENz/8lbJ93CstG8svtMnuRaHbiF2LTJ5tK0/q3t/URPq9Zc7zVWBJnNnJMIp6bevK7bSmNg==} - engines: {node: '>=14.0.0'} - hasBin: true - - svgo@4.0.2: - resolution: {integrity: sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==} + svgo@4.1.0: + resolution: {integrity: sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==} engines: {node: '>=16'} hasBin: true - tar@7.5.20: - resolution: {integrity: sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ==} - engines: {node: '>=18'} - - terser@5.49.0: - resolution: {integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==} + terser@5.51.2: + resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} engines: {node: '>=10'} hasBin: true @@ -2829,8 +2790,8 @@ packages: resolution: {integrity: sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==} engines: {node: ^16.14.0 || >= 17.3.0} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} tinyglobby@0.2.17: @@ -2876,12 +2837,9 @@ packages: undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici-types@8.3.0: - resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - - undici@7.28.0: - resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} - engines: {node: '>=20.18.1'} + undici@8.10.2: + resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==} + engines: {node: '>=22.19.0'} unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} @@ -2890,8 +2848,8 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unifont@0.7.4: - resolution: {integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==} + unifont@0.7.5: + resolution: {integrity: sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==} unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} @@ -3004,13 +2962,13 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@8.1.4: - resolution: {integrity: sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==} + vite@8.3.0: + resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.3.0 + '@vitejs/devtools': ^0.7.1 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -3094,17 +3052,23 @@ packages: resolution: {integrity: sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==} peerDependencies: '@volar/language-service': ~2.4.0 + typescript: '*' peerDependenciesMeta: '@volar/language-service': optional: true + typescript: + optional: true volar-service-typescript@0.0.71: resolution: {integrity: sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==} peerDependencies: '@volar/language-service': ~2.4.0 + typescript: '*' peerDependenciesMeta: '@volar/language-service': optional: true + typescript: + optional: true volar-service-yaml@0.0.71: resolution: {integrity: sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==} @@ -3128,24 +3092,24 @@ packages: resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} - vscode-jsonrpc@9.0.1: - resolution: {integrity: sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==} + vscode-jsonrpc@9.0.2: + resolution: {integrity: sha512-SbQSV9yRemARxeXw6LU5sS6Zq0e9/DgCCX5yelH263ZQWukbTk8EF8fjTrr1dziasf4GwlJbvTwFnTrnQFWZXQ==} engines: {node: '>=14.0.0'} vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - vscode-languageserver-protocol@3.18.2: - resolution: {integrity: sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==} + vscode-languageserver-protocol@3.18.3: + resolution: {integrity: sha512-DF49+WeV5py4zO5hhobp60jjsDSK0lAqA0OuKBLBvp423HPWQcCbhZz3JgyfIewsEz2f8U+X75xNIFHdiXZm2w==} - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + vscode-languageserver-textdocument@1.0.14: + resolution: {integrity: sha512-EQyqJMi552E4ZTf46izQ4Fj6XquqxCySR3J5ZSD1SisMf6RfpeOWHxGBE8Gr6V0/3GHIGdAzDn8F8+1nTGCnoQ==} vscode-languageserver-types@3.17.5: resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - vscode-languageserver-types@3.18.0: - resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==} + vscode-languageserver-types@3.18.3: + resolution: {integrity: sha512-XIlzJ7Qp/jzSI1ds7/FwPAWrPeTZA7pAtlW4hdJ1J6xXWJL6dR9QYnDhJOdLzdKhUQ5Mm6mvUMw+3DcOQQasPw==} vscode-languageserver@9.0.1: resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} @@ -3154,28 +3118,16 @@ packages: vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vscode-uri@3.2.0: + resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==} web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - xml-naming@0.3.0: resolution: {integrity: sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==} engines: {node: '>=16.0.0'} @@ -3187,10 +3139,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - yaml-language-server@1.23.0: resolution: {integrity: sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A==} hasBin: true @@ -3205,144 +3153,146 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - yargs-parser@22.0.0: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@17.7.3: - resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} - engines: {node: '>=12'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yargs@18.1.0: + resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} yocto-queue@1.2.2: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zod@4.6.2: + resolution: {integrity: sha512-lh5RCAGFa1Cm2hjtNwLQhSs/AsqdWnTQaBER9fEwN/88pSh7KOtJavtBx/0VlkN/uFd61SwYmljLMDAsHlvzBQ==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - '@antfu/install-pkg@1.1.0': + '@antfu/install-pkg@2.0.1': dependencies: - package-manager-detector: 1.7.0 - tinyexec: 1.2.4 - - '@antfu/utils@8.1.1': {} + package-manager-detector: 1.8.0 + tinyexec: 1.3.1 - '@astrojs/check@0.9.9(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(typescript@5.9.3)': + '@astrojs/check@0.9.10(prettier-plugin-astro@0.14.1)(prettier@3.9.6)(typescript@5.9.3)': dependencies: - '@astrojs/language-server': 2.16.12(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(typescript@5.9.3) + '@astrojs/language-server': 2.16.16(prettier-plugin-astro@0.14.1)(prettier@3.9.6)(typescript@5.9.3) chokidar: 4.0.3 kleur: 4.1.5 typescript: 5.9.3 - yargs: 17.7.3 + yargs: 18.1.0 transitivePeerDependencies: - prettier - prettier-plugin-astro - '@astrojs/compiler-binding-darwin-arm64@0.3.1': + '@astrojs/compiler-binding-darwin-arm64@0.4.0': optional: true - '@astrojs/compiler-binding-darwin-x64@0.3.1': + '@astrojs/compiler-binding-darwin-x64@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-musl@0.3.1': + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': optional: true - '@astrojs/compiler-binding-wasm32-wasi@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + '@astrojs/compiler-binding-wasm32-wasi@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' optional: true - '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': optional: true - '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': optional: true - '@astrojs/compiler-binding@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + '@astrojs/compiler-binding@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': optionalDependencies: - '@astrojs/compiler-binding-darwin-arm64': 0.3.1 - '@astrojs/compiler-binding-darwin-x64': 0.3.1 - '@astrojs/compiler-binding-linux-arm64-gnu': 0.3.1 - '@astrojs/compiler-binding-linux-arm64-musl': 0.3.1 - '@astrojs/compiler-binding-linux-x64-gnu': 0.3.1 - '@astrojs/compiler-binding-linux-x64-musl': 0.3.1 - '@astrojs/compiler-binding-wasm32-wasi': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) - '@astrojs/compiler-binding-win32-arm64-msvc': 0.3.1 - '@astrojs/compiler-binding-win32-x64-msvc': 0.3.1 + '@astrojs/compiler-binding-darwin-arm64': 0.4.0 + '@astrojs/compiler-binding-darwin-x64': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-musl': 0.4.0 + '@astrojs/compiler-binding-linux-x64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-x64-musl': 0.4.0 + '@astrojs/compiler-binding-wasm32-wasi': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@astrojs/compiler-binding-win32-arm64-msvc': 0.4.0 + '@astrojs/compiler-binding-win32-x64-msvc': 0.4.0 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' - '@astrojs/compiler-rs@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + '@astrojs/compiler-rs@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': dependencies: - '@astrojs/compiler-binding': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) + '@astrojs/compiler-binding': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' '@astrojs/compiler@2.13.1': {} - '@astrojs/internal-helpers@0.10.1': + '@astrojs/internal-helpers@0.10.4': dependencies: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 - js-yaml: 4.3.0 - picomatch: 4.0.5 + js-yaml: 4.3.2 + picomatch: 4.0.7 retext-smartypants: 6.2.0 - shiki: 4.3.1 - smol-toml: 1.7.0 + shiki: 4.4.3 + smol-toml: 1.8.0 + unified: 11.0.5 + + '@astrojs/internal-helpers@0.11.0': + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + js-yaml: 4.3.2 + picomatch: 4.0.7 + retext-smartypants: 6.2.0 + shiki: 4.4.3 + smol-toml: 1.8.0 unified: 11.0.5 '@astrojs/internal-helpers@0.9.1': dependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 - '@astrojs/language-server@2.16.12(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(typescript@5.9.3)': + '@astrojs/language-server@2.16.16(prettier-plugin-astro@0.14.1)(prettier@3.9.6)(typescript@5.9.3)': dependencies: '@astrojs/compiler': 2.13.1 '@astrojs/yaml2ts': 0.2.4 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@volar/kit': 2.4.28(typescript@5.9.3) '@volar/language-core': 2.4.28 - '@volar/language-server': 2.4.28 - '@volar/language-service': 2.4.28 + '@volar/language-server': 2.4.28(typescript@5.9.3) + '@volar/language-service': 2.4.28(typescript@5.9.3) muggle-string: 0.4.1 tinyglobby: 0.2.17 - volar-service-css: 0.0.71(@volar/language-service@2.4.28) - volar-service-emmet: 0.0.71(@volar/language-service@2.4.28) - volar-service-html: 0.0.71(@volar/language-service@2.4.28) - volar-service-prettier: 0.0.71(@volar/language-service@2.4.28)(prettier@3.9.5) - volar-service-typescript: 0.0.71(@volar/language-service@2.4.28) - volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.28) - volar-service-yaml: 0.0.71(@volar/language-service@2.4.28) + volar-service-css: 0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)) + volar-service-emmet: 0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)) + volar-service-html: 0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)) + volar-service-prettier: 0.0.71(@volar/language-service@2.4.28(typescript@5.9.3))(prettier@3.9.6) + volar-service-typescript: 0.0.71(@volar/language-service@2.4.28(typescript@5.9.3))(typescript@5.9.3) + volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.28(typescript@5.9.3))(typescript@5.9.3) + volar-service-yaml: 0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)) vscode-html-languageservice: 5.6.2 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - prettier: 3.9.5 + prettier: 3.9.6 prettier-plugin-astro: 0.14.1 transitivePeerDependencies: - typescript @@ -3354,17 +3304,17 @@ snapshots: github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 - js-yaml: 4.3.0 + js-yaml: 4.3.2 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 remark-gfm: 4.0.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 - remark-smartypants: 3.0.2 + remark-smartypants: 3.0.3 retext-smartypants: 6.2.0 - shiki: 4.3.1 - smol-toml: 1.7.0 + shiki: 4.4.3 + smol-toml: 1.8.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.1.0 @@ -3373,9 +3323,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/markdown-remark@7.2.1': + '@astrojs/markdown-remark@7.2.4': dependencies: - '@astrojs/internal-helpers': 0.10.1 + '@astrojs/internal-helpers': 0.10.4 '@astrojs/prism': 4.0.2 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 @@ -3386,7 +3336,7 @@ snapshots: remark-gfm: 4.0.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 - remark-smartypants: 3.0.2 + remark-smartypants: 3.0.3 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.1.0 @@ -3395,52 +3345,85 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/markdown-satteri@0.3.4': + '@astrojs/markdown-remark@7.3.1': dependencies: - '@astrojs/internal-helpers': 0.10.1 + '@astrojs/internal-helpers': 0.11.0 '@astrojs/prism': 4.0.2 + '@mdx-js/mdx': 3.1.1 + acorn: 8.18.0 + estree-util-visit: 2.0.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 - satteri: 0.9.5 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.3 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/markdown-satteri@0.3.8': + dependencies: + '@astrojs/internal-helpers': 0.10.4 + '@astrojs/prism': 4.0.2 + github-slugger: 2.0.0 + satteri: 0.10.5 + + '@astrojs/markdown-satteri@0.4.1': + dependencies: + '@astrojs/internal-helpers': 0.11.0 + '@astrojs/prism': 4.0.2 + github-slugger: 2.0.0 + satteri: 0.10.5 - '@astrojs/mdx@5.0.6(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0))': + '@astrojs/mdx@5.0.6(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0))': dependencies: '@astrojs/markdown-remark': 7.1.2 '@mdx-js/mdx': 3.1.1 - acorn: 8.17.0 - astro: 7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0) - es-module-lexer: 2.3.1 + acorn: 8.18.0 + astro: 7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0) + es-module-lexer: 2.3.2 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 piccolore: 0.1.3 rehype-raw: 7.0.0 remark-gfm: 4.0.1 - remark-smartypants: 3.0.2 + remark-smartypants: 3.0.3 source-map: 0.7.6 unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color - '@astrojs/mdx@7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0))': + '@astrojs/mdx@7.0.8(@astrojs/markdown-satteri@0.3.8)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0))': dependencies: - '@astrojs/internal-helpers': 0.10.1 - '@astrojs/markdown-remark': 7.2.1 + '@astrojs/internal-helpers': 0.10.4 + '@astrojs/markdown-remark': 7.2.4 '@mdx-js/mdx': 3.1.1 - acorn: 8.17.0 - astro: 7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0) - es-module-lexer: 2.3.1 + acorn: 8.18.0 + astro: 7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0) + es-module-lexer: 2.3.2 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 piccolore: 0.1.3 rehype-raw: 7.0.0 remark-gfm: 4.0.1 - remark-smartypants: 3.0.2 + remark-smartypants: 3.0.3 source-map: 0.7.6 unist-util-visit: 5.1.0 vfile: 6.0.3 optionalDependencies: - '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/markdown-satteri': 0.3.8 transitivePeerDependencies: - supports-color @@ -3450,34 +3433,33 @@ snapshots: '@astrojs/rss@4.0.19': dependencies: - fast-xml-parser: 5.10.0 + fast-xml-parser: 5.11.1 piccolore: 0.1.3 - zod: 4.4.3 + zod: 4.6.2 - '@astrojs/sitemap@3.7.3': + '@astrojs/sitemap@3.7.4': dependencies: sitemap: 9.0.1 - stream-replace-string: 2.0.0 - zod: 4.4.3 + zod: 4.6.2 - '@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0))(typescript@5.9.3)': + '@astrojs/starlight@0.41.11(@astrojs/markdown-remark@7.3.1)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0))(typescript@5.9.3)': dependencies: - '@astrojs/markdown-satteri': 0.3.4 - '@astrojs/mdx': 7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0)) - '@astrojs/sitemap': 3.7.3 + '@astrojs/markdown-satteri': 0.3.8 + '@astrojs/mdx': 7.0.8(@astrojs/markdown-satteri@0.3.8)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0)) + '@astrojs/sitemap': 3.7.4 '@pagefind/default-ui': 1.5.2 '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0) - astro-expressive-code: 0.44.0(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0)) + astro: 7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0) + astro-expressive-code: 0.44.2(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0)) bcp-47: 2.1.1 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 hast-util-to-string: 3.0.1 hastscript: 9.0.1 - i18next: 26.3.6(typescript@5.9.3) - js-yaml: 4.3.0 + i18next: 26.4.2(typescript@5.9.3) + js-yaml: 4.3.2 klona: 2.0.6 magic-string: 0.30.21 mdast-util-directive: 3.1.0 @@ -3493,7 +3475,7 @@ snapshots: unist-util-visit: 5.1.0 vfile: 6.0.3 optionalDependencies: - '@astrojs/markdown-remark': 7.2.1 + '@astrojs/markdown-remark': 7.3.1 transitivePeerDependencies: - supports-color - typescript @@ -3503,7 +3485,7 @@ snapshots: ci-info: 4.4.0 dset: 3.1.4 is-docker: 4.0.0 - package-manager-detector: 1.7.0 + package-manager-detector: 1.8.0 '@astrojs/yaml2ts@0.2.4': dependencies: @@ -3513,43 +3495,74 @@ snapshots: '@babel/helper-validator-identifier@7.29.7': {} - '@babel/parser@7.29.7': + '@babel/parser@7.29.8': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 - '@babel/types@7.29.7': + '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@bruits/satteri-darwin-arm64@0.10.5': + optional: true + '@bruits/satteri-darwin-arm64@0.9.5': optional: true + '@bruits/satteri-darwin-x64@0.10.5': + optional: true + '@bruits/satteri-darwin-x64@0.9.5': optional: true + '@bruits/satteri-linux-arm64-gnu@0.10.5': + optional: true + '@bruits/satteri-linux-arm64-gnu@0.9.5': optional: true + '@bruits/satteri-linux-arm64-musl@0.10.5': + optional: true + '@bruits/satteri-linux-arm64-musl@0.9.5': optional: true + '@bruits/satteri-linux-x64-gnu@0.10.5': + optional: true + '@bruits/satteri-linux-x64-gnu@0.9.5': optional: true + '@bruits/satteri-linux-x64-musl@0.10.5': + optional: true + '@bruits/satteri-linux-x64-musl@0.9.5': optional: true + '@bruits/satteri-wasm32-wasi@0.10.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + '@bruits/satteri-wasm32-wasi@0.9.5': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@bruits/satteri-win32-arm64-msvc@0.10.5': optional: true '@bruits/satteri-win32-arm64-msvc@0.9.5': optional: true + '@bruits/satteri-win32-x64-msvc@0.10.5': + optional: true + '@bruits/satteri-win32-x64-msvc@0.9.5': optional: true @@ -3559,19 +3572,23 @@ snapshots: dependencies: fontkitten: 1.0.3 - '@clack/core@1.4.3': + '@clack/core@1.5.0': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.7.0': + '@clack/prompts@1.8.0': dependencies: - '@clack/core': 1.4.3 + '@clack/core': 1.5.0 fast-string-width: 3.0.2 fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@ctrl/tinycolor@4.2.0': {} + '@ctrl/tinycolor@4.2.1': {} + + '@cyberalien/svg-utils@1.2.19': + dependencies: + '@iconify/types': 2.0.0 '@emmetio/abbreviation@2.3.3': dependencies: @@ -3607,7 +3624,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.2': + '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 optional: true @@ -3617,108 +3634,108 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.28.1': + '@esbuild/aix-ppc64@0.28.2': optional: true - '@esbuild/android-arm64@0.28.1': + '@esbuild/android-arm64@0.28.2': optional: true - '@esbuild/android-arm@0.28.1': + '@esbuild/android-arm@0.28.2': optional: true - '@esbuild/android-x64@0.28.1': + '@esbuild/android-x64@0.28.2': optional: true - '@esbuild/darwin-arm64@0.28.1': + '@esbuild/darwin-arm64@0.28.2': optional: true - '@esbuild/darwin-x64@0.28.1': + '@esbuild/darwin-x64@0.28.2': optional: true - '@esbuild/freebsd-arm64@0.28.1': + '@esbuild/freebsd-arm64@0.28.2': optional: true - '@esbuild/freebsd-x64@0.28.1': + '@esbuild/freebsd-x64@0.28.2': optional: true - '@esbuild/linux-arm64@0.28.1': + '@esbuild/linux-arm64@0.28.2': optional: true - '@esbuild/linux-arm@0.28.1': + '@esbuild/linux-arm@0.28.2': optional: true - '@esbuild/linux-ia32@0.28.1': + '@esbuild/linux-ia32@0.28.2': optional: true - '@esbuild/linux-loong64@0.28.1': + '@esbuild/linux-loong64@0.28.2': optional: true - '@esbuild/linux-mips64el@0.28.1': + '@esbuild/linux-mips64el@0.28.2': optional: true - '@esbuild/linux-ppc64@0.28.1': + '@esbuild/linux-ppc64@0.28.2': optional: true - '@esbuild/linux-riscv64@0.28.1': + '@esbuild/linux-riscv64@0.28.2': optional: true - '@esbuild/linux-s390x@0.28.1': + '@esbuild/linux-s390x@0.28.2': optional: true - '@esbuild/linux-x64@0.28.1': + '@esbuild/linux-x64@0.28.2': optional: true - '@esbuild/netbsd-arm64@0.28.1': + '@esbuild/netbsd-arm64@0.28.2': optional: true - '@esbuild/netbsd-x64@0.28.1': + '@esbuild/netbsd-x64@0.28.2': optional: true - '@esbuild/openbsd-arm64@0.28.1': + '@esbuild/openbsd-arm64@0.28.2': optional: true - '@esbuild/openbsd-x64@0.28.1': + '@esbuild/openbsd-x64@0.28.2': optional: true - '@esbuild/openharmony-arm64@0.28.1': + '@esbuild/openharmony-arm64@0.28.2': optional: true - '@esbuild/sunos-x64@0.28.1': + '@esbuild/sunos-x64@0.28.2': optional: true - '@esbuild/win32-arm64@0.28.1': + '@esbuild/win32-arm64@0.28.2': optional: true - '@esbuild/win32-ia32@0.28.1': + '@esbuild/win32-ia32@0.28.2': optional: true - '@esbuild/win32-x64@0.28.1': + '@esbuild/win32-x64@0.28.2': optional: true - '@expressive-code/core@0.44.0': + '@expressive-code/core@0.44.2': dependencies: - '@ctrl/tinycolor': 4.2.0 + '@ctrl/tinycolor': 4.2.1 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.19 - postcss-nested: 6.2.0(postcss@8.5.19) + postcss: 8.5.28 + postcss-nested: 6.2.0(postcss@8.5.28) unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 - '@expressive-code/plugin-frames@0.44.0': + '@expressive-code/plugin-frames@0.44.2': dependencies: - '@expressive-code/core': 0.44.0 + '@expressive-code/core': 0.44.2 - '@expressive-code/plugin-shiki@0.44.0': + '@expressive-code/plugin-shiki@0.44.2': dependencies: - '@expressive-code/core': 0.44.0 - shiki: 4.3.1 + '@expressive-code/core': 0.44.2 + shiki: 4.4.3 - '@expressive-code/plugin-text-markers@0.44.0': + '@expressive-code/plugin-text-markers@0.44.2': dependencies: - '@expressive-code/core': 0.44.0 + '@expressive-code/core': 0.44.2 '@iconify-json/fa6-regular@1.2.4': dependencies: @@ -3728,46 +3745,35 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/octicon@1.2.29': + '@iconify-json/octicon@1.2.34': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.90': + '@iconify-json/simple-icons@1.2.95': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/tabler@1.2.35': + '@iconify-json/tabler@1.2.38': dependencies: '@iconify/types': 2.0.0 - '@iconify/tools@4.2.0': + '@iconify/tools@5.0.14': dependencies: + '@cyberalien/svg-utils': 1.2.19 '@iconify/types': 2.0.0 - '@iconify/utils': 2.3.0 - cheerio: 1.2.0 - domhandler: 5.0.3 - extract-zip: 2.0.1 - local-pkg: 1.2.1 + '@iconify/utils': 3.1.7 + fflate: 0.8.3 + modern-tar: 0.8.5 pathe: 2.0.3 - svgo: 3.3.4 - tar: 7.5.20 - transitivePeerDependencies: - - supports-color + svgo: 4.1.0 '@iconify/types@2.0.0': {} - '@iconify/utils@2.3.0': + '@iconify/utils@3.1.7': dependencies: - '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 8.1.1 + '@antfu/install-pkg': 2.0.1 '@iconify/types': 2.0.0 - debug: 4.4.3 - globals: 15.15.0 - kolorist: 1.8.0 - local-pkg: 1.2.1 - mlly: 1.8.2 - transitivePeerDependencies: - - supports-color + import-meta-resolve: 4.2.0 '@img/colour@1.1.0': optional: true @@ -3777,9 +3783,9 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-arm64@0.35.3': + '@img/sharp-darwin-arm64@0.35.4': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.3.2 + '@img/sharp-libvips-darwin-arm64': 1.3.3 optional: true '@img/sharp-darwin-x64@0.33.5': @@ -3787,68 +3793,68 @@ snapshots: '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.35.3': + '@img/sharp-darwin-x64@0.35.4': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.3.2 + '@img/sharp-libvips-darwin-x64': 1.3.3 optional: true - '@img/sharp-freebsd-wasm32@0.35.3': + '@img/sharp-freebsd-wasm32@0.35.4': dependencies: - '@img/sharp-wasm32': 0.35.3 + '@img/sharp-wasm32': 0.35.4 optional: true '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-arm64@1.3.2': + '@img/sharp-libvips-darwin-arm64@1.3.3': optional: true '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.3.2': + '@img/sharp-libvips-darwin-x64@1.3.3': optional: true '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.3.2': + '@img/sharp-libvips-linux-arm64@1.3.3': optional: true '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-arm@1.3.2': + '@img/sharp-libvips-linux-arm@1.3.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.3.2': + '@img/sharp-libvips-linux-ppc64@1.3.3': optional: true - '@img/sharp-libvips-linux-riscv64@1.3.2': + '@img/sharp-libvips-linux-riscv64@1.3.3': optional: true '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-s390x@1.3.2': + '@img/sharp-libvips-linux-s390x@1.3.3': optional: true '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.3.2': + '@img/sharp-libvips-linux-x64@1.3.3': optional: true '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': optional: true '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.3.2': + '@img/sharp-libvips-linuxmusl-x64@1.3.3': optional: true '@img/sharp-linux-arm64@0.33.5': @@ -3856,9 +3862,9 @@ snapshots: '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm64@0.35.3': + '@img/sharp-linux-arm64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.3.2 + '@img/sharp-libvips-linux-arm64': 1.3.3 optional: true '@img/sharp-linux-arm@0.33.5': @@ -3866,19 +3872,19 @@ snapshots: '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-arm@0.35.3': + '@img/sharp-linux-arm@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.3.2 + '@img/sharp-libvips-linux-arm': 1.3.3 optional: true - '@img/sharp-linux-ppc64@0.35.3': + '@img/sharp-linux-ppc64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.3.2 + '@img/sharp-libvips-linux-ppc64': 1.3.3 optional: true - '@img/sharp-linux-riscv64@0.35.3': + '@img/sharp-linux-riscv64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.3.2 + '@img/sharp-libvips-linux-riscv64': 1.3.3 optional: true '@img/sharp-linux-s390x@0.33.5': @@ -3886,9 +3892,9 @@ snapshots: '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-s390x@0.35.3': + '@img/sharp-linux-s390x@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.3.2 + '@img/sharp-libvips-linux-s390x': 1.3.3 optional: true '@img/sharp-linux-x64@0.33.5': @@ -3896,9 +3902,9 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linux-x64@0.35.3': + '@img/sharp-linux-x64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.3.2 + '@img/sharp-libvips-linux-x64': 1.3.3 optional: true '@img/sharp-linuxmusl-arm64@0.33.5': @@ -3906,9 +3912,9 @@ snapshots: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.35.3': + '@img/sharp-linuxmusl-arm64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 optional: true '@img/sharp-linuxmusl-x64@0.33.5': @@ -3916,48 +3922,44 @@ snapshots: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.35.3': + '@img/sharp-linuxmusl-x64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 optional: true '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.11.2 + '@emnapi/runtime': 1.11.3 optional: true - '@img/sharp-wasm32@0.35.3': + '@img/sharp-wasm32@0.35.4': dependencies: - '@emnapi/runtime': 1.11.2 + '@emnapi/runtime': 1.11.3 optional: true - '@img/sharp-webcontainers-wasm32@0.35.3': + '@img/sharp-webcontainers-wasm32@0.35.4': dependencies: - '@img/sharp-wasm32': 0.35.3 + '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-win32-arm64@0.35.3': + '@img/sharp-win32-arm64@0.35.4': optional: true '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-ia32@0.35.3': + '@img/sharp-win32-ia32@0.35.4': optional: true '@img/sharp-win32-x64@0.33.5': optional: true - '@img/sharp-win32-x64@0.35.3': + '@img/sharp-win32-x64@0.35.4': optional: true - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.3 - '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} @@ -3967,12 +3969,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@mdx-js/mdx@3.1.1': dependencies: @@ -3980,16 +3982,16 @@ snapshots: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.5 '@types/mdx': 2.0.14 - acorn: 8.17.0 + acorn: 8.18.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 + estree-util-scope: 1.0.1 estree-walker: 3.0.3 hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.17.0) + recma-jsx: 1.0.1(acorn@8.18.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.1 @@ -4004,21 +4006,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.2 + '@emnapi/runtime': 1.11.3 '@tybys/wasm-util': 0.10.3 optional: true - '@nodable/entities@2.2.0': {} + '@nodable/entities@3.0.0': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -4030,11 +4032,11 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 + fastq: 1.20.3 '@oslojs/encoding@1.1.0': {} - '@oxc-project/types@0.139.0': {} + '@oxc-project/types@0.149.0': {} '@pagefind/darwin-arm64@1.5.2': optional: true @@ -4071,102 +4073,92 @@ snapshots: '@preline/tabs@2.6.0': {} - '@rolldown/binding-android-arm64@1.1.5': + '@rolldown/binding-android-arm-eabi@1.2.8': optional: true - '@rolldown/binding-darwin-arm64@1.1.5': + '@rolldown/binding-android-arm64@1.2.8': optional: true - '@rolldown/binding-darwin-x64@1.1.5': + '@rolldown/binding-darwin-arm64@1.2.8': optional: true - '@rolldown/binding-freebsd-x64@1.1.5': + '@rolldown/binding-darwin-x64@1.2.8': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + '@rolldown/binding-freebsd-x64@1.2.8': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.5': + '@rolldown/binding-linux-arm-gnueabihf@1.2.8': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.5': + '@rolldown/binding-linux-arm64-gnu@1.2.8': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.5': + '@rolldown/binding-linux-arm64-musl@1.2.8': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.5': + '@rolldown/binding-linux-ppc64-gnu@1.2.8': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.5': + '@rolldown/binding-linux-s390x-gnu@1.2.8': optional: true - '@rolldown/binding-linux-x64-musl@1.1.5': + '@rolldown/binding-linux-x64-gnu@1.2.8': optional: true - '@rolldown/binding-openharmony-arm64@1.1.5': + '@rolldown/binding-linux-x64-musl@1.2.8': optional: true - '@rolldown/binding-wasm32-wasi@1.1.5': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@rolldown/binding-openharmony-arm64@1.2.8': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.5': + '@rolldown/binding-win32-arm64-msvc@1.2.8': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.5': + '@rolldown/binding-win32-x64-msvc@1.2.8': optional: true '@rolldown/pluginutils@1.0.1': {} - '@rollup/pluginutils@5.4.0': - dependencies: - '@types/estree': 1.0.9 - estree-walker: 2.0.2 - picomatch: 4.0.5 - '@selderee/plugin-htmlparser2@0.11.0': dependencies: domhandler: 5.0.3 selderee: 0.11.0 - '@shikijs/core@4.3.1': + '@shikijs/core@4.4.3': dependencies: - '@shikijs/primitive': 4.3.1 - '@shikijs/types': 4.3.1 + '@shikijs/primitive': 4.4.3 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@4.3.1': + '@shikijs/engine-javascript@4.4.3': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@4.3.1': + '@shikijs/engine-oniguruma@4.4.3': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@4.3.1': + '@shikijs/langs@4.4.3': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 - '@shikijs/primitive@4.3.1': + '@shikijs/primitive@4.4.3': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 - '@shikijs/themes@4.3.1': + '@shikijs/themes@4.4.3': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 - '@shikijs/types@4.3.1': + '@shikijs/types@4.4.3': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -4200,7 +4192,7 @@ snapshots: '@types/linkify-it@5.0.0': {} - '@types/markdown-it@14.1.2': + '@types/markdown-it@14.2.0': dependencies: '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 @@ -4219,77 +4211,73 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@24.13.3': + '@types/node@24.13.4': dependencies: undici-types: 7.18.2 - '@types/node@26.1.1': - dependencies: - undici-types: 8.3.0 - optional: true - '@types/sax@1.2.7': dependencies: - '@types/node': 24.13.3 + '@types/node': 24.13.4 '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 26.1.1 - optional: true - - '@ungap/structured-clone@1.3.3': {} + '@ungap/structured-clone@1.4.0': {} '@volar/kit@2.4.28(typescript@5.9.3)': dependencies: - '@volar/language-service': 2.4.28 - '@volar/typescript': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) + '@volar/typescript': 2.4.28(typescript@5.9.3) typesafe-path: 0.2.2 typescript: 5.9.3 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-uri: 3.2.0 '@volar/language-core@2.4.28': dependencies: '@volar/source-map': 2.4.28 - '@volar/language-server@2.4.28': + '@volar/language-server@2.4.28(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.28 - '@volar/language-service': 2.4.28 - '@volar/typescript': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) + '@volar/typescript': 2.4.28(typescript@5.9.3) path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 - vscode-languageserver-protocol: 3.18.2 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-languageserver-protocol: 3.18.3 + vscode-languageserver-textdocument: 1.0.14 + vscode-uri: 3.2.0 + optionalDependencies: + typescript: 5.9.3 - '@volar/language-service@2.4.28': + '@volar/language-service@2.4.28(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.28 - vscode-languageserver-protocol: 3.18.2 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-languageserver-protocol: 3.18.3 + vscode-languageserver-textdocument: 1.0.14 + vscode-uri: 3.2.0 + optionalDependencies: + typescript: 5.9.3 '@volar/source-map@2.4.28': {} - '@volar/typescript@2.4.28': + '@volar/typescript@2.4.28(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.28 path-browserify: 1.0.1 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 + optionalDependencies: + typescript: 5.9.3 '@vscode/emmet-helper@2.11.0': dependencies: emmet: 2.4.11 jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - vscode-uri: 3.1.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-languageserver-types: 3.18.3 + vscode-uri: 3.2.0 '@vscode/l10n@0.0.18': {} @@ -4301,13 +4289,13 @@ snapshots: '@vtbag/turn-signal@1.3.1': {} - '@vtbag/utensil-drawer@1.2.16': {} + '@vtbag/utensil-drawer@1.2.18': {} - acorn-jsx@5.3.2(acorn@8.17.0): + acorn-jsx@5.3.2(acorn@8.18.0): dependencies: - acorn: 8.17.0 + acorn: 8.18.0 - acorn@8.17.0: {} + acorn@8.18.0: {} ajv-draft-04@1.0.0(ajv@8.20.0): optionalDependencies: @@ -4320,7 +4308,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.3 + fast-uri: 3.1.7 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -4328,11 +4316,9 @@ snapshots: dependencies: process-ancestry: 0.1.0 - ansi-regex@5.0.1: {} + ansi-regex@6.3.0: {} - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 + ansi-styles@6.2.3: {} anymatch@3.1.3: dependencies: @@ -4359,23 +4345,21 @@ snapshots: dependencies: fast-glob: 3.3.3 node-html-parser: 7.1.0 - p-limit: 7.3.0 + p-limit: 7.3.2 astro-compressor@1.3.0: {} - astro-expressive-code@0.44.0(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0)): + astro-expressive-code@0.44.2(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0)): dependencies: - astro: 7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0) - rehype-expressive-code: 0.44.0 + astro: 7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0) + rehype-expressive-code: 0.44.2 url-extras: 0.1.0 - astro-icon@1.1.5: + astro-icon@1.2.0: dependencies: - '@iconify/tools': 4.2.0 + '@iconify/tools': 5.0.14 '@iconify/types': 2.0.0 - '@iconify/utils': 2.3.0 - transitivePeerDependencies: - - supports-color + '@iconify/utils': 3.1.7 astro-remote@0.3.4: dependencies: @@ -4391,66 +4375,66 @@ snapshots: '@vtbag/element-crossing': 1.1.0 '@vtbag/inspection-chamber': 1.0.24 '@vtbag/turn-signal': 1.3.1 - '@vtbag/utensil-drawer': 1.2.16 + '@vtbag/utensil-drawer': 1.2.18 - astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0): + astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0): dependencies: - '@astrojs/compiler-rs': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) - '@astrojs/internal-helpers': 0.10.1 - '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@astrojs/internal-helpers': 0.11.0 + '@astrojs/markdown-satteri': 0.4.1 '@astrojs/telemetry': 3.3.3 '@capsizecss/unpack': 4.0.1 - '@clack/prompts': 1.7.0 + '@clack/prompts': 1.8.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.4.0 am-i-vibing: 0.4.0 aria-query: 5.3.2 axobject-query: 4.1.0 ci-info: 4.4.0 clsx: 2.1.1 common-ancestor-path: 2.0.0 - cookie: 1.1.1 - devalue: 5.8.1 - diff: 8.0.4 + cookie: 2.0.1 + devalue: 5.9.2 + diff: 9.0.0 dset: 3.1.4 - es-module-lexer: 2.3.1 - esbuild: 0.28.1 + es-module-lexer: 2.3.2 + esbuild: 0.28.2 + find-proc: 0.1.0 flattie: 1.1.1 fontace: 0.4.1 get-tsconfig: 5.0.0-beta.4 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 - js-yaml: 4.3.0 + js-yaml: 4.3.2 jsonc-parser: 3.3.1 - magic-string: 0.30.21 - magicast: 0.5.3 + magic-string: 1.3.1 + magicast: 0.5.5 mrmime: 2.0.1 - neotraverse: 0.6.18 - obug: 2.1.3 - p-limit: 7.3.0 - p-queue: 9.3.1 - package-manager-detector: 1.7.0 + neotraverse: 1.0.1 + obug: 2.2.1 + p-limit: 7.3.2 + p-queue: 9.3.3 + package-manager-detector: 1.8.0 piccolore: 0.1.3 - picomatch: 4.0.5 + picomatch: 4.0.7 semver: 7.8.5 - shiki: 4.3.1 - smol-toml: 1.7.0 - svgo: 4.0.2 + shiki: 4.4.3 + smol-toml: 1.8.0 + svgo: 4.1.0 tinyclip: 0.1.15 - tinyexec: 1.2.4 + tinyexec: 1.3.1 tinyglobby: 0.2.17 ultrahtml: 1.7.0 - unifont: 0.7.4 + unifont: 0.7.5 unstorage: 1.17.5 - vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(yaml@2.9.0)) + vite: 8.3.0(@types/node@24.13.4)(esbuild@0.28.2)(terser@5.51.2)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.3.0(@types/node@24.13.4)(esbuild@0.28.2)(terser@5.51.2)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 - zod: 4.4.3 + zod: 4.6.2 optionalDependencies: - '@astrojs/markdown-remark': 7.2.1 - sharp: 0.35.3(@types/node@26.1.1) + '@astrojs/markdown-remark': 7.3.1 + sharp: 0.35.4(@types/node@24.13.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4476,7 +4460,6 @@ snapshots: - ioredis - jiti - less - - rollup - sass - sass-embedded - stylus @@ -4502,7 +4485,7 @@ snapshots: boolbase@1.0.0: {} - brace-expansion@5.0.7: + brace-expansion@5.0.9: dependencies: balanced-match: 4.0.4 @@ -4510,8 +4493,6 @@ snapshots: dependencies: fill-range: 7.1.1 - buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} camel-case@4.1.2: @@ -4529,38 +4510,13 @@ snapshots: character-reference-invalid@2.0.1: {} - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.2.2 - css-what: 6.2.2 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - - cheerio@1.2.0: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - encoding-sniffer: 0.2.1 - htmlparser2: 10.1.0 - parse5: 7.3.0 - parse5-htmlparser2-tree-adapter: 7.1.0 - parse5-parser-stream: 7.1.2 - undici: 7.28.0 - whatwg-mimetype: 4.0.0 - chokidar@4.0.3: dependencies: readdirp: 4.1.2 chokidar@5.0.0: dependencies: - readdirp: 5.0.0 - - chownr@3.0.0: {} + readdirp: 5.1.1 ci-info@4.4.0: {} @@ -4574,11 +4530,11 @@ snapshots: select: 1.1.2 tiny-emitter: 2.1.0 - cliui@8.0.1: + cliui@9.0.1: dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 clsx@2.1.1: {} @@ -4608,17 +4564,11 @@ snapshots: commander@2.20.3: {} - commander@7.2.0: {} - common-ancestor-path@2.0.0: {} - confbox@0.1.8: {} - - confbox@0.2.4: {} - cookie-es@1.2.3: {} - cookie@1.1.1: {} + cookie@2.0.1: {} crossws@0.3.5: dependencies: @@ -4632,6 +4582,14 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 + css-select@6.0.0: + dependencies: + boolbase: 1.0.0 + css-what: 7.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + css-selector-parser@3.3.0: {} css-tree@2.2.1: @@ -4639,11 +4597,6 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - css-tree@3.2.1: dependencies: mdn-data: 2.27.1 @@ -4651,6 +4604,8 @@ snapshots: css-what@6.2.2: {} + css-what@7.0.0: {} + cssesc@3.0.0: {} csso@5.0.5: @@ -4688,13 +4643,13 @@ snapshots: detect-libc@2.1.2: {} - devalue@5.8.1: {} + devalue@5.9.2: {} devlop@1.1.0: dependencies: dequal: 2.0.3 - diff@8.0.4: {} + diff@9.0.0: {} direction@2.0.1: {} @@ -4728,24 +4683,13 @@ snapshots: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 - emoji-regex@8.0.0: {} - - encoding-sniffer@0.2.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding: 3.1.1 - - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 + emoji-regex@10.6.0: {} entities@4.5.0: {} entities@6.0.1: {} - entities@7.0.1: {} - - es-module-lexer@2.3.1: {} + es-module-lexer@2.3.2: {} esast-util-from-estree@2.0.0: dependencies: @@ -4757,38 +4701,38 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.17.0 + acorn: 8.18.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.28.1: + esbuild@0.28.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 escalade@3.2.0: {} @@ -4809,7 +4753,7 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} - estree-util-scope@1.0.0: + estree-util-scope@1.0.1: dependencies: '@types/estree': 1.0.9 devlop: 1.1.0 @@ -4825,22 +4769,18 @@ snapshots: '@types/estree-jsx': 1.0.5 '@types/unist': 3.0.3 - estree-walker@2.0.2: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.9 eventemitter3@5.0.4: {} - expressive-code@0.44.0: + expressive-code@0.44.2: dependencies: - '@expressive-code/core': 0.44.0 - '@expressive-code/plugin-frames': 0.44.0 - '@expressive-code/plugin-shiki': 0.44.0 - '@expressive-code/plugin-text-markers': 0.44.0 - - exsolve@1.1.0: {} + '@expressive-code/core': 0.44.2 + '@expressive-code/plugin-frames': 0.44.2 + '@expressive-code/plugin-shiki': 0.44.2 + '@expressive-code/plugin-text-markers': 0.44.2 extend-shallow@2.0.1: dependencies: @@ -4848,16 +4788,6 @@ snapshots: extend@3.0.2: {} - extract-zip@2.0.1: - dependencies: - debug: 4.4.3 - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -4874,42 +4804,42 @@ snapshots: dependencies: fast-string-truncated-width: 3.0.3 - fast-uri@3.1.3: {} + fast-uri@3.1.7: {} fast-wrap-ansi@0.2.2: dependencies: fast-string-width: 3.0.2 - fast-xml-builder@1.3.0: + fast-xml-builder@1.3.1: dependencies: path-expression-matcher: 1.6.2 xml-naming: 0.3.0 - fast-xml-parser@5.10.0: + fast-xml-parser@5.11.1: dependencies: - '@nodable/entities': 2.2.0 - fast-xml-builder: 1.3.0 - is-unsafe: 2.0.0 + '@nodable/entities': 3.0.0 + fast-xml-builder: 1.3.1 + is-unsafe: 2.0.2 path-expression-matcher: 1.6.2 - strnum: 2.4.1 + strnum: 2.4.2 xml-naming: 0.3.0 - fastq@1.20.1: + fastq@1.20.3: dependencies: reusify: 1.1.0 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - - fdir@6.5.0(picomatch@4.0.5): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 + + fflate@0.8.3: {} fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + find-proc@0.1.0: {} + flattie@1.1.1: {} fontace@0.4.1: @@ -4925,9 +4855,7 @@ snapshots: get-caller-file@2.0.5: {} - get-stream@5.2.0: - dependencies: - pump: 3.0.4 + get-east-asian-width@1.6.0: {} get-tsconfig@5.0.0-beta.4: dependencies: @@ -4941,17 +4869,15 @@ snapshots: glob@13.0.6: dependencies: - minimatch: 10.2.5 + minimatch: 10.2.6 minipass: 7.1.3 path-scurry: 2.0.2 - globals@15.15.0: {} - globby@14.1.0: dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.3 - ignore: 7.0.6 + ignore: 7.0.9 path-type: 6.0.0 slash: 5.1.0 unicorn-magic: 0.3.0 @@ -4962,7 +4888,7 @@ snapshots: gray-matter@4.0.3: dependencies: - js-yaml: 3.15.0 + js-yaml: 3.15.2 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 @@ -4976,7 +4902,7 @@ snapshots: defu: 6.1.7 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.4 + node-mock-http: 1.0.5 radix3: 1.1.2 ufo: 1.6.4 uncrypto: 0.1.3 @@ -5052,7 +4978,7 @@ snapshots: dependencies: '@types/hast': 3.0.5 '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.3 + '@ungap/structured-clone': 1.4.0 hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 @@ -5182,7 +5108,7 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.49.0 + terser: 5.51.2 html-to-text@9.0.5: dependencies: @@ -5196,13 +5122,6 @@ snapshots: html-whitespace-sensitive-tag-names@3.0.1: {} - htmlparser2@10.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 7.0.1 - htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 @@ -5212,17 +5131,15 @@ snapshots: http-cache-semantics@4.2.0: {} - i18next@26.3.6(typescript@5.9.3): + i18next@26.4.2(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 ico-endec@0.1.6: {} - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 + ignore@7.0.9: {} - ignore@7.0.6: {} + import-meta-resolve@4.2.0: {} inline-style-parser@0.2.7: {} @@ -5245,8 +5162,6 @@ snapshots: is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -5257,14 +5172,14 @@ snapshots: is-plain-obj@4.1.0: {} - is-unsafe@2.0.0: {} + is-unsafe@2.0.2: {} - js-yaml@3.15.0: + js-yaml@3.15.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.3.0: + js-yaml@4.3.2: dependencies: argparse: 2.0.1 @@ -5280,64 +5195,56 @@ snapshots: klona@2.0.6: {} - kolorist@1.8.0: {} - leac@0.6.0: {} - lightningcss-android-arm64@1.32.0: + lightningcss-android-arm64@1.33.0: optional: true - lightningcss-darwin-arm64@1.32.0: + lightningcss-darwin-arm64@1.33.0: optional: true - lightningcss-darwin-x64@1.32.0: + lightningcss-darwin-x64@1.33.0: optional: true - lightningcss-freebsd-x64@1.32.0: + lightningcss-freebsd-x64@1.33.0: optional: true - lightningcss-linux-arm-gnueabihf@1.32.0: + lightningcss-linux-arm-gnueabihf@1.33.0: optional: true - lightningcss-linux-arm64-gnu@1.32.0: + lightningcss-linux-arm64-gnu@1.33.0: optional: true - lightningcss-linux-arm64-musl@1.32.0: + lightningcss-linux-arm64-musl@1.33.0: optional: true - lightningcss-linux-x64-gnu@1.32.0: + lightningcss-linux-x64-gnu@1.33.0: optional: true - lightningcss-linux-x64-musl@1.32.0: + lightningcss-linux-x64-musl@1.33.0: optional: true - lightningcss-win32-arm64-msvc@1.32.0: + lightningcss-win32-arm64-msvc@1.33.0: optional: true - lightningcss-win32-x64-msvc@1.32.0: + lightningcss-win32-x64-msvc@1.33.0: optional: true - lightningcss@1.32.0: + lightningcss@1.33.0: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 - - local-pkg@1.2.1: - dependencies: - mlly: 1.8.2 - pkg-types: 2.3.1 - quansync: 0.2.11 + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 longest-streak@3.1.0: {} @@ -5349,12 +5256,16 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - magicast@0.5.3: + magic-string@1.3.1: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@jridgewell/sourcemap-codec': 1.6.0 + + magicast@0.5.5: + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -5537,7 +5448,7 @@ snapshots: dependencies: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.3 + '@ungap/structured-clone': 1.4.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -5563,8 +5474,6 @@ snapshots: mdn-data@2.0.28: {} - mdn-data@2.0.30: {} - mdn-data@2.27.1: {} merge2@1.4.1: {} @@ -5698,8 +5607,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 @@ -5848,22 +5757,13 @@ snapshots: braces: 3.0.3 picomatch: 2.3.2 - minimatch@10.2.5: + minimatch@10.2.6: dependencies: - brace-expansion: 5.0.7 + brace-expansion: 5.0.9 minipass@7.1.3: {} - minizlib@3.1.0: - dependencies: - minipass: 7.1.3 - - mlly@1.8.2: - dependencies: - acorn: 8.17.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.4 + modern-tar@0.8.5: {} mrmime@2.0.1: {} @@ -5871,9 +5771,9 @@ snapshots: muggle-string@0.4.1: {} - nanoid@3.3.16: {} + nanoid@3.3.19: {} - neotraverse@0.6.18: {} + neotraverse@1.0.1: {} nlcst-to-string@4.0.0: dependencies: @@ -5891,7 +5791,7 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-mock-http@1.0.4: {} + node-mock-http@1.0.5: {} normalize-path@3.0.0: {} @@ -5899,7 +5799,7 @@ snapshots: dependencies: boolbase: 1.0.0 - obug@2.1.3: {} + obug@2.2.1: {} ofetch@1.5.1: dependencies: @@ -5907,11 +5807,7 @@ snapshots: node-fetch-native: 1.6.7 ufo: 1.6.4 - ohash@2.0.11: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 + ohash@2.0.12: {} oniguruma-parser@0.12.2: {} @@ -5921,11 +5817,11 @@ snapshots: regex: 6.1.0 regex-recursion: 6.0.2 - p-limit@7.3.0: + p-limit@7.3.2: dependencies: yocto-queue: 1.2.2 - p-queue@9.3.1: + p-queue@9.3.3: dependencies: eventemitter3: 5.0.4 p-timeout: 7.0.1 @@ -5934,7 +5830,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.7.0: {} + package-manager-detector@1.8.0: {} pagefind@1.5.2: optionalDependencies: @@ -5970,15 +5866,6 @@ snapshots: unist-util-visit-children: 3.0.0 vfile: 6.0.3 - parse5-htmlparser2-tree-adapter@7.1.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.3.0 - - parse5-parser-stream@7.1.2: - dependencies: - parse5: 7.3.0 - parse5@7.3.0: dependencies: entities: 6.0.1 @@ -6008,31 +5895,17 @@ snapshots: peberminta@0.9.0: {} - pend@1.2.0: {} - piccolore@0.1.3: {} picocolors@1.1.1: {} picomatch@2.3.2: {} - picomatch@4.0.5: {} - - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.8.2 - pathe: 2.0.3 - - pkg-types@2.3.1: - dependencies: - confbox: 0.2.4 - exsolve: 1.1.0 - pathe: 2.0.3 + picomatch@4.0.7: {} - postcss-nested@6.2.0(postcss@8.5.19): + postcss-nested@6.2.0(postcss@8.5.28): dependencies: - postcss: 8.5.19 + postcss: 8.5.28 postcss-selector-parser: 6.1.4 postcss-selector-parser@6.1.4: @@ -6040,9 +5913,9 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.19: + postcss@8.5.28: dependencies: - nanoid: 3.3.16 + nanoid: 3.3.19 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -6053,16 +5926,16 @@ snapshots: prettier-plugin-astro@0.14.1: dependencies: '@astrojs/compiler': 2.13.1 - prettier: 3.9.5 + prettier: 3.9.6 sass-formatter: 0.7.9 - prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.9.5): + prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.9.6): dependencies: - prettier: 3.9.5 + prettier: 3.9.6 optionalDependencies: prettier-plugin-astro: 0.14.1 - prettier@3.9.5: {} + prettier@3.9.6: {} prismjs@1.30.0: {} @@ -6070,20 +5943,13 @@ snapshots: property-information@7.2.0: {} - pump@3.0.4: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - - quansync@0.2.11: {} - queue-microtask@1.2.3: {} radix3@1.1.2: {} readdirp@4.1.2: {} - readdirp@5.0.0: {} + readdirp@5.1.1: {} recma-build-jsx@1.0.0: dependencies: @@ -6091,10 +5957,10 @@ snapshots: estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.1(acorn@8.17.0): + recma-jsx@1.0.1(acorn@8.18.0): dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -6124,9 +5990,9 @@ snapshots: dependencies: regex-utilities: 2.3.0 - rehype-expressive-code@0.44.0: + rehype-expressive-code@0.44.2: dependencies: - expressive-code: 0.44.0 + expressive-code: 0.44.2 rehype-format@5.0.1: dependencies: @@ -6212,7 +6078,7 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - remark-smartypants@3.0.2: + remark-smartypants@3.0.3: dependencies: retext: 9.0.0 retext-smartypants: 6.2.0 @@ -6229,8 +6095,6 @@ snapshots: request-light@0.7.0: {} - require-directory@2.1.1: {} - require-from-string@2.0.2: {} resolve-pkg-maps@1.0.0: {} @@ -6267,26 +6131,26 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - rolldown@1.1.5: + rolldown@1.2.8: dependencies: - '@oxc-project/types': 0.139.0 + '@oxc-project/types': 0.149.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.5 - '@rolldown/binding-darwin-arm64': 1.1.5 - '@rolldown/binding-darwin-x64': 1.1.5 - '@rolldown/binding-freebsd-x64': 1.1.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 - '@rolldown/binding-linux-arm64-gnu': 1.1.5 - '@rolldown/binding-linux-arm64-musl': 1.1.5 - '@rolldown/binding-linux-ppc64-gnu': 1.1.5 - '@rolldown/binding-linux-s390x-gnu': 1.1.5 - '@rolldown/binding-linux-x64-gnu': 1.1.5 - '@rolldown/binding-linux-x64-musl': 1.1.5 - '@rolldown/binding-openharmony-arm64': 1.1.5 - '@rolldown/binding-wasm32-wasi': 1.1.5 - '@rolldown/binding-win32-arm64-msvc': 1.1.5 - '@rolldown/binding-win32-x64-msvc': 1.1.5 + '@rolldown/binding-android-arm-eabi': 1.2.8 + '@rolldown/binding-android-arm64': 1.2.8 + '@rolldown/binding-darwin-arm64': 1.2.8 + '@rolldown/binding-darwin-x64': 1.2.8 + '@rolldown/binding-freebsd-x64': 1.2.8 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.8 + '@rolldown/binding-linux-arm64-gnu': 1.2.8 + '@rolldown/binding-linux-arm64-musl': 1.2.8 + '@rolldown/binding-linux-ppc64-gnu': 1.2.8 + '@rolldown/binding-linux-s390x-gnu': 1.2.8 + '@rolldown/binding-linux-x64-gnu': 1.2.8 + '@rolldown/binding-linux-x64-musl': 1.2.8 + '@rolldown/binding-openharmony-arm64': 1.2.8 + '@rolldown/binding-win32-arm64-msvc': 1.2.8 + '@rolldown/binding-win32-x64-msvc': 1.2.8 run-parallel@1.2.0: dependencies: @@ -6294,12 +6158,27 @@ snapshots: s.color@0.0.15: {} - safer-buffer@2.1.2: {} - sass-formatter@0.7.9: dependencies: suf-log: 2.5.3 + satteri@0.10.5: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + optionalDependencies: + '@bruits/satteri-darwin-arm64': 0.10.5 + '@bruits/satteri-darwin-x64': 0.10.5 + '@bruits/satteri-linux-arm64-gnu': 0.10.5 + '@bruits/satteri-linux-arm64-musl': 0.10.5 + '@bruits/satteri-linux-x64-gnu': 0.10.5 + '@bruits/satteri-linux-x64-musl': 0.10.5 + '@bruits/satteri-wasm32-wasi': 0.10.5 + '@bruits/satteri-win32-arm64-msvc': 0.10.5 + '@bruits/satteri-win32-x64-msvc': 0.10.5 + satteri@0.9.5: dependencies: '@types/estree-jsx': 1.0.5 @@ -6317,7 +6196,7 @@ snapshots: '@bruits/satteri-win32-arm64-msvc': 0.9.5 '@bruits/satteri-win32-x64-msvc': 0.9.5 - sax@1.6.0: {} + sax@1.6.1: {} section-matter@1.0.0: dependencies: @@ -6364,48 +6243,48 @@ snapshots: '@img/sharp-win32-ia32': 0.33.5 '@img/sharp-win32-x64': 0.33.5 - sharp@0.35.3(@types/node@26.1.1): + sharp@0.35.4(@types/node@24.13.4): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 semver: 7.8.5 optionalDependencies: - '@img/sharp-darwin-arm64': 0.35.3 - '@img/sharp-darwin-x64': 0.35.3 - '@img/sharp-freebsd-wasm32': 0.35.3 - '@img/sharp-libvips-darwin-arm64': 1.3.2 - '@img/sharp-libvips-darwin-x64': 1.3.2 - '@img/sharp-libvips-linux-arm': 1.3.2 - '@img/sharp-libvips-linux-arm64': 1.3.2 - '@img/sharp-libvips-linux-ppc64': 1.3.2 - '@img/sharp-libvips-linux-riscv64': 1.3.2 - '@img/sharp-libvips-linux-s390x': 1.3.2 - '@img/sharp-libvips-linux-x64': 1.3.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 - '@img/sharp-libvips-linuxmusl-x64': 1.3.2 - '@img/sharp-linux-arm': 0.35.3 - '@img/sharp-linux-arm64': 0.35.3 - '@img/sharp-linux-ppc64': 0.35.3 - '@img/sharp-linux-riscv64': 0.35.3 - '@img/sharp-linux-s390x': 0.35.3 - '@img/sharp-linux-x64': 0.35.3 - '@img/sharp-linuxmusl-arm64': 0.35.3 - '@img/sharp-linuxmusl-x64': 0.35.3 - '@img/sharp-webcontainers-wasm32': 0.35.3 - '@img/sharp-win32-arm64': 0.35.3 - '@img/sharp-win32-ia32': 0.35.3 - '@img/sharp-win32-x64': 0.35.3 - '@types/node': 26.1.1 - optional: true - - shiki@4.3.1: - dependencies: - '@shikijs/core': 4.3.1 - '@shikijs/engine-javascript': 4.3.1 - '@shikijs/engine-oniguruma': 4.3.1 - '@shikijs/langs': 4.3.1 - '@shikijs/themes': 4.3.1 - '@shikijs/types': 4.3.1 + '@img/sharp-darwin-arm64': 0.35.4 + '@img/sharp-darwin-x64': 0.35.4 + '@img/sharp-freebsd-wasm32': 0.35.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-linux-arm': 0.35.4 + '@img/sharp-linux-arm64': 0.35.4 + '@img/sharp-linux-ppc64': 0.35.4 + '@img/sharp-linux-riscv64': 0.35.4 + '@img/sharp-linux-s390x': 0.35.4 + '@img/sharp-linux-x64': 0.35.4 + '@img/sharp-linuxmusl-arm64': 0.35.4 + '@img/sharp-linuxmusl-x64': 0.35.4 + '@img/sharp-webcontainers-wasm32': 0.35.4 + '@img/sharp-win32-arm64': 0.35.4 + '@img/sharp-win32-ia32': 0.35.4 + '@img/sharp-win32-x64': 0.35.4 + '@types/node': 24.13.4 + optional: true + + shiki@4.4.3: + dependencies: + '@shikijs/core': 4.4.3 + '@shikijs/engine-javascript': 4.4.3 + '@shikijs/engine-oniguruma': 4.4.3 + '@shikijs/langs': 4.4.3 + '@shikijs/themes': 4.4.3 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -6417,16 +6296,16 @@ snapshots: sitemap@9.0.1: dependencies: - '@types/node': 24.13.3 + '@types/node': 24.13.4 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.6.0 + sax: 1.6.1 slash@5.1.0: {} smartypants@0.2.2: {} - smol-toml@1.7.0: {} + smol-toml@1.8.0: {} source-map-js@1.2.1: {} @@ -6443,12 +6322,12 @@ snapshots: sprintf-js@1.0.3: {} - starlight-blog@0.26.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0))(typescript@5.9.3))(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0)): + starlight-blog@0.26.1(@astrojs/starlight@0.41.11(@astrojs/markdown-remark@7.3.1)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0))(typescript@5.9.3))(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0)): dependencies: - '@astrojs/markdown-remark': 7.2.1 - '@astrojs/mdx': 5.0.6(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0)) + '@astrojs/markdown-remark': 7.3.1 + '@astrojs/mdx': 5.0.6(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0)) '@astrojs/rss': 4.0.19 - '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(terser@5.49.0)(yaml@2.9.0))(typescript@5.9.3) + '@astrojs/starlight': 0.41.11(@astrojs/markdown-remark@7.3.1)(astro@7.3.2(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.4)(terser@5.51.2)(yaml@2.9.0))(typescript@5.9.3) astro-remote: 0.3.4 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 @@ -6464,26 +6343,29 @@ snapshots: - astro - supports-color - stream-replace-string@2.0.0: {} + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 - string-width@4.2.3: + string-width@8.2.2: dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: + strip-ansi@7.2.0: dependencies: - ansi-regex: 5.0.1 + ansi-regex: 6.3.0 strip-bom-string@1.0.0: {} - strnum@2.4.1: + strnum@2.4.2: dependencies: anynum: 1.0.1 @@ -6499,38 +6381,20 @@ snapshots: dependencies: s.color: 0.0.15 - svgo@3.3.4: - dependencies: - commander: 7.2.0 - css-select: 5.2.2 - css-tree: 2.3.1 - css-what: 6.2.2 - csso: 5.0.5 - picocolors: 1.1.1 - sax: 1.6.0 - - svgo@4.0.2: + svgo@4.1.0: dependencies: commander: 11.1.0 - css-select: 5.2.2 + css-select: 6.0.0 css-tree: 3.2.1 - css-what: 6.2.2 + css-what: 7.0.0 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.0 + sax: 1.6.1 - tar@7.5.20: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.3 - minizlib: 3.1.0 - yallist: 5.0.0 - - terser@5.49.0: + terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.17.0 + acorn: 8.18.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -6540,12 +6404,12 @@ snapshots: tinyclip@0.1.15: {} - tinyexec@1.2.4: {} + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 to-data-view@1.1.0: {} @@ -6575,10 +6439,7 @@ snapshots: undici-types@7.18.2: {} - undici-types@8.3.0: - optional: true - - undici@7.28.0: {} + undici@8.10.2: {} unicorn-magic@0.3.0: {} @@ -6592,11 +6453,11 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unifont@0.7.4: + unifont@0.7.5: dependencies: css-tree: 3.2.1 - ofetch: 1.5.1 - ohash: 2.0.11 + ohash: 2.0.12 + undici: 8.10.2 unist-util-find-after@5.0.0: dependencies: @@ -6680,121 +6541,123 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(yaml@2.9.0): + vite@8.3.0(@types/node@24.13.4)(esbuild@0.28.2)(terser@5.51.2)(yaml@2.9.0): dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.5 - postcss: 8.5.19 - rolldown: 1.1.5 + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.28 + rolldown: 1.2.8 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.1.1 - esbuild: 0.28.1 + '@types/node': 24.13.4 + esbuild: 0.28.2 fsevents: 2.3.3 - terser: 5.49.0 + terser: 5.51.2 yaml: 2.9.0 - vitefu@1.1.3(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(yaml@2.9.0)): + vitefu@1.1.3(vite@8.3.0(@types/node@24.13.4)(esbuild@0.28.2)(terser@5.51.2)(yaml@2.9.0)): optionalDependencies: - vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(yaml@2.9.0) + vite: 8.3.0(@types/node@24.13.4)(esbuild@0.28.2)(terser@5.51.2)(yaml@2.9.0) - volar-service-css@0.0.71(@volar/language-service@2.4.28): + volar-service-css@0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)): dependencies: vscode-css-languageservice: 6.3.10 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) - volar-service-emmet@0.0.71(@volar/language-service@2.4.28): + volar-service-emmet@0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)): dependencies: '@emmetio/css-parser': 0.4.1 '@emmetio/html-matcher': 1.3.0 '@vscode/emmet-helper': 2.11.0 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) - volar-service-html@0.0.71(@volar/language-service@2.4.28): + volar-service-html@0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)): dependencies: vscode-html-languageservice: 5.6.2 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) - volar-service-prettier@0.0.71(@volar/language-service@2.4.28)(prettier@3.9.5): + volar-service-prettier@0.0.71(@volar/language-service@2.4.28(typescript@5.9.3))(prettier@3.9.6): dependencies: - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.28 - prettier: 3.9.5 + '@volar/language-service': 2.4.28(typescript@5.9.3) + prettier: 3.9.6 - volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.28): + volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.28(typescript@5.9.3))(typescript@5.9.3): dependencies: - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) + typescript: 5.9.3 - volar-service-typescript@0.0.71(@volar/language-service@2.4.28): + volar-service-typescript@0.0.71(@volar/language-service@2.4.28(typescript@5.9.3))(typescript@5.9.3): dependencies: path-browserify: 1.0.1 semver: 7.8.5 typescript-auto-import-cache: 0.3.6 - vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-textdocument: 1.0.14 vscode-nls: 5.2.0 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) + typescript: 5.9.3 - volar-service-yaml@0.0.71(@volar/language-service@2.4.28): + volar-service-yaml@0.0.71(@volar/language-service@2.4.28(typescript@5.9.3)): dependencies: - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 yaml-language-server: 1.23.0 optionalDependencies: - '@volar/language-service': 2.4.28 + '@volar/language-service': 2.4.28(typescript@5.9.3) vscode-css-languageservice@6.3.10: dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-textdocument: 1.0.14 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 vscode-html-languageservice@5.6.2: dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - vscode-uri: 3.1.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-languageserver-types: 3.18.3 + vscode-uri: 3.2.0 vscode-json-languageservice@4.1.8: dependencies: jsonc-parser: 3.3.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-languageserver-types: 3.18.3 vscode-nls: 5.2.0 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 vscode-jsonrpc@8.2.0: {} - vscode-jsonrpc@9.0.1: {} + vscode-jsonrpc@9.0.2: {} vscode-languageserver-protocol@3.17.5: dependencies: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 - vscode-languageserver-protocol@3.18.2: + vscode-languageserver-protocol@3.18.3: dependencies: - vscode-jsonrpc: 9.0.1 - vscode-languageserver-types: 3.18.0 + vscode-jsonrpc: 9.0.2 + vscode-languageserver-types: 3.18.3 - vscode-languageserver-textdocument@1.0.12: {} + vscode-languageserver-textdocument@1.0.14: {} vscode-languageserver-types@3.17.5: {} - vscode-languageserver-types@3.18.0: {} + vscode-languageserver-types@3.18.3: {} vscode-languageserver@9.0.1: dependencies: @@ -6802,23 +6665,15 @@ snapshots: vscode-nls@5.2.0: {} - vscode-uri@3.1.0: {} + vscode-uri@3.2.0: {} web-namespaces@2.0.1: {} - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-mimetype@4.0.0: {} - - wrap-ansi@7.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 xml-naming@0.3.0: {} @@ -6826,48 +6681,38 @@ snapshots: y18n@5.0.8: {} - yallist@5.0.0: {} - yaml-language-server@1.23.0: dependencies: '@vscode/l10n': 0.0.18 ajv: 8.20.0 ajv-draft-04: 1.0.0(ajv@8.20.0) ajv-i18n: 4.2.0(ajv@8.20.0) - prettier: 3.9.5 + prettier: 3.9.6 request-light: 0.5.8 vscode-json-languageservice: 4.1.8 vscode-languageserver: 9.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - vscode-uri: 3.1.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-languageserver-types: 3.18.3 + vscode-uri: 3.2.0 yaml: 2.8.3 yaml@2.8.3: {} yaml@2.9.0: {} - yargs-parser@21.1.1: {} - yargs-parser@22.0.0: {} - yargs@17.7.3: + yargs@18.1.0: dependencies: - cliui: 8.0.1 + cliui: 9.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 + string-width: 8.2.2 y18n: 5.0.8 - yargs-parser: 21.1.1 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 + yargs-parser: 22.0.0 yocto-queue@1.2.2: {} - zod@4.4.3: {} + zod@4.6.2: {} zwitch@2.0.4: {} diff --git a/src/content/docs/blog/2020/07/01/the-great-experiment/index.mdx b/src/content/docs/blog/2020/07/01/the-great-experiment/index.mdx deleted file mode 100644 index 0a1d3299..00000000 --- a/src/content/docs/blog/2020/07/01/the-great-experiment/index.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "The Great Experiment" -date: 2020-07-01T19:39:56+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -So as many have come to realise, we had to rush out a website super quick yesterday as the cat -was already out of the bag. One thing that should also be clarified, is our approach to development. - - - -## We're A Lab - -Primarily (but not exclusively) Serpent OS (future: Serpent Linux) is an endeavour worked on by the -[Lispy Snake, Ltd](https://lispysnake.com) crew. So we're all about creating awesome technology and -trying to further the playing field. - -Serpent OS is not, however, **owned** by Lispy Snake. It is a contributor-based open source project, -with specific roles. Those will be clarified over the coming week, but there is a dedicated **Project Manager**. -Hint: It's not me. - -## Measuring Success - -So, how does an experimental project.. measure success? Quite simply - if others adopt our methodologies or -technology, we've succeeded. We're really **not** looking at "number of installs" or "size of userbase" as -a metric, as our chief aim is to _build technology_. - -## Options for Longevity - -If the experiment is a success, which of course means having tight controls on scope and timescale, then -one would assume the primary way to **use** Serpent OS would be through some downstream repackaging or -reconfiguration, i.e. basing upon the project, to meet specific user demand. - -## It Should Be Fun - -This is the heart and soul of all Linux development. Developers should _enjoy_ the involvement and seeing -the end result. If we build something more in the end, then that's a journey we can create together. diff --git a/src/content/docs/blog/2020/07/06/welcome-peter/index.mdx b/src/content/docs/blog/2020/07/06/welcome-peter/index.mdx deleted file mode 100644 index 772b054a..00000000 --- a/src/content/docs/blog/2020/07/06/welcome-peter/index.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Welcome Peter" -date: 2020-07-06T16:12:07+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -Recently we did reveal on Twitter that long time friend and colleague-of-many-projects, Peter O'Connor, has formally joined the core team for -Serpent OS. Many of you know him as `sunnyflunk`. He will be working on core toolchain optimisations, benchmarking, and eventually Plasma inclusion. - - - -Peter has long wanted to get the most out of his computing experience, starting from Gentoo back in the 2000's to ensure there was no wasted resources on -features he didn't use. The desire to over-tinker and use unstable software often led to poor outcomes. While the itch laid dormant for over a decade, -it has always been there. - -**Peter O'Connor (sunnyflunk)** -> There's not much about Linux that currently excites me, but I've always wanted to see what's possible with a full LLVM/Clang stack. There's never been a better time to find out, but it can be difficult to push the envelope when limited with backwards compatibility and supporting older CPU architectures. After experimenting with some tool-chain customisations the chance to test them out more broadly and with a new tool-chain was too hard to pass up. This is the research project I've always wanted to undertake and looking forward to using it as my daily driver - -We'd like to officially extend our welcome to Peter, as the ramp up gets in place. It should be noted, he is partly to blame for Serpent OS -becoming manifest, as the core team got together after discussions on IRC. He has some fantastic ideas, and is a brilliant distribution -engineer with proven success. - -As an aside, we're working on improving the website to incorporate a team page, ready for the third team member reveal. diff --git a/src/content/docs/blog/2020/08/08/stage1-complete/index.mdx b/src/content/docs/blog/2020/08/08/stage1-complete/index.mdx deleted file mode 100644 index 4c625027..00000000 --- a/src/content/docs/blog/2020/08/08/stage1-complete/index.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Stage1 Complete" -date: 2020-08-08T15:15:04+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -Short and sweet, stage1 of the bootstrap is complete. As I indicated on the [Lispy Snake](https://lispysnake.com/blog/2020/08/03/status-update/) blog, -I'm still in the process of settling into new accommodation. This is going well, but still awaiting proper -broadband connectivity. Work has begun, however, and we're now moving onto stage2 of the bootstrap. - - - -This is handled via our [bootstrap-scripts](https://github.com/serpent-linux/bootstrap-scripts) project -and can be run by anyone on a relatively modern Linux distribution. - -![Validating stage1 cross-compiler](./progress.webp) - -Next on the list is completing stage2, which we've already started on. This is simply a cross-compiled -chroot environment with all the basic bits in place to build stage3, sanitizing and cleansing the toolchain. - -Even though it is early days, we can already, automatically produce a working cross-compiler that targets -LLVM's `libc++`, the musl `libc.so`, and `x86_64-serpent-linux-musl` host triplet. - -Probably a dull update for most, but an update it is. diff --git a/src/content/docs/blog/2020/08/16/stage2-complete/index.mdx b/src/content/docs/blog/2020/08/16/stage2-complete/index.mdx deleted file mode 100644 index 79751376..00000000 --- a/src/content/docs/blog/2020/08/16/stage2-complete/index.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "Stage2 Complete" -date: 2020-08-16T15:08:08+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -Just in case you thought we were sleeping behind the wheel, we've got -another blogpost for your viewing pleasure. In a nutshell, we completed -stage2 bootstrap. - - - -![Complete build-target for ARMv8](./ARMv8.webp) - -In order to simplify life, we greatly reduced the size of the `stage2` build component. -This decision was taken to better support cross-compilation in the face of software that -is distinctly cross-compilation unfriendly. - -A support stage, `stage2.5` will be added which will `chroot` into a copy of `stage2`, and -natively compile a small handful of packages required to complete `stage3`, also within the -chroot environment. - -For cross-compilation, we'll be relying on `qemu-static` to complete `2.5` and `3`. -However, at this point in time, we have the following: - - - Working cross-compilation of the entire bootstrap - - Complete LLVM based toolchain: `clang`, `llvm`, `libc++`, `lib++abi`, `libunwind` - - Entirety of stage2 built with `musl` libc. - - Working, minimal, `chroot` environment as product of `stage2`, with working compiler (`C` & `C++`) - -![x86_64](./x86_64.webp "Working x86_64 chroot") - -This is a major milestone for the project, as it is an early indication that we're self hosting. - -## Multiple Architecture Support - -At this point in time, we now have build support for two targets: `x86_64` and `ARMV8a`. -Our intent is to support `haswell` and above, or `zen` and above, for the x86_64 target. - -With our `ARMv8` target, we're currently looking to support the Pine Book Pro, if we can -manage to get hold of some testing hardware. It will likely be some time after full -x86_64 support that we'd officially support more hardware, however it is very important -that our bootstrap-scripts can trivially target multiple platforms. - -![ARMv8](./ARMv8.webp "ARMv8 validation") - -An interesting change when cross-compiling for other architectures, is the chicken & egg -situation with `compiler-rt` and other LLVM libraries. When we detect cross-compilation, -we'll automatically bootstrap `compiler-rt` before building `musl`, and then cross-compile -`libc++`, `libc++abi` and `libunwind` to ensure `stage1` can produce native binaries for -the target with correct linkage. - -## Next Steps - -As we've mentioned, we'll push ahead with `2.5` and `3`, which will complete the initial -Serpent OS bootstrap, producing a self-hosting, self-reliant rootfs. This is the point -at which we can begin to bolt-on package management, boot management, stateless configuration -utilities, etc. - -Our initial focus is `x86_64` hardware with UEFI, and as we gain access to more hardware we -can enable support for more targets, such as `ARMv8a`. Our `bootstrap-scripts` will always -remain open source, as will all processes and tooling within Serpent OS, or anything used -to build and deploy Serpent OS. - -This will make it much easier in future to create custom spins of Serpent OS for different -configurations or targets, without derailing the core project. It should therefore be the -simplest thing in the world to fork Serpent OS to one's liking or needs. - -If you want to support our work, you can jump onto our IRC channel (`#serpentOS` on freenode) -or support us via the [Team page](/team). diff --git a/src/content/docs/blog/2020/08/28/looking-stage4-in-the-eye/index.mdx b/src/content/docs/blog/2020/08/28/looking-stage4-in-the-eye/index.mdx deleted file mode 100644 index 77454686..00000000 --- a/src/content/docs/blog/2020/08/28/looking-stage4-in-the-eye/index.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: "Looking Stage4 In The Eye" -date: 2020-08-28T21:35:16+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -Well, we've made an awful lot of progress in these last few days. It wasn't -that long ago that we introduced some of the new projects required to get -stage3 off the ground. - - - -![Building systemd the easy way](./FeaturedSD.webp) - -## libc-support - -Our [libc-support](https://dev.serpentos.com/source/libc-support/) project has been growing, thanks primarily to the contributions -of [Jouni Roivas](https://dev.serpentos.com/p/joroi/). We now have initial working versions -of `getent` and `getconf`. The `getconf` program is considered feature-complete -for our current requirements, and the focus is now on cleaning up `getent` making -it more modular and easy to maintain in the long run. - -## libwildebeest - -We began work on [libwildebeest](https://dev.serpentos.com/source/libwildebeest/) to quickly unlock building `systemd`. -Remember, our ambition with this project is to provide a sane, centralised way of -maintaining source compatibility with various projects that rely on features currently -only available in the GNU toolchain + runtime. This is our alternative vision to -patching every single package that fails to build against our LLVM+musl toolchain, -ensuring our work scales. - -Right now, `libwildebeest` implements some missing APIs, and indeed, some **replacement** APIs, -for when GNU behaviours are expected. It does so in a way that doesn't impact the -resulting binary's license, or any of the system ABI. We provide some `pkg-config` files -with explicit `cflags` and `libs` fields set, such as: - -```bash - - -L${libdir} -lwildebeest-ftw -Wl,--wrap=ftw -Wl,--wrap=nftw -I${includedir}/libwildebeest --include=lwb_ftw.h -``` - -Our headers take special care to **mask** the headers provided by musl to avoid redefinitions, -and instruct the linker to replace calls to these functions with our own versions, i.e.: - -```c - -int __wrap_ftw(const char *dir, int (*funcc)(const char *, const struct stat *, int), - int descriptors) - -``` - -It then becomes trivial to enable wildebeest for a package build, i.e.: - -```bash - export CFLAGS="${CFLAGS} $(pkg-config --cflags --libs libwildebeest)" -``` - -Right now - we've only provided stubs in `libwildebeest` to ensure we can build our packages. -Our next focus is to actually implement those stubs using MIT licensed code so that applications -and libraries can rely on `libwildebeest` to provide a basic level of GNU compatibility in a -reliable fashion. - -Until such point as all the APIs are fully and safely implemented, it would be highly ill-advised -to **use** libwildebeest in any project. We'll announce stability in the coming weeks. - -## systemd - -We've made great progress in enabling systemd in Serpent OS. Where `libwildebeest` is in -place, it now enables our currently required level of source compatibility to a point where -systemd is building with networkd, resolved and a number of other significant targets enabled. - -In a small number of cases, we've had to patch systemd, but not in the traditional sense -expected to make it work with musl. - -The only non-upstreamable patching we've done (in combination with libwildebeest enabling) -was to the UAPI headers, as the musl provided headers clash with the upstream kernel headers -in certain places (`if_ether.h`, `if_arp.h`) - but this is a tiny cost to bear. - -The other patches, were simply portability fixes, ensuring all headers were included: - - - [partition/makefs: Include missing sys/file.h header #16876](https://github.com/systemd/systemd/pull/16876) - - [login/logind: Include sys/stat.h for struct stat usage #16887](https://github.com/systemd/systemd/pull/16887) - -It should be noted both of these (very trivial) pull requests were accepted and merged upstream, -and will be part of the next systemd release. - -## Next On The Agenda - -Our major ticket items involve fleshing out stage3 with some missing libraries to further -enable systemd, rebuilds of util-linux to be systemd-aware, and continue fleshing out -`dbus`, `systemd` and `libwildebeest` support to the point we have a bootable disk image. - -At that point we'll move into stage4 with package management, boot management, and -a whole host of other goodies. And, if there is enough interest, perhaps some early -access ISOs! - -After having engaged in discussions with a variety of developers using musl as their -primary libc, we've catalogued common pain points. We therefore encourage developers -to contribute to our `libwildebeest` and `libc-support` projects to complete the -tooling and experience around musl-based distributions. - -Our aim for Serpent OS is a **full fat experience**, which means we have large ticket -items on our horizon, such as NSS/IDN integration, performance improvements, increasing -the default stack size, along with source compatibility for major upstream projects. - -Until the next blog post, you can keep up to date on our IRC channel. Join `#serpentOS` on freenode! diff --git a/src/content/docs/blog/2020/09/07/stage3-complete/index.mdx b/src/content/docs/blog/2020/09/07/stage3-complete/index.mdx deleted file mode 100644 index 1588a84e..00000000 --- a/src/content/docs/blog/2020/09/07/stage3-complete/index.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Stage3 Complete" -date: 2020-09-07T18:39:24+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -Another week, another milestone completed. We're pleased to announce that -we've completed the initial Stage3 bootstrap. While we have some parallel -works to complete for Stage 4, we can now begin to work on the exciting -pieces! We're now bootstrapped on ARMv8(-a) and x86_64 - - - -![Build](./Build.webp "Complete build-target for x86_64") - -## Announcing Moss - -Our immediate focus is now to implement our package manager: [moss](https://github.com/serpent-linux/moss). -Currently it only has a trivial CLI and does absolutely nothing. We will now shift our attention -to implement this as a core part of the Stage 4 bootstrap. Moss is so-called as we're a rolling -release, _a rolling stone gathers no moss_. The package manager is being implemented in the D Programming Language. - -Moss does not aim to be a next generation package management solution, it instead inspired by -eopkg, RPM and swupd, aiming to provide a reliable modern package management and update -solution with stateless design at the core. Core features and automatic dependencies will be managed -through capability subscriptions. The binary format will be versioned and deduplicated, with multiple -internal lookup tables and checksums. Our chief focus with moss is a reliable system -management tool that is accessible even in situations where internet access is limited. - -## Ongoing Works - -In order to complete stage3, we provided linker stubs in `libwildebeest` to ensure -we can build. Obviously this introduces runtime errors in systemd and our stage3 isn't -bootable, just chrootable. This will be resolved when systemd is properly packaged by -moss in stage4. - -## Docker Image - -We now have a test container available on Docker Hub. You can install and run the -simple bash environment by executing the following command with a Docker-enabled user: - -```bash - docker run -it --rm serpentos/staging:latest -``` - -Currently we only have an x86_64 image, but may experiment with multiarch builds later -in stage4. - -**IMPORTANT**: The `staging` image is currently only a dump of the stage3 tree with -minor cleaning + tweakups. It is not, in any way, shape or form, representative of -the final quality of Serpent OS. Additionally zero performance work or security -patching has been done, so do **not** use in a production environment. - -The image is provided currently as a means to validate the LLVM/musl toolchain. - -## Future ISO - -We cannot currently say when we'll **definitely** have an ISO, however we do -know that some VM-specific images will arrive first. After that we'll focus -on an installer (package selection based) and a default developer experience. -All we can say is strap in, and enjoy the ride. diff --git a/src/content/docs/blog/2020/09/10/defining-moss/index.mdx b/src/content/docs/blog/2020/09/10/defining-moss/index.mdx deleted file mode 100644 index a680ac84..00000000 --- a/src/content/docs/blog/2020/09/10/defining-moss/index.mdx +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: "Defining Moss" -date: 2020-09-10T16:02:48+01:00 -draft: false -authors: [ikey] -tags: [news] -featuredImage: "/img/blog/defining-moss/Featured.webp" -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -Over the past few weeks, throughout the entire bootstrap process, we've -been deliberating on what our package manager is going to look like. We -now have a very solid idea on what that'll be, so it's time for a blog -post to share with the community. - - - -![Initial moss prototype CLI](./Featured.webp) - -## Old, but new - -The team has been very clear in wanting a traditional package management solution, -whereby repositories and packages compose the OS as a whole. However, we also -want modern features, such as being stateless by default. A common theme -is wanting to reduce the complex iterations of an OS into something that -is sanely versioned, but also flexible, to ensure a consistent, tested -experience with multiple end targets. - -Additionally, the OS must be incredibly easy for contributors and team members -to maintain, with intelligent tooling and simple, but powerful formats. - -## Atomic updates - -One of the most recent software update trends of recent years is atomic updates. -In essence this allows applying an update in a single operation, and importantly, -reversing an update in a single operation, without impacting the running system. - -This is typically achieved using a so-called `A/B switch`, which is what we will -also do with moss. We won't rely on any specific filesystem for this implementation, -instead relying on a smart layout, `pivot_root` and a few other tricks. - -Primarily we'll update a single `/usr` symlink to point to the current OS image, -with `/` being a read-only faux rootfs, populated with established mountpoints -and symlinks. Mutation will be possible only via `moss` transactions, or in -world-writable locations (`/opt`, `/usr/local`, `/etc` ...) - -## Deduplication - -The moss binary package format will be deduplicated in nature, containing hash-keyed -blobs in an `zstd` compressed payload. Unique blobs will be stored in a global cache, -and hard-linked into their final location (i.e. `/moss/root/$number/usr/...`) to -deduplicate the installed system too. This allows multiple system snapshots with -minimal overhead, and the ability to perform an offline rollback. - -## Implications - -We'll need to lock kernels to their relevant transactions (or repo versions) to prevent -untested configurations. Additionally the boot menu will need to know about older versions -of the OS that are installed, so they can be activated in the `initrd` at boot. This -will require us doing some work with `clr-boot-manager` to achieve our goals. - -## Difference from existing solutions - -We're trying to minimise the iterations of the OS to what is available in a given version -of the package repositories. Additionally we wish to avoid extensive "symlink farms" -as we're not a profile-oriented distribution. Instead we focus on deduplication, atomic -updates and resolution performance. - -## Subscriptions - -Keeping a system slim is often a very difficult thing to achieve, without extensive -package splitting and effort on the user's part. An example might be enabling SELinux -support on a system, or culling the locales to only include the used ones. - -In Serpent OS (and moss, more specifically) we intend to address this through "subscriptions". -Well defined names will be used by moss to filter (or enable) certain configurations -in packages + dependencies. In some instances this will toggle subpackages/dependencies -and in others it will control which paths of a package are actually installed to disk. - -Going further with this concept, we will eventually introduce modalias based capabilities -to automatically subscribe users to required kernel modules, allowing slim or fullfat -installations as the user chooses. This in turn takes the burden of maintenance away -from developers + users, and enables an incredibly flexible, approachable system. - -## Mandatory reboots - -Where possible we will limit mandatory reboots, preferring an in-place atomic update -to facilitate high uptime. However, there are situations where a reboot is absolutely -unavoidable, and the system administrator should plan some downtime to handle this -case. - -Certain situations like a kernel update, or security fix to a core library, would -require a reboot. In these instances, the atomic update will be deferred until the -next boot. In most situations, however, reboots will not be mandatory. - -## Until the next time - -Well, we've given a brief introduction to our aims with `moss` and associated tooling, -and you can get more information by checking the moss [README.md](https://github.com/serpent-linux/moss/blob/main/README.md). - -The takeaway is we want a package-based software update mechanism that is -reliable and trusted, and custom-built to handle Serpent OS intricities, -with a simple approach to building and maintaining the distribution. - -For now, we're gonna stop talking, and start coding. diff --git a/src/content/docs/blog/2020/09/21/source-format-defined/index.mdx b/src/content/docs/blog/2020/09/21/source-format-defined/index.mdx deleted file mode 100644 index a7ced992..00000000 --- a/src/content/docs/blog/2020/09/21/source-format-defined/index.mdx +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: "Source Format Defined" -date: 2020-09-21T16:09:46+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- - -Following quickly on the heels of yesterday's announcement that the binary format has been defined, we've -now implemented the initial version of our source format. The source format provides metadata on a package -along with instructions on how to build the package. - - - -The next step of course, is to implement the build tool, converting the source specification into a binary package -that the end user can install. With our 2 formats defined, we can now go ahead and implement the build routines. - -![Very trivial package recipe](./Featured.webp) - -## A YAML based format - -The eagle-eyed among you will already see this is a derivation of the `package.yml` format I originally created -while at [Solus](https://getsol.us). Minor adaptations to the format have been made to support multiple architectures -via the `profiles` key, and package splitting behaviour has now been grouped under a `packages` key to make -the structure more readable. - -In `package.yml`, one would have to redefine subpackage summaries as a key in a list of the primary `summary` key, -such as: - -```yaml - - rundeps: - - primary-run-dep - - dev: secondary-run-dep - summary: - - Some Summary - - dev: Some different summary -``` - -We've opted to group "Package Definition" behaviour into core structs, which are allowed to appear in the root-level -package and subpackages: - -```yaml - - summary: Top-level summary - packages: - - dev: - summary: Different summary - rundeps: Different rundeps -``` - -## Multiple architecture support - -In keeping with the grouping behaviour, we're baking multiple architecture configurations into the YML file. A common -issue encountered with the older format was how to handle `emul32`: - -```yaml - - setup: | - if [[ -z "${EMUL32BUILD}" ]]; then - %configure --some-emul32-option - else - %configure - fi - - build: | - %make -``` - -Our new approach is to group Build Definitions into the root level struct, which may then individually be overridden for -each architecture. For example: - -```yaml - - profiles: - - ia32: - setup: | - %configure --some-emul32-option - setup: | - %configure -``` - -![Permutations](./Permutations.webp "More advanced uses of the spec") - -## Differences - -As you can see it is highly similar to package.yml - which is a great format. However, with our tooling and aims being -slightly different, it was time to reevaluate the spec and bolster it where appropriate. We're happy to share our -changes, but in the interest of not causing a conflict between the 2 variants, we'll be calling ours "stone.yml". - -Our main motivation came from the tooling, which is written in the D language. With D we were able to create a strongly -typed parser and explicit schema, and with a struct-based approach it made it more trivial to group similar -definitions. - -Other than that, we have the same notions with the format, intelligent automatic package splitting, ease of developer -experience, etc. diff --git a/src/content/docs/blog/2020/09/22/results-of-the-experiment/index.md b/src/content/docs/blog/2020/09/22/results-of-the-experiment/index.md deleted file mode 100644 index 05b9be0a..00000000 --- a/src/content/docs/blog/2020/09/22/results-of-the-experiment/index.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "Results Of The Experiment" -date: 2020-09-22T18:05:39+01:00 -draft: false -authors: [ikey] -tags: [news] -featuredImage: "/img/blog/results-of-the-experiment/Featured.webp" -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2020 aerynOS Developers" ---- -import FigureScreenshotOne from "@/components/ui/FigureScreenshotOne.astro" -import featuredImage from "./Featured.webp" - -It seems like only yesterday we announced to the world a [Great Experiment](https://serpentos.com/blog/2020/07/01/the-great-experiment/). -It was in fact 2 months ago, and a whole lot of work has happened since that point. A few take-homes are immediately clear, the primary -one being the need to be a community-oriented Linux distribution. - - - -To quote ourselves 2 months ago: - - -``` - If the experiment is a success, which of course means having tight controls on scope and timescale, - then one would assume the primary way to use Serpent OS would be through some downstream repackaging - or reconfiguration, i.e. basing upon the project, to meet specific user demand. -``` - -It turns out that so far the experiment has been successful, and being forkable is still at the very -heart of our goals. Others have joined us on our journey, and expressed the same passion in our goals -as we have. A community has formed around the project, with individuals sharing the same ambitions -for a reliable, rolling operating system with a powerful package manager. - - - -## An open community - -Over the past 2 months we've transformed from set of ideas into a transparent, community-first organisation -with clear leadership and open goals. I've stepped into the Benevolent Dictator For Life position, and Peter -has taken on daily responsibilities for the project running. Aydemir is now our treasurer on Open Collective, -and many individuals contribute to our project. - -## Transactional package management - -No need to rehash this, but the defining feature of Serpent OS has clearly become moss, something initially -not anticipated when we started. A read-only root filesystem, transactional operations, rollbacks, deduplicating -throughout and atomic updates. Combine that with a rolling release model, stateless policy and ease-of-use, -the core feature-set is already powerful. - -## Deferral of musl integration - -In recent weeks we've been working on `libwildebeest` and `libc-support`, primarily as a stop-gap to provide -glibc compatibility without using glibc. While musl has many advantages, it is clear to us now that writing -another libc through our support projects isn't what we originally planned. With that in mind we're adopting -glibc and putting our musl works under community ownership, until such time as reevaluation shows that musl is -what is needed in Serpent OS. Note the primary motivator here is investing our efforts where it makes sense, -and obtaining the best results in the most manageable fashion for our users. - -Our new toolchain configuration will be as follows: - - - LLVM/clang as primary toolchain - - libc++ as C++ library - - glibc as C library - - gcc+binutils (`ld.bfd`) provided to build glibc, elfutils, etc. - - Permitting per-package builds using GCC, i.e. kernel to alleviate Clang IAS issues. - -Thus our toolchain will in fact be a hybrid GNU/LLVM one. This will allow both source and binary compatibility -with the majority of desktop + server Linux distributions, facilitating choice of function for our users. - -It should be noted this decision has been made after much discussion internally, on our IRC, on our OpenCollective, -etc. Our bootstrap-scripts is being improved to support both `glibc` and `musl`, so that the decision can continuously -be reviewed. If we reach a position whereby musl inclusion once again makes sense, thanks to atomic updates -from moss, it will be possible to switch. - -## Final thoughts - -Initially Serpent OS emerged as a collective agreement on IRC as a set of notions as opinions. Over the past few -months those opinions have solidified into tangible ideas, and a sense of community. In keeping with what is -right for the community, our messaging has been reworked. - -It is fair to say our initial stance appeared quite hostile, as a bullet-point list of exhaustion with past -experiences. As we've pivoted to being a fully community-oriented distribution, we've established our goals -of being a reliable, flexible, open, rolling Linux distribution with powerful features imbued by the -package manager, and an upstream-first approach. - -As such we've agreed to not let our own pet-peeves interfere with the direction of the project, and instead -enable users to do what they wish on Serpent OS, be it devops, engineering, browsing, gaming, you name it. -We're a general purpose OS with resilience at the core. - -Our focus is on the usability and reliability of the OS - thus our efforts will be invested in areas such -as the package manager, hardware enabling, the default experience, etc. - -So, strap yourself in, as we're fond of saying. Development of Serpent OS is about to accelerate rapidly. diff --git a/src/content/docs/blog/2021/02/17/moss-format-read-write-support/index.mdx b/src/content/docs/blog/2021/02/17/moss-format-read-write-support/index.mdx deleted file mode 100644 index c4183762..00000000 --- a/src/content/docs/blog/2021/02/17/moss-format-read-write-support/index.mdx +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: "Moss Format: Read Write Support" -date: 2021-02-17T22:35:11Z -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2021 aerynOS Developers" ---- - -It's been 8 days since our last blogpost and a lot of development work has happened -in that time. Specifically, we've completely reworked the internals of the `moss-format` -module to support read/write operations.. Which means installation is coming soon (TM) - - - -![Development work on moss-format](./Featured.webp) - -So, many commits have been made to the core repositories, however the most -important project to focus on right now is `moss-format`, which we used to -define and implement our binary and source formats. This module is shared -between `boulder`, our build tool, and `moss`, our package manager. - -We've removed the old enumeration approach from the `Reader` class, instead -requiring that it processes **data** payloads in-place, deferring reading the -**content** payload streams. We've also enforced strong typing to allow -safe and powerful APIs: - -```d - import moss.format.binary.payload.meta : MetaPayload; - - auto reader = new Reader(File(argv[0], "rb")); - auto metadata = reader.payload!MetaPayload(); -``` -# - -Right now we can read and write our `MetaPayload` from and to the stream, -allowing us to encode & decode the metadata associated with the package, -with strong type information (i.e. `Uint64`, `String`, etc.) - -## Next Steps - -We need to restore the `IndexPayload`, `LayoutPayload` and `ContentPayload` -definitions. The first two are simply **data** payloads and will largely -follow the design of the newly reimplemented `MetaPayload`. Then we restore -`ContentPayload` support, and this will allow the next steps: unpack, install. - -Many of the babysteps required are done now, which power our binary format. -The design of the API is done in a way which will allow powerful manipulation -via the `std.algorithm` and `std.range` APIs, enabling extremely simple and -reliable installation routines. - -It might seem odd that we've spent so much time on the core **format**, -however I should point out that the design of the format is central to the -OS design. Our installation routine is **not** unpacking of an archive. - -With our binary format, the stream contains multiple PayloadHeaders, -with fixed lengths, type, tag, version, and compression information. -It is up to each Payload implementation to then parse the binary -data contained within. Currently our Payloads are compressed using ZSTD, though -other compression algorithms are supported. - -So, we have the `MetaPayload` for metadata. Additionally, we encode all **unique** -files in the package in a single compressed payload, the `ContentPayload`. The -offset to each unique file (by hash) is stored within the `IndexPayload`, and -the filesystem layout is encoded as data within the `LayoutPayload`. - -In order to unpack a moss package, the `ContentPayload` blob will be decompressed -to a temporary location. Then, each struct within the `IndexPayload` can be used -to copy portions (`copy_file_range`) of the blob to the cache store for permanence. We skip each Index -if its already present within the cache. Finally, the target filesystem is populated -with a view of all installed packages using the `LayoutPayload` structs, creating -a shallow installation using hardlinks and directories. - -The net result is deep deduplication, atomic updates, and flexibility for the user. -Once we add transactions it'll be possible to boot an older version of the OS using -the deduplication capabilities for offline recovery. Additionally there is no requirement -for file deletion, rename or modification for an update to succeed. - -## Nutshell - -Huge progress. Major excitement. Such wow. Soon alphas. diff --git a/src/content/docs/blog/2021/03/16/optimising-package-distribution/index.mdx b/src/content/docs/blog/2021/03/16/optimising-package-distribution/index.mdx deleted file mode 100644 index 1f03d313..00000000 --- a/src/content/docs/blog/2021/03/16/optimising-package-distribution/index.mdx +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: "Optimising Package Distribution" -date: 2021-03-16T22:19:12Z -draft: false -authors: [sunnyflunk] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2021 aerynOS Developers" ---- - -Getting updates as fast as possible to users has made deltas a popular and sought after feature for distributing -packages. Over the last couple of days, I've been investigating various techniques we can look at to support deltas in -`moss`. - - - -## Trade-offs Between Packages and Deltas - -Minimising the size of updates is particularly valuable where files are downloaded many times and even better if they're -updated infrequently. With a rolling release, packages will be updated frequently, so creating deltas can become -resource intensive, especially if supporting updates over a longer period of time. Therefore it's important to get the -right balance between compression speed, decompression memory and minimising file size. - -| | Package priorities | How best to meet these needs | -|--------------|------------------------------|------------------------------| -| Developers | Creation speed | Quickly created packages | -| Users | File size and update speed | Size minimised deltas | - -From the users point of view, minimising file size and upgrade time are important priorities, but for a developer, the -speed at which packages are created and indexed is vital to progression. Deltas are different to packages in that they -aren't required immediately, so there's minimal impact in taking longer to minimise their size. By getting deltas right, -we can trade-off the size of packages to speed up development, while users will not be affected and fetch only size -optimised deltas. - -## Test Case - QtWebEngine - -QtWebEngine provides a reasonable test case where the package is a mix of binaries, resources and translations, but -above average in size (157.3MB uncompressed). The first trade-off for speed over size has already been made by -incorporating `zstd` in moss over `xz`, where even with max compression `zstd` is already 5.6% larger than using `xz`. -This is of course due to the amazing decompression speeds where `zstd` is magnitudes faster. - -![Compression levels with zstd](./Featured.webp) - -With maximum compression, large packages can take over a minute to compress. With a moderate increase in size, one can -reduce compression time by 2-10x. While making me happier as a developer, it does create extra network load during -updates. - -| Full Package | zstd -16 -T0 | zstd -16 | zstd -19 -T0 | zstd -19 | zstd -22 | xz -9 | -|-----------------|--------------|----------|--------------|----------|----------|--------| -| Time to create | 5.4s | 26.8s | 27.8s | 56.0s | 70.6s | 66.5s | -| Size of package | 52.6MB | 52.6MB | 49.2MB | 49.2MB | 48.4MB | 45.9MB | - -## Deltas to the Rescue! - -There are two basic methods for deltas. One simple method is to include only files that have been changed since the -earlier release. With reproducible builds, it is typical to create the same file from the same inputs. However, with a -rolling release model, files will frequently have a small change from dependency changes and new versions of the package -itself. In these circumstances the delta size starts to get closer to the full package anyway. As a comparison to other -delta techniques, this approach resulted in a 38.2MB delta as it was a rebuild of the same version at a different time -so the resources and translations were unchanged (and therefore omitted from the delta). - -An alternative is a binary diff, which is a significant improvement when files have small changes between releases. -`bsdiff` has long been used for this purpose and trying it out (without knowing much about it) I managed to create a -delta of 33.2MB, not a bad start at all. - -To highlight the weakness of the simple method, when you compare the delta across a version change, the simple delta was -only a 7% reduction of the full package (as most files have changed), while using an optimal binary diff, it still -managed to achieve a respectable 31% size reduction. - -## A New Contender - -While looking into alternatives, I happened to [stumble across](https://github.com/facebook/zstd/releases/tag/v1.4.5) -a new feature in `zstd` which can be used to create deltas. As we already use `zstd` heavily it should make integration -easier. `--patch-from` allows `zstd` to use the old uncompressed package as a dictionary to create the newer package. In -this way common parts between the releases will be reused in order to reduce the file size. Playing around I quickly -achieved the same size as `bsdiff`, and with a few tweaks was able to further reduce the delta by a **further 23.5%!** -The best part is that it has the same speedy decompression as `zstd`, so it will recreate most packages from deltas in -the blink of an eye! - -| Delta | only changed files | bsdiff | zstd -19 | zstd -22 | zstd -22 --zstd=chainLog=30 | -|-----------------|--------------------|--------|----------|----------|-----------------------------| -| Time to create | 60.8s | 153.0s | 85.5s | 111.6s | 131.8s | -| Size of delta | 38.2MB | 33.2MB | 33.3MB | 28.5MB | 25.4MB | - - -## Next Steps - -There's certainly a lot of information to digest, but the next step is to integrate a robust delta solution into the -`moss` format. I really like the `zstd` approach, where you can tune for speed with an increase in size if desired. With -minimising on delta size, users can benefit from smaller updates while developers can benefit from faster package -creation times. - -Some final thoughts for future consideration: - -- `zstd` has seen many improvements over the years, so I believe that ratios and performance will see incremental -improvements over time. Release [1.4.7](https://github.com/facebook/zstd/releases/tag/v1.4.7) already brought -significant improvements to deltas (which are reflected in this testing). -- The highest compression levels (`--ultra`) are single threaded in `zstd`, so delta creation can be done in parallel to -maximise utilisation. -- Over optimising the tunables can have a negative impact on both speed and size. As an example, -`--zstd=targetLength=4096` did result in a 2KB reduction in size at the same speed, but when applied to different inputs -(kernel source tree), it not only made it larger by a few hundred bytes, but added **4 minutes** to delta creation! -- Memory usage of applying deltas can be high for large packages (1.74GB for the kernel source tree) as it has to ingest -the full size of the original uncompressed package. It is certainly possible to split up payloads with some delta users -even creating patches on a per file basis. It is a bit more complicated when library names change version numbers each -release with only the SONAME symlink remaining unchanged. -- There's always the option to repack packages at higher compression levels later (when deltas are created). This solves -getting the package 'live' ASAP and minimises the size (eventually), but adds some complication. diff --git a/src/content/docs/blog/2021/03/20/moss-unlocked/index.mdx b/src/content/docs/blog/2021/03/20/moss-unlocked/index.mdx deleted file mode 100644 index 7232e7bb..00000000 --- a/src/content/docs/blog/2021/03/20/moss-unlocked/index.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: "Moss Unlocked" -date: 2021-03-20T14:07:30Z -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2021 aerynOS Developers" ---- - -Well, it's not all doom and gloom these days. We've actually made some -significant progress in the last few days, so it seems a good time to -share a progress update. - - - -![Extracting content from moss archives](./Featured.webp) - - -## moss can now extract - -Oh yeah, that totally happened. So, we can now successfully build moss -packages from `boulder` and then extract them to disk once again with -`moss`. This might sound totally uninteresting, but it demonstrates -that our format is actually working as intended. - -Admittedly the code is super rough within `moss` and somewhat proof -of concept, however we're able to extract the contents of the moss -archive and rebuild the layout on disk. - -## What makes extraction difficult? - -Well, quirky new format for one. A moss archive currently consists of -4 "payloads", or major sections: - - - `MetaPayload` - - Contains all package **information**, with strongly typed keys. - - - `IndexPayload` - - Contains the IDs of all unique files (hash) and their offsets within - the ContentPayload - - - `LayoutPayload` - - A sequence of specialised structs describing the final "layout" of the - package on disk, with attributes, paths, and for regular files, the ID - of the file in the ContentPayload to build this file **from**. - - - `ContentPayload` - - A binary blob containing every unique file from the package, in an order - described by the `IndexPayload`. The files are stored sequentially with - no gaps. - -Additionally, each payload is independently compressed using `zstd`. In order -to extract files to disk, we must first decompress `ContentPayload` to a -temporary file. Next, we blit each file from the "megablob" to the cache store, -using the `IndexPayload` to understand the offsets. Finally, we apply the -instructions in `LayoutPayload` to construct the final layout on disk, hardlinking -the cache assets into their final locations, setting attributes, etc. - -Net result? Deduplication on a per package basis, and a system-wide deduplication -policy allowing sharing of identical assets on disk between multiple packages. -This will also power our core update mechanism, whereby each update is atomic, -and is simply the difference on disk from the previous version, permitting a -powerful rollback mechanism. - -## Room for improvement - -![Multiple](./Multiple.webp "Extracting multiple moss archives") - -There are areas where we're doing things inefficiently, and we'll certainly improve -that in future revisions of the important. For example, `IndexPayload` actually -wastes some bytes by storing redundant information that can be calculated at -runtime. Additionally, we want to use the zstd C APIs directly to gain the level -of control we **actually need**. We're also going to wrap the `copy_file_range` -syscall to make extraction of the content payload more efficient and not rely on -userspace copies. - -However, we're working towards a prealpha, and some inefficiencies are OK. Our -first port of call will be a prealpha image constructed from `.stone` files, produced -by `boulder`, installed by `moss`. This will validate our toolchain and tooling -and serve as a jumping off point for the project. - -Stay tuned, there is a whole bunch of awesome coming now that moss is officially -unlocked and progressing. - -## And finally - -I want to thank everyone who is currently supporting the project. I also want to personally -thank you for your understanding of the setbacks of real life, given the difficult times myself -and my family have been going through. I hope it is clear that I remain committed to the -project and it's future, which is why we're transparently run and funded via [OpenCollective](https://opencollective.com/serpent-os). - -Despite the rough times, work continues, and awesome people join our ranks on a regular basis. -Stability is on the immediate horizon and work with Serpent OS grows exponentially. You can -be part of our journey, and help us build an amazing community and project that outlives us -all. diff --git a/src/content/docs/blog/2021/11/23/it-all-depends/index.mdx b/src/content/docs/blog/2021/11/23/it-all-depends/index.mdx deleted file mode 100644 index 50a96ad9..00000000 --- a/src/content/docs/blog/2021/11/23/it-all-depends/index.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: "It All Depends" -date: 2021-11-23T23:45:06Z -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2021 aerynOS Developers" ---- - -It all depends.. it really does. On shared libraries.. interpreters.. `pkg-config` providers -and packages. It's the same story for all "package managers", how do we ensure that the -installed software has everything it needs at runtime? - -Our merry crew has been involved in designing and building Linux distributions for a very, very -long time, so we didn't want to simply repeat history. - - - -![Using updated moss](./Featured.webp) - - -Thanks to many improvements across our codebase, including `moss-deps`, we automatically analyse -the assets in a package (rapidly too) to determine any dependencies we can add without requiring -the maintainer to list them. This is similar in nature to RPM's behaviour. - -As such we encode dependencies into our (endian-aware, binary) format which is then stored in the -local installation database. Global providers are keyed for quick access, and the vast majority -of packages will not explicitly depend on another package's *name*, rather, they'll depend on -a capability or provider. For subpackage dependencies that usually depend on "NEVRA" equality -(i.e. matching against a name with a minimum version, release, matching epoch and architecture), -we'll introduce a lockstep dependency that can only be resolved from its origin source (repo). - -Lastly, we'll always ensure there is no possibility for "partial update" woes. With these -considerations, we have no need to support `>=` style dependencies, and instead rely on -strict design goals and maintainer responsibility. - -## First and foremost! - -The rapid move we're enjoying from concept, to prototype, and soon to be fully fledged Linux distribution, -is only possible with the amazing community support. The last few months have seen us pull off some amazing -feats, and we're now executing on our first public milestones. With your help, more and more hours can be -spent getting us ready for release, and would probably help to insulate my shed office! (Spoiler: its -plastic and electric heaters are expensive =)) - -## The Milestones - -We have created our initial milestones that our quite literally our escape trajectory from -bootstrap to distro. We're considerably closer now, hence this open announcement. - -## [v0.0](https://gitlab.com/groups/serpent-os/-/milestones/1]): Container (`systemd-nspawn`) - -Our first release medium will be a `systemd-nspawn` compatible container image. Our primary -driver for this is to allow us to add encapsulation for our build tool, `boulder`, permitting -us to create distributable builder images to seed our infrastructure and first public binary -repository. - -## [v0.1](https://gitlab.com/groups/serpent-os/-/milestones/2): Bootable "image" - -Once our build infra is up and running (honestly a lot of work has been completed for this in -advance) we'll work towards our first 0.1 image. This will initially target VM usage, with -a basic console environment and tooling (`moss`, `boulder`, etc). - -## And then.. - -We have a clear linear path ahead of us, with each stage unlocking the next. During the development -of `v0.0` and `v0.1` we'll establish our build and test infrastructure, and begin hosting our -package sources and binaries. At this point we can enter a rapid development cycle with -incremental, and considerable improvements. Such as a usable desktop experience and installer.. :) - -## Recent changes - -I haven't blogged in quite a while, as I've been deep in the trenches working on our core features. -As we've expressed before, we tend to work on the more complex systems *first* and then glue them -together after to form a cohesive hole. The last few days have involved plenty of glue, and we now -have distinct package management features. - -## Refactor - - - Replaced defunct InstallDB with reusable MetaDB for local installation of archives as well as - forming the backbone of repository support. - - Added `ActivePackagesPlugin` to identify installed packages - - Swapped non cryptographic hash usage with `xxhash` - -## Dependencies - - - Introduced new Transaction type to utilise a directed acyclical graph for dependency solving. - - Reworked moss-deps into plugins + registry core for all resolution operations. - - Locally provided `.stone` files handled by `CobblePlugin` to ensure we depsolve from this - set too. - - New Transaction set management for identifying state changes and ensuring full resolution - of target system state. - - Shared library and interpreter (DT_INTERP) dependencies and producers automatically encoded - into packages and resolved by depsolver. - - -## Package Installation - -We handle locally provided `.stone` packages passed to the `install` command identically to -those found in a repository. This eliminates a lot of special casing for local archives and -allows us to find dependencies within the provided set, before looking to the system and the -repositories. - -![Install](./Install.webp "Installing packages") - -Dependency resolution is performed now for our package installation and is validated at -multiple points, allowing a package like nano to depend on compact automatic dependencies: - -```d - Dependency(DependencyType.SharedLibraryName, "libc.so.6(x86_64)"); -``` - -Note our format and database are binary and endian aware. The dependency type only requires -1 byte of storage and no string comparisons. - -## List packages - -Thanks to the huge refactor, we can now trivially access the installed packages as a list. -This code will be reused for a `list available` command in future. - -Example `list installed` output: - -``` - file (5.4) - File type identification utility - file-32bit (5.4) - Provides 32-bit runtime libraries for file - file-32bit-devel (5.4) - Provides development files for file-32bit - file-devel (5.4) - Development files for file - nano (5.5) - GNU Text Editor -``` - -![ListInstalled](./ListInstalled.webp "Listing installed packages") - -## Inspect archives - -For debugging and development purposes, we've moved our old "info" command to a new -"inspect" command to work directly on local `.stone` files. This displays extended -information on the various payloads and their compression stats. - -For general users - the new `info` command displays basic metadata and package -dependencies. - -![Info](./Info.webp "Display package information") - -## Package Removal - -Upon generating a new system state, "removed" packages are simply no longer installed. As such -no live mutation is performed. As of today we can now request the removal of packages from the -current state, which generates a new filtered state. Additionally we remove all reverse dependencies, -direct and transitive. This is accomplished by utilising a transposed copy of the directed acyclical -graph, identifying the relevant subgraph and occluding the set from the newly generated state. - -![Remove](./Remove.webp "Remove packages") - -## Lastly - -The past few weeks have been especially enjoyable. I've truly had a fantastic time working on the project -and cannot wait for the team and I to start offering our first downloads, and iterate as a truly new -Linux distribution that borrows some ideas from a lot of great places, and fuses them into something -awesome. - -Keep toasty - this train isn't slowing down. diff --git a/src/content/docs/blog/2022/06/22/packaging-automation-next-steps/index.mdx b/src/content/docs/blog/2022/06/22/packaging-automation-next-steps/index.mdx deleted file mode 100644 index 05cc49b8..00000000 --- a/src/content/docs/blog/2022/06/22/packaging-automation-next-steps/index.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: "Packaging Automation, Next Steps" -date: 2022-06-22T17:23:14+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2022 aerynOS Developers" ---- - -Hot damn we've been busy lately. No, [really](https://gitlab.com/groups/serpent-os/-/activity). -The latest development cycle saw us focus exclusively on `boulder`, our build tooling. As of -today it features a proof of concept `boulder new` subcommand for the automatic generation of -packaging templates from an upstream source (i.e. tarball). - - - -Before we really start this blog post off, I'd like to thank everyone who is supporting the -project! All of the [OpenCollective](https://opencollective.com/serpent-os) contributions will make it easier for me to work full -time on Serpent OS =) Much love <3 - -![Look at all the buildiness](./Featured.webp) - -## But, but build _flavours_ ... - -Alright you got me there, certain projects prefer to abstract the configuration, build and -installation of packages and be provided with some kind of hint to the build system, i.e. -manually setting `autotools`, etc. - -Serpent OS packaging is declarative and well structured, and relies on the use of RPM-style -"macros" for distribution integration and common tasks to ensure consistent packaging. - -We prefer a self documenting approach that can be machine validated rather than depending -on introspection at the time of build. Our `stone.yml` format is very flexible and powerful, -with automatic runtime dependencies and package splitting as standard. - -..Doesn't mean we can't make packaging **even easier** though. - -## Build discovery - -Pointing boulder at an upstream source will perform a deep analysis of the sources to determine -the build system type, build dependencies, metadata, licensing etc. Right now it's just getting -ready to leave POC stage so it has a few warts, however it does have support for generating -package skeletons for the following build systems: - - - `cmake` - - `meson` - - `autotools` - -We're adding automation for Perl and Python packaging (and Golang, Rust, etc) so we can enforce consistency, -integration and ease without being a burden on developers. This will greatly reduce the friction -of contribution - allowing anyone to package for Serpent OS. - -We're also able to automatically discover build time dependencies during analysis and add those -to the skeleton `stone.yml` file. We'll enhance support for other build systems as we go, ensuring -that each new package is as close to done on creation as possible, with review and iteration left -to the developer. - -## License compliance - -A common pain in the arse when packaging for *any* Linux distribution is ensuring the package -information is *compliant* in terms of licensing. As such we must know all of the licensing -information, as well as FSF and OSI compliance for our continuous integration testing. - -...Finding all of that information is truly a painful process when conducted manually. -Thankfully `boulder` can perform analysis of all licensing files within the project to -greatly improve compliance and packaging. - -Every license listed in a `stone.yml` file must use a valid [SPDX](https://spdx.dev/) identifier, -and be accurate. boulder now scans all license files, looking for matches with both SPDX IDs -as well as fuzzy-matching the text of input licenses to make a best-guess at the license ID. - -This has so far been highly accurate and correctly identifies many hundreds of licenses, -ensuring a compliant packaging process with less pain for the developers. Over time we'll -optimise and improve this process to ensure compliance *for* our developers rather than -blocking them. - -As of today we support the [REUSE](https://reuse.software/) specification for expressing software licenses too! - -## Next on the list - -The next steps are honest-to-goodness exciting for us. Or should I say.. exiting? - -## bill - -Work formally begins now on Bootstrap Bill (Turner). Whilst we did successfully bootstrap Serpent OS -and construct the `Protosnek` repository, the process for that is **not** reproducible as `boulder` -has gone through massive changes in this time. - -The new [project](https://gitlab.com/serpent-os/core/bill) will leverage `boulder` and a newly -designed bootstrap process to eliminate all host contamination and bootstrap Serpent OS from -`stone.yml` files, emitting an _immutable_ bootstrap repository. - -Layering support will land in `moss` and `boulder` to begin the infrastructure projects. - -## Build Submission ("Let's Roll") - -The aim is to complete `bill` in a very short time so we can bring some initial infrastructure -online to facilitate the automatic build of submitted build jobs. We'll use this process -to create our live repository, replacing the initial bootstrap repository from bill. - -At this point all of the tooling we have will come together to allow us all to very -quickly iterate on packaging, polish up `moss` and race towards installed systems with -online updates. diff --git a/src/content/docs/blog/2023/03/18/infrastructure-launched/index.mdx b/src/content/docs/blog/2023/03/18/infrastructure-launched/index.mdx deleted file mode 100644 index 3ae18282..00000000 --- a/src/content/docs/blog/2023/03/18/infrastructure-launched/index.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Infrastructure Launched!" -date: 2023-03-18T23:20:55+00:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2023 aerynOS Developers" ---- - -After many months and much work, our infrastructure is [finally online](https://dash.serpentos.com). -We've had a few restarts, but it's now running fully online with 2 builders, ready to serve builds -around the clock. - - - -Firstly, I'd like to apologise for the delay since our last blog post. We made the decision to move -this website to static content, which took longer than expected. We're still using our own D codebase, -but prebuilding the site (and fake "API") so we can lower the load on our web server. - -### Introducing the Infra - -Our infrastructure is composed of 3 main components. - -#### Summit - -This is the page you can see over at [dash.serpentos.com](https://dash.serpentos.com). It contains -the build scheduler. It monitors our git repositories, and as soon as it discovers any missing builds -it creates build tasks for them. It uses a graph to ensure parallel builds happen as much as possible, -and correctly orders (and blocks) builds based on build dependencies. - -#### Avalanche - -We have 2 instances of Avalanche, our builder tool, running. This accepts configuration + build requests -from Summit, reporting status and available builds. - -#### Vessel - -This is an internal repository manager, which accepts completed packages from an Avalanche instance. -Published packages land at [dev.serpentos.com](https://dev.serpentos.com) - -### Next steps - -Super early days with the infra but we now have builds flowing as part of our continuous delivery solution. -Keeping this blog post short and sweet... we're about to package GNOME and start racing towards our first -**real** ISOs! - -### Don't forget - -If you like what the project is doing, don't forget to [sponsor](https://github.com/sponsors/ikeycode?o=sd&sc=t)! diff --git a/src/content/docs/blog/2023/04/21/snakes-on-a-boat/index.mdx b/src/content/docs/blog/2023/04/21/snakes-on-a-boat/index.mdx deleted file mode 100644 index b3afcee4..00000000 --- a/src/content/docs/blog/2023/04/21/snakes-on-a-boat/index.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "Snakes On A Boat" -date: 2023-04-21T22:12:56+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2023 aerynOS Developers" ---- - -We had intended to get a blog post out a little bit quicker, but the last month has been extremely -action packed. However, it has paid off immensely. As our friends at Solus [recently announced](https://getsol.us/2023/04/18/a-new-voyage/) -it is time to embark on a new voyage. - -![dashboard preview](featured.webp) - - - -### General gist of it - -There is very little point in rehashing the post, so I'll cover the essentials - - - We assisted the Solus team in deploying a complete new infrastructure. Some of this work is ongoing - - The package delivery pipeline is in place, meaning updates will soon reach users. - - We're working towards a mutually beneficial future whereby Solus adopts our tooling. - -### Is Serpent OS over? - -Oh no, no. The most practical angle to view this from is that Serpent OS is free to build and innovate to create the -basis of Solus 5. Outside of the distribution we're still keen to continue development on our tooling -and strategies. - -It is therefore critical that we continue development, and find the best approach for both projects, to make -the transition to Solus 5 as seamless as possible. To that end we will still need to produce ISOs and have an -active community of users and testers. During this transition period, despite being two separate projects, we're both -heading to a common goal and interest. - -### Finances - -We have an exciting journey ahead for all of us, and there are many moving parts involved. Until we're at the point -of mutual merge, we will keep the entities and billing separate. Thus, funds to the Solus [OpenCollective](https://opencollective.com/getsolus) -are intended for use within Solus, whereas we currently use [GitHub Sponsors](https://github.com/sponsors/ikeycode?o=sd&sc=t) -for our own project needs. - -Currently Solus and Serpent OS share one server, which was essential for quick turnaround on infrastructure enabling. -At the end of this month Serpent OS will migrate from that server to a new, separate system, ensuring the projects -are billed separately. - -Long story short, if you wish to sponsor Serpent OS **specifically**, please do so via [our GitHub sponsors account](https://github.com/sponsors/ikeycode?o=sd&sc=t) as our monthly running costs -will immediately rise at the end of this month. If you're supporting Solus development, please do visit them and sponsor them =) - -### Next steps? - -Glad you asked! Now that the dust is settling, we're focusing on Serpent OS requirements, and helping Solus where we can. -Our immediate goals are to build a dogfooding system for a small collection of developers to run as an unsupported prealpha -configuration, allowing us to flesh out the tooling and processes. - -This will include a live booting GNOME ISO, and sufficient base packages to freely iterate on `moss`, `boulder`, etc as well -as our own infrastructure. Once we've attained a basic quality and have an installer option, those ISOs will be made available -to you guys! diff --git a/src/content/docs/blog/2023/09/06/oxidised-moss/index.mdx b/src/content/docs/blog/2023/09/06/oxidised-moss/index.mdx deleted file mode 100644 index 1b2af38c..00000000 --- a/src/content/docs/blog/2023/09/06/oxidised-moss/index.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: "Oxidised Moss" -date: 2023-09-06T18:32:47+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2023 aerynOS Developers" ---- - -Allow me to start this post by stating something very important to me: I absolutely love the -D programming language, along with the expressivity and creative freedom it brings. Therefore -please do not interpret this post as an assassination piece. - -For a number of months now the Serpent OS project has stood rather still. While this could naively -be attributed to our shared plans with [Solus](https://getsol.us) - a deeper, technical issue is -to be acredited. - -![img](Featured.png) - - - -## D isn't quite there *yet*. But it will be, some day. - -Again, allow me to say I have thoroughly enjoyed my experience with D over the last 3 or so years, -it has been truly illuminating for me as an engineer. With that said, we have also become responsible -for an awful lot of code. As an engineering-led distribution + tooling project, our focus is that of -secure and auditable code paths. To that extent we pursued [DIP1000](https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md) as far as practical and admit it has a way to go before addressing our immediate needs of memory safety. - -While we're quite happy to be an upstream for Linux distributions by way of release channels and tooling -releases, we don't quite have the resources to also be an upstream for the numerous D packages we'd need to -create and maintain to get our works over the finish line. - -With that said, I will still continue to use D in my own *personal* projects, and firmly believe that one day -D will realise its true potential. - -## Rewarding contributors - -Our priorities have shifted somewhat since the announcement of our shared venture with Solus, and we must make -architectural decisions based on the needs of all stakeholders involved, including the existing contributor pool. -Additionally, care should be taken to be somewhat populist in our choice of stacks in order to give contributors -industry-relevant experience to add to their résumé (CV). - -## Playing to strengths - -Typically Solus has been a Golang-oriented project, and has a number of experienced developers. With the addition -of the Serpent developers, the total cross-over development team has a skill pool featuring Rust and Go, as well as -various web stack technologies. - -Reconsidering the total project architecture including our automated builds, the following decisions have been made -that incorporate the requirements of being widely adopted/supported, robust ecosystems and established tooling: - - - Rust, for low level tooling and components. Chiefly: `moss`, `boulder`, `libstone` - - ReactJS/TypeScript for our frontend work (Summit Web) - - Go - for our web / build infrastructure (Summit, Avalanche, Vessel, etc) - -## Lets start... 2 days ago! - -The new infrastructure will be brought up using widely available modules, and designed to be scalable from the outset -as part of a Kubernetes deployment, with as minimal user interaction as needed. Our eventual plans include rebuilding -the entire distribution from source with heavy caching once some part of the dependency graph changes. - -This infrastructure will then be extended to support the Solus 4 series for quality of life improvements to Solus developers, -enabling a more streamlined dev workflow: TL;DR less time babysitting builds = more Serpent development focus. - -Our priority these past few days has been on the new [moss-rs](https://github.com/serpent-os/moss-rs) repository where we -have begun to reimplement `moss` in Rust. So far we have a skeleton CLI powered by `clap` with an in-progress library for reading -`.stone` archives, our custom package format. - -The project is organised as a Rust workspace, with the view that `stone`, `moss` and `boulder` will all live in the same tree. -Our hope is this vastly improves the onboarding experience and opens the doors (finally) to contributors. - -### Licensing - -It should also be noted that the new tooling is made available under the terms of the Mozilla Public License ([MPL-2.0](https://spdx.org/licenses/MPL-2.0.html)). -After internal discussion, we felt the MPL offered the greatest level of defence against patent trolls while still ensuring our code -was widely free for all to respectfully use and adapt. - -Please also note that we have always, and continue to deliberately credit copyright as: - - Copyright © 2020-2023 Serpent OS Developers - -This is a virtual collective consisting of all whom have contributed to Serpent OS (per git logs) and is designed to prevent us from -being able to change the license down the line, i.e. a community protective measure. - -## Glad to be back - -Despite some sadness in the change of circumstances, we must make decisions that benefit us collectively as a community. -Please join us in raising a virtual glass to new pastures, and a brave new `blazing fast 🚀` (TM) future for Serpent OS and Solus 5. - -Cheers! diff --git a/src/content/docs/blog/2024/01/19/january-updates/index.mdx b/src/content/docs/blog/2024/01/19/january-updates/index.mdx deleted file mode 100644 index f8610d3d..00000000 --- a/src/content/docs/blog/2024/01/19/january-updates/index.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: "January Updates" -date: 2024-01-19T22:54:07+00:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2024 aerynOS Developers" ---- - -Precisely one month since our end of year summary, so, what have we been up to? -With a new year, a new start was long overdue. We're pleased to announce that we've -finally shifted our butts over to our own server (again). - -While this isn't quite as chunky a news update as the last post, we rather hope you appreciate -the regularity of the news. - -![moss in action](Featured.webp) - - - -## Infrastructure, revisited - -'tarkah' has been tirelessly porting `moss-service`, the core foundation of our automated build system, -to a shiny new Rust codebase. While we don't have an *immediately* pressing need for the port to -come online, it will certainly address some "v1 issues" and ensure the best-in-class development -experience for our contributors. - -## Licensing - -In our pursuit for a sustainable, community oriented project, we've been doing a lot of in house organisation. -Very importantly, we've now [relicensed](https://github.com/serpent-os/recipes/issues/2) our packaging recipes to [MPL-2.0](https://spdx.org/licenses/MPL-2.0.html), bringing them in line with the license chosen for our current engineering efforts (`moss`, etc). - -To reiterate a critical point, we require that our contributions are attributed to the virtual collective "Serpent OS Developers" -to ensure we're unable to relicense any contributions *without express consent of the contributors involved*. - -Additionally we picked MPL-2.0 over Zlib due to some distinct advantages in relation to patent trolls. In combination -we believe both the project and our users will have the greatest protection from patent trolls and fiscally-motivated -relicensing. - -## As I Raise My Trigger Finger - -As you may recall from the last post, we announced our intention to add system triggers to moss. -We also stated that our triggers must run in **isolation** thanks to the unique architecture of our -package management. After much consideration, we've landed on a strategy that will work for us. - -### Post-blit triggers - -Every *mutable operation* in moss results in a fresh internal transaction, which is present as a full -`/usr` tree inside a staging tree. The majority of triggers can be executed here, just before we "activate" -the new rootfs. This allows us to detect potential trigger failures, and abort the activation. - -These YAML-defined triggers will be run in an isolated environment (clone-based container) with the new `/usr` -and read-only access to `/etc`. - -### Post-activation triggers - -Once we have a freshly activated `/usr` (ie new system view) we can run a very limited set of post-activation -triggers. An obvious example may be `systemctl daemon-reexec`. Note that by splitting post-blit and post-activation -triggers, we leave the door open to multiple activation strategies for non-simple updates, including soft reboots -and kernel patching. - -## Packaging updates! - -With all of the migration work, our builds have also resumed. In the space of a few short days we've had 32 package -builds. Ok, not a huge number, but we also have 15 outstanding pull requests to our new recipes repo! - -In order to make life not only simpler for us, but for Solus in its future role as a source-derivative of Serpent, we've -unified all of our git recipe repos into a new single repo, [recipes](https://github.com/serpent-os/recipes). - -## Improved hosting - -Our devops team has been working hard to mitigate bus factor with our transition to the new infrastructure, Bitwarden account, -shared DNS, and opentofu configuration. - -### Self Hosting. Again - -As part of the recovery process for Solus, the two projects shared resources, including -a large Hetzner node. This has actually worked remarkably well for a long time now, however -with Serpent growing we do not wish to impact the *availability* and *stability* of the Solus -update experience. - -Long story short, money from [GitHub Sponsors](https://github.com/sponsors/ikeycode) (You guys! < 3) is now paying for an AX52 server -from Hetzner. It's sufficiently powerful that we're running a backup *builder* there as well as -repo management and build controller. - -### El Cheapo Web Hosting - -Looking at our project's use of static generators - we decided to review our hosting for web content. -Long story short, we deemed it entirely unnecessary. We're now using GitHub pages to deploy this -website and our [documentation site](https://docs.serpentos.com) via GitHub actions. Don't worry, -we use git, we have backups, and we manage the infrastructure using `IaC` practices. - -## Clarifying our baseline target - -Lately there have been some questions in both Serpent and Solus as to what our baseline will be. -In Serpent OS, this will be at minimum `x86_64-v2`, with `x86_64-v3x` packages automatically -offered if the system base criteria are met. - -This decision has been made to offer the widest baseline compatibility without compromising heavily -on system performance (Such that `x86_64-generic` is unsupported in Serpent OS). We will continue -offering both `v2` and `v3x` until it is no longer feasible from a storage/financial perspective. -Source derivatives (Including Solus) are free to chart their own course here, if necessary, -and still benefit from tight upstream integration. - -### Towards Next Month - -In our next update, we'll have quite a bit to cover, including: - - - Integrated triggers - - Progress with GNOME packaging/readiness - - Boulder / Infrastructure porting progress - - Actually useful Serpent images diff --git a/src/content/docs/blog/2024/02/29/end-of-feb-update/index.md b/src/content/docs/blog/2024/02/29/end-of-feb-update/index.md deleted file mode 100644 index 2ccef941..00000000 --- a/src/content/docs/blog/2024/02/29/end-of-feb-update/index.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: "End of February Update" -date: 2024-02-29T18:32:35+00:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2024 aerynOS Developers" ---- -import { Aside } from '@astrojs/starlight/components'; - -This update came a little later in the month, as we've got a lot of exciting news to share. -Everything from `boulder` in Rust, to the GNOME 45 Desktop complete with `moss triggers` built -atop a rebootstrapped toolchain. - -## Rusty Boulder - -We're pleased to announce that over the course of this weekend, once testing has completed we'll -deploy the latest version of `boulder`, our packaging build tool. This has been given the Rust treatment, -directly sharing the codebase with `moss`. - -![Boulder in action](featured.webp) - - - -Unlike our PoC implementation, the new `boulder` makes use of the `clone` syscall to execute portions of -itself under user namespaces, eliminating a longstanding deployment irritation of having the main build binary -inside packaging. - -Just like `moss` it makes use of `tokio` for async right where we need it, and is rootless to -make life easier for our contributors. Far from being just a direct port of the proof of concept, it adds -new tools to empower developers, such as **breakpoints in packaging recipes**. - -![Breakpoints, in recipes](BoulderBreakpoints.webp) - -## Triggers, integrated! - -After much discussion we finally integrated support for *triggers* in `moss`. These are actions -that are executed at different stages of package management operations to finalize or "bake" -some state based on the unified components of the installation. - - - - -Note that right now triggers are re-executed for each transaction, and no caching support is yet in place. -With that said, they're still very fast and we plan to add a store based cache to prevent unnecessary -execution. One of the greatest benefits of our triggers is ensuring these actions run within the right -context under a `namespace`, or container. - -## In pursuit of stateless - -We've iterated many times over the years our belief in the stateless philosophy, and as a design -decision we mandated that packages can **only** contain `/usr` files. This has meant we've had to -get a bit inventive in shipping working packages out of the box. - -One such strategy has been to abolish the reliance on package triggers for system users and groups. -In the past we've relied on `systemd-sysusers` to construct these accounts, such as `gdm`. A downside -is there is no simple way to handle the cleanup of these accounts. - -We're now happily using systemd `userdb` user and group drop-in records via `nss-systemd` to provide -the default users + groups (including `users`) group with centrally managed, fixed UIDs and GIDs in our -git recipes. - - - -## GNOME Desktop - -Thanks to triggers now being fully integrated in Serpent OS via `moss`, we've actually managed to -package up most of the basic parts of GNOME 45. This includes a functioning GDM, GNOME Shell and -a handful of applications. - -![GNOME on Serpent OS](./KeepOnRunning.webp) - -## Packaging work - -Outside of the heavy work on the tooling and GNOME, we've also been tidying up our recipes repo and -recently performed a fresh rebootstrap using: - - - glibc 2.39 - - binutils 2.42 - - GCC 13.2.0 - - LLVM 17.4.0 - - Rust 1.78.0 - -Note that our primary toolchain is `glibc`, `lld`, `clang` / `clang++`, `libc++`, `libunwind`, etc. -The majority of packages are built with this LLVM + glibc toolchain, and a subset of packages currently -build with the GNU toolchain due to various wrong assumptions or use of GCC extensions. - -Our kernel has always been built with clang. - -## Images - -Our shortterm plan is to deliver a prealpha image for the general public to test, and to get a "feel" for -Serpent OS and associated tooling. As soon as this is out of the door we will immediately pivot to getting -Serpent OS fully functioning on baremetal, with explicit targets in mind: the hardware that core developers -are currently using. - -These images will be available but not promoted for general use - given their intended use as dogfooding systems. -This is part of our shift to the `oxide-alpha-1` target milestone, which will be discussed further in our next post -announcing the prealpha image. - -## Next time - -Our next monthly blog post should return to its regular slot, with updates on the following topics: - - - Limiting `async` in moss to targeted areas (PR ready and pending review) - - Life on Serpent: How baremetal testing + enabling is going. - - Until then, please, stay tuned! diff --git a/src/content/docs/blog/2024/03/31/the-march-of-progress/index.mdx b/src/content/docs/blog/2024/03/31/the-march-of-progress/index.mdx deleted file mode 100644 index e9bcb2b9..00000000 --- a/src/content/docs/blog/2024/03/31/the-march-of-progress/index.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: "The March Of Progress" -date: 2024-03-31T23:56:54+01:00 -draft: false -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2024 aerynOS Developers" ---- - -Despite a brief excursion out of the country for a first-in-a-lifetime holiday, I'm happily back at the desk to bring you up to date with the -latest goings in Serpent OS. TLDR: Loads of awesome, baremetal is enabled, ISO cycle in next couple of weeks. - -![GNOME on Serpent OS](Gnome.webp) - - - -## Tooling Improvements - -OK, we all know you want to know about the baremetal stuff, but c'mon, check out this changeset! - -### Boulder - -We're officially at a point where the Rust boulder implementation has become our "blessed" build tool. This is actually a crate within the `moss` -repository, allowing the two tools to share huge chunks of code. Our focus over the past few weeks has been to ensure we can drop the tool into -our existing build network and "just work", while making it significantly faster. - -One of the most important high level changes is *performance*, in some cases virtually 50% faster packaging times. Our package payloads are now -compressed using multi-threaded zstd compression, and a bunch of internal components were reworked to use faster code paths leading to a significant -speed up in the raw generation of each `.stone` package. - -!!! warning "Legacy boulder tool has been retired" - - As of March 31st, 2024, the legacy D implementation of `boulder` is no longer supported. The runtime component, `mason`, has been removed from the - volatile repository. Our new tool is written in Rust and contains the `moss` code, enabling a self-contained all-in-one approach to buildroot management. - - It relies on clone-based user namespaces, so is fully "rootless". Please migrate immediately to the new Rust based tool. Not only is it more advanced, - it is significantly faster at generating the raw `.stone` packages. - -![Comparison](Featured.webp) - -Other, quite awesome changes: - - - Fix manifest encoding for `0` nul byte, interop with build systems - - Explicit `--update` flag to refresh the repositories prior to build - - Defaults to multithread zstd compression - - Slick timing reports - - Base-enabling landed for "meta" packages (contain no files or content) - - Added `BuildRelease` control via tooling for automated package rebuilds - -### Moss - -Moss also got some love these past few weeks, including a full migration over to [diesel.rs](https://diesel.rs/). Combined with a limiting of `async` -to largely network bound operations, and some clever performance optimisations under the hood, moss is now faster than ever. In fact, we're able to -generate desktop ISOs in under 20 seconds, and install the full GNOME desktop to a `virtiofs` VM in almost no time. - - - Dropped some unnecessary dependencies - - Significant code cleanups - - Further refined our system + transaction triggers to fully respect dependency ordering - - Augmented state management with new functionality to activate/rollback to a specific transaction by ID using offline store. - - Various optimisations: - - Drop expensive `Path` usage in `vfs` crate - - Optimise queries in our transaction management to speed up `DAG` initialisation and filesystem blit - - And more to be covered in a future blog post - -## Hardware/Desktop Enablings. - -Rather than extensively widen our repository at this point we've opted for further low-level enabling of components required for the developer -experience desktop. This includes Network Manager, the desktop kernel package, Vulkan + mesa integration, etc. - -![Gnome Software](GnomeSW.webp) - -As well as enabling core applications and features such as GNOME Software and Flatpak, we've also enabled preliminary usage on baremetal booting -hardware. Note, this isn't yet installable but we do plan to offer early access installable images to our [sponsors](https://github.com/sponsors/ikeycode)! - -Also worth noting.. we've begun to package the Cosmic Epoch desktop from the cool guys over at [System76](https://system76.com/). We're highly interested -in this project and plan to track progress closely, offering it within Serpent OS as a fully featured development focused desktop experience. - -## The Agenda - -This post was finished moments before the March deadline, so needless to say we've been super busy! Thankfully a lot of pivotal pieces have landed now and -we can focus on some big ticket items. Our primary concern is to ship one last "pre-alpha" image for the public, and a test installable pre-alpha ISO for -our sponsors to help gain early feedback. The hope is this will help fund a widening of our infrastructure to support more concurrent repository users and -our own `debuginfod` compatible extensions to our repository. - -The April (and beyond) agenda: - - - Finish pre-alpha stage with some shiny ISOs! - - Enter alpha by adding versioned repository support to moss for an "upgrade forever" guarantee - - Enhance our ABI tracking story to vastly simplify huge rebuild queues and automation - - Expand our native hardware support - - Add some missing basic triggers such as Fedora-compatible SSL certificate management - - Begin work on the all-important **boot management** in moss! (not boot LOADER, this will be `systemd-boot`) - - Add battery testing of our tooling to our CI pipelines to protect users - - Ensure all of our code is fully documented - - Greatly improve our onboarding and documentation for packaging and usage of Serpent OS, focusing on `stone.yaml` in depth - - Get core team running Serpent OS daily. WiFi and GPU support are in place already. - - Build an amazing developer experience - -On behalf of the Serpent OS team, I look forward to sharing some amazing updates with you towards the end of April! Keep your eyes peeled for the ISO drops -in the coming weeks. diff --git a/src/content/docs/blog/2024/12/31/investing-in-the-future/index.mdx b/src/content/docs/blog/2024/12/31/investing-in-the-future/index.mdx deleted file mode 100644 index a82eb660..00000000 --- a/src/content/docs/blog/2024/12/31/investing-in-the-future/index.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Investing in the Future -date: 2024-12-31T14:00:11Z -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2024 aerynOS Developers" ---- - -Here we are, at the end of 2024, and what a year it's been! We've made significant progress on Serpent OS, and we're excited to share some of the highlights with you. - - - -## Attained Alpha - -Virtually 5 years in the making, we recently attained alpha status. Our tooling and concepts have aligned, allowing us to now rapidly iterate -on the core deliverable itself: Serpent OS. We've seen an explosion in cadence, with our tooling enabling us to quickly and -easily deliver updates, new packages and enabling new features. - -Since the Alpha 1 ISO (`0.24.5`), we've fixed a number of issues in relation to hardware and booting. We've also added -new features to moss (refined boot management) and boulder (our build system). Even now we have multiple PRs open to -tidy up moss, add automatic generation of `monitoring.yaml` files, and more. - -## Keeping the cadence - -We've been working hard to keep the cadence up, and we're now at a point where we can deliver new ISOs on a regular basis. -Our main focus now is the tooling, in enabling a far more automatic delivery pipeline. The vision is having automated pull -requests generated for package updates, automatically handling changes in dependencies and ABI, and ordered by build tier. -This will significantly reduce the maintainer burden, in conjunction with planned security monitoring. - -## Short term deliverables - -In the short term we're going to land the following features: - -- **Offline Rollbacks** - We're going to land offline rollbacks in the boot menu, allowing you to easily revert to a previous - system state. -- **Versioned Repositories** - We're going to introduce versioned repositories, allowing us to gracefully handle format changes - in moss and boulder, permitting an "update forever" epoch-staggering approach. Additionally, this will allow users to stay on an - older repo version if they're awaiting a fix to a regression in a newer version. -- **Improved Documentation** - We're going to improve our documentation, making it easier for new users to get started with Serpent OS. -- **Tools as a service** - We're adding IPC layers to our tooling, allowing them to be launched as helper services for integration in - other applications. This will allow us to integrate moss with GNOME Software and COSMIC Store, for example. Additionally it will ensure - the latest version of the `moss` binary is always used by the system, gracefully handling version repo changes. - Chiefly, this will allow `moss` to cheaply integrate anywhere we need it, including for `lichen`. -- **Lichen Improvements** - Lichen will also be converted to an IPC based backend, allowing it to be executed via `pkexec` for integration into - a GUI (or even CLI) frontend. This is a necessary step to allow the frontend to operate without privileges, facilitating live - updates to the NetworkManager configuration, or indeed keyboard layouts. Long term we're planning a `cage` based kiosk with a full screen - installer mode, on a far smaller ISO. - -## Long term vision - -Our long term vision is to deliver a system that is easy to use, reliable, and secure. We're building Serpent OS to be a system that -updates forever, confidently. We're also shaking things up by being first-adopter of new technologies as default solutions, with a view -to enhancing the robustness, origin-diversity and security of the system through Rust based replacements and alternatives to key components. -You can already see this with our adoption of `sudo-rs`, `coreutils` (`uutils`), `ntpd-rs`, and not to forget `rustls` by default for our curl build. - -Outside of that, `moss`, `boulder` and the supporting crates are also written in Rust, giving us a strong foundation for the future. - -Serpent OS is a project that is built to last, and challenge the status quo. Deliver a Linux distribution for use on multiple verticals, -with the feeling of a conventional Linux distribution, but with key management facilities and architecture designed to make a rolling release -distribution that can be trusted for long term use, extensive updates, and the ability to entirely re-engineer the entire OS, delivering in a safe -atomic update without breaking client installations. - -## How you can help - -In order to give Serpent OS the development time it needs, we're looking for sponsors to help fund development. If you're interested in becoming a sponsor -or investor, please do not hesitate to get in touch. We want to secure funding for development and infrastructure for the next 2 years. - - - [Sponsors](/sponsor) - - [Discuss sponsorship/investment](mailto:ikey@serpentos.com) - -While of course we need to iterate on our own tooling, we also need to be able to work more upstream and with kindred projects to drive -the ecosystem forward. In time, we wish to become the incubator for new technologies and solutions, and we need your help to do that. - -With your support, we can expand our builder network and enable more hosting, bandwidth, and compute resources. This will in turn enable -our automated rebootstraps, which will of course allow downstreams to extend upon Serpent OS as a kit-distro. Indeed, it'll allow us to expand -beyond `x86_64` when the time is right. - -While Serpent OS currently delivers a desktop ISO, this is not the limit of our potential. As indicated, our priorities in the short term -are designed to massively aimplify project maintainer bandwidth and free up more time for feature iteration and development. Once we're quite -happy with the base (and we're not far from that point) - we'll quite happily extend to other desktops, and even server/cloud offerings. - -Nothing is bullet proof, but with the architecture and tooling of Serpent OS we can get pretty close. Gotta admit, having a transactional, atomic OS -with rollbacks, and the full granularity of a conventional package manager, is pretty cool. 😎 Especially when things "Just work" out of the box -thanks to the stateless ("hermetic usr") requirements of the system. - -Know what's even cooler? When we land our system-model implementation, you'll be able to completely duplicate the setup between local development -and production. When we also land our export/compose functionality in moss, you'll be able to reap these benefits in containers too. 🐍 - -Here's to a great 2025, and we hope you'll join us on this journey. 🚀 diff --git a/src/content/docs/blog/2025/02/14/evolve-this-os/index.mdx b/src/content/docs/blog/2025/02/14/evolve-this-os/index.mdx deleted file mode 100644 index 6e1db647..00000000 --- a/src/content/docs/blog/2025/02/14/evolve-this-os/index.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Evolve This OS -date: 2025-02-14T23:25:37Z -authors: [ikey] -tags: [news] -license: "CC-BY-ND-4.0" -copyright: "Copyright © 2025 aerynOS Developers" ---- - -A long overdue, and highly requested update today. We're finally rebranding the project! - - -## 🤔 Why the change? - -The "Serpent OS" name was a quickly chosen name that stuck. Unfortunately "serpents" are often associated with -negative connotations, and we've had a lot of feedback over the years that the name was off-putting. Let's be completely -honest, it's not the most inviting name for a project. Who wants to trust a serpent? Generally speaking they're considered -dangerous at best. - - - -It's fair to say we've spent a long time in prototype and alpha phases. In order to move forward, our identity needs -to be more befitting of the project we're building. A move into the real world. This isn't a hobby project, it's a full -blown Linux distribution with serious technical underpinnings, achievements and goals. Getting the tone right from day dot -is critical. - -Do note, there is no change to the internal core team, so we're aiming for full continuity and a seamless transition. -Had enough of these snakes on this plane? We have too. - -## ✨ What's the new name? - -Hah, it's not "Evolve OS", despite the clickbait title. Our new name is... drum roll please... - -## 🌟 **AerynOS** - -Pronounced like "Erin", it's a name that we feel is more befitting of the project. Pulling from multiple etymologies, it's a name that better describes the project -**now** versus the project that started as Serpent OS. - -"Aer" is rather obvious, Latin in origin. The phonetic "Erin" is a nod to the Irish roots of the project, and of course a home. -There are a number of reasons for the name, which will form part of the initial documentation on the new website. - -Our intent is to have a name that is more inviting, and more descriptive of the project's goals and aspirations. We're not -anti-establishment or anti-corporation - if anything, we're a statement that without the fiscal handcuffs, we can produce a -technically sound *and* user-friendly operating system. - -## ⏰ Timeline - -Having already secured `AerynOS.com`, `AerynOS.dev`, plus the associated social media accounts, we're now in the process of -rebranding the project. For sheer irony, we'll make the final transition day the 17th of March, 2025. Yes, St. Patrick's Day. -The Matrix space has already been updated, and any areas where a new name isn't feasible will see almost immediate renames. - -A new GitHub organisation has been created, with our first priority there to create a proper organisation structure for once. -Over the coming weeks everything will be migrated over, and we'll mark the old organisation read-only/deprecated. Can't have folks -thinking Serpent OS was abandoned, after all. - -Stick with us, we've got plenty of exciting news to come over the next days and weeks, as we embrace new transparency and -shed our old skin. Plus, we'll be starting to onboard for web properties, translations, artwork, and more. Cherry on the cake? -Admitting that we're actually building a *full* distribution will allow us to put relevant priorities in place to expose -Serpent OS.. I mean AerynOS .. functionality to the wider world. Get ready for a reboot of the grassroots, independent Linux -scene. We're here to stay. diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/Cosmic.png" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/Cosmic.png similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/Cosmic.png" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/Cosmic.png diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/Gnome.png" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/Gnome.png similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/Gnome.png" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/Gnome.png diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/Logo.png" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/Logo.png similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/Logo.png" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/Logo.png diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/boulder_cache_size.png" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/boulder_cache_size.png similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/boulder_cache_size.png" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/boulder_cache_size.png diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/boulder_up.png" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/boulder_up.png similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/boulder_up.png" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/boulder_up.png diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/index.md" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/index.md similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/index.md" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/index.md diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/moss_state_remove.png" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/moss_state_remove.png similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/moss_state_remove.png" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/moss_state_remove.png diff --git "a/src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/winter.jpg" b/src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/winter.jpg similarity index 100% rename from "src/content/docs/blog/2026/04/30/Rebranding, Upgrading, and Wallpapering: AerynOS\342\200\231 April glow-up!/winter.jpg" rename to src/content/docs/blog/2026/04/30/Rebranding-Upgrading-and-Wallpapering/winter.jpg diff --git a/src/content/docs/privacy.mdx b/src/content/docs/privacy.mdx index 7700ebe6..0b0d1335 100644 --- a/src/content/docs/privacy.mdx +++ b/src/content/docs/privacy.mdx @@ -35,8 +35,7 @@ c. By using aerynOS, or our services, you agree to all terms of our Privacy Poli a. To ensure its processing of data is lawful, fair and transparent, aerynOS shall maintain a Register of Services. b. The Register of Services shall be reviewed at least annually. -c. aerynOS services are defined as its primary website, its [Forums](https://aerynsos.com) -and its downloads (packages + OS Image Files). +c. aerynOS services are defined as its primary [website](https://aerynos.com), its [Forums](https://aerynos.discourse.group/) and its downloads (packages + OS Image Files). c. Individuals have the right to access their personal data and any such requests made to aerynOS shall be dealt with in a timely manner, in line with Article 15 of the GDPR. ## 4. Lawful purposes @@ -85,4 +84,4 @@ In the event of a breach of security leading to the accidental or unlawful destr END OF POLICY -Please note this page has been written without legal consultation, and sets out the policies we intend to operate by. If you find issues with this policy, or have any questions in general with the policy, please contact the [Data Protection Officer](mailto:ikey@serpentos.com). +Please note this page has been written without legal consultation, and sets out the policies we intend to operate by. If you find issues with this policy, or have any questions in general with the policy, please contact the [Data Protection Officer](mailto:admin@aerynos.com).