From a9c0c6e879d0c71355ee9d6f88bb24dfbba2a6ff Mon Sep 17 00:00:00 2001 From: Princesseuh <3019731+Princesseuh@users.noreply.github.com> Date: Sat, 9 Mar 2024 23:17:09 +0100 Subject: [PATCH] feat: add a blog --- README.md | 8 +- astro.config.ts | 10 +- package.json | 10 +- pnpm-lock.yaml | 368 +++++++----------- src/assets/sponsors/prefect.svg | 2 +- src/components/BlogMetadata.astro | 57 +++ src/components/ModifyHeader.astro | 5 + src/components/Sponsor.astro | 18 - src/components/Sponsors.astro | 126 ++++-- src/components/TeamMember.astro | 13 +- src/components/TeamMemberList.astro | 44 ++- src/components/starlight/PageTitle.astro | 47 +++ src/components/starlight/SiteTitle.astro | 75 ++++ .../starlight/TableOfContents.astro | 17 + src/content/authors/erika.json | 4 + src/content/authors/johnson.json | 4 + src/content/authors/remco.json | 4 + src/content/blog/volar-a-new-beginning.mdx | 123 ++++++ src/content/config.ts | 28 +- .../docs/core-concepts/embedded-languages.mdx | 1 - src/content/docs/core-concepts/why-volar.mdx | 1 - src/content/docs/guides/first-server.mdx | 1 - src/content/docs/index.mdx | 30 +- src/content/docs/reference/services.md | 1 - src/layouts/Blog.astro | 29 ++ src/pages/blog/[...slug].astro | 25 ++ src/pages/blog/index.astro | 51 +++ src/styles/custom.css | 26 ++ tsconfig.json | 1 + 29 files changed, 790 insertions(+), 339 deletions(-) create mode 100644 src/components/BlogMetadata.astro create mode 100644 src/components/ModifyHeader.astro delete mode 100644 src/components/Sponsor.astro create mode 100644 src/components/starlight/PageTitle.astro create mode 100644 src/components/starlight/SiteTitle.astro create mode 100644 src/components/starlight/TableOfContents.astro create mode 100644 src/content/authors/erika.json create mode 100644 src/content/authors/johnson.json create mode 100644 src/content/authors/remco.json create mode 100644 src/content/blog/volar-a-new-beginning.mdx create mode 100644 src/layouts/Blog.astro create mode 100644 src/pages/blog/[...slug].astro create mode 100644 src/pages/blog/index.astro diff --git a/README.md b/README.md index d3ea196..b64c1bc 100644 --- a/README.md +++ b/README.md @@ -12,17 +12,17 @@ For more information on what Volar itself is, check out [the main repository](ht Contributions of all size are welcome! If you find a typo, or want to clarify some language, or even want to add a whole new section, no matter what, we're happy to welcome your contributions. -If you can see what the problem is, and you know how to fix it, then definitely feel free to make a PR (pull request) with the change and contribute to this repo yourself. Alternatively, [opening an issue](https://github.com/volarjs/docs/issues/new) and letting us know about the problem is also a totally valid option. +If you can see what the problem is, and you know how to fix it, then definitely feel free to make a PR (pull request) with the needed changes and contribute to this repo yourself. Alternatively, [opening an issue](https://github.com/volarjs/docs/issues/new) and letting us know about the problem is also a totally valid option. ### Getting the project running locally -If you want to run VolarJS locally, you can do so by following these steps: +If you want to run the docs locally, you can do so by following these steps: 1. Clone the repo: `git clone https://github.com/volarjs/docs` -2. Install dependencies: `npm install` +2. Install dependencies: `pnpm install` -3. Run the site locally: `npm run dev` +3. Run the site locally: `pnpm run dev` 4. Open the site in your browser: diff --git a/astro.config.ts b/astro.config.ts index 4591229..444485c 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -1,5 +1,5 @@ import starlight from "@astrojs/starlight"; -import { defineConfig, sharpImageService } from "astro/config"; +import { defineConfig } from "astro/config"; // https://astro.build/config export default defineConfig({ @@ -22,6 +22,11 @@ export default defineConfig({ baseUrl: "https://github.com/volarjs/docs/edit/main/", }, lastUpdated: true, + components: { + SiteTitle: "./src/components/starlight/SiteTitle.astro", + TableOfContents: "./src/components/starlight/TableOfContents.astro", + PageTitle: "./src/components/starlight/PageTitle.astro", + }, sidebar: [ { label: "Core Concepts", @@ -47,7 +52,4 @@ export default defineConfig({ ], }), ], - - // Process images with sharp: https://docs.astro.build/en/guides/assets/#using-sharp - image: { service: sharpImageService() }, }); diff --git a/package.json b/package.json index bc367d2..b71a794 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,12 @@ "format": "prettier -w --cache ." }, "dependencies": { - "@astrojs/starlight": "^0.16.0", - "@types/hast": "^3.0.3", - "astro": "^4.2.3", - "prettier": "^3.2.4", + "@astrojs/starlight": "^0.21.1", + "@types/hast": "^3.0.4", + "astro": "^4.4.15", + "prettier": "^3.2.5", "prettier-plugin-astro": "^0.13.0", - "sharp": "^0.32.6" + "sharp": "0.32.6" }, "devDependencies": { "hast-util-from-html": "^2.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e2a19b..91f1799 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,22 +6,22 @@ settings: dependencies: '@astrojs/starlight': - specifier: ^0.16.0 - version: 0.16.0(astro@4.2.3) + specifier: ^0.21.1 + version: 0.21.1(astro@4.4.15) '@types/hast': - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.0.4 + version: 3.0.4 astro: - specifier: ^4.2.3 - version: 4.2.3 + specifier: ^4.4.15 + version: 4.4.15 prettier: - specifier: ^3.2.4 - version: 3.2.4 + specifier: ^3.2.5 + version: 3.2.5 prettier-plugin-astro: specifier: ^0.13.0 version: 0.13.0 sharp: - specifier: ^0.32.6 + specifier: 0.32.6 version: 0.32.6 devDependencies: @@ -58,16 +58,16 @@ packages: resolution: {integrity: sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw==} dev: false - /@astrojs/compiler@2.5.0: - resolution: {integrity: sha512-ZDluNgMIJT+z+HJcZ6QEJ/KqaFkTkrb+Za6c6VZs8G/nb1LBErL14/iU5EVJ9yu25i4QCLweuBJ3m5df34gZJg==} + /@astrojs/compiler@2.7.0: + resolution: {integrity: sha512-XpC8MAaWjD1ff6/IfkRq/5k1EFj6zhCNqXRd5J43SVJEBj/Bsmizkm8N0xOYscGcDFQkRgEw6/eKnI5x/1l6aA==} dev: false /@astrojs/internal-helpers@0.2.1: resolution: {integrity: sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==} dev: false - /@astrojs/markdown-remark@4.2.0: - resolution: {integrity: sha512-qQB+LoxmIqzkhLXaQAzfzlBxZU1jeQYailsifurz89WeY0Q8ywIj8uQQSyqxb7rPPg3ZfdNdxsN9lF5UaCRn0w==} + /@astrojs/markdown-remark@4.2.1: + resolution: {integrity: sha512-2RQBIwrq+2qPYtp99bH+eL5hfbK0BoxXla85lHsRpIX/IsGqFrPX6pXI2cbWPihBwGbKCdxS6uZNX2QerZWwpQ==} dependencies: '@astrojs/prism': 3.0.0 github-slugger: 2.0.0 @@ -87,16 +87,16 @@ packages: - supports-color dev: false - /@astrojs/mdx@2.0.6(astro@4.2.3): - resolution: {integrity: sha512-PY6FYN5TN8dsRFSzcPIt5ofJ/w+v+5GtUUyDYbznu8zmFWlL9TkTLJ9U1zaQ3s2Qh6r1cAeLdEYjW/hW+vZzlw==} + /@astrojs/mdx@2.1.1(astro@4.4.15): + resolution: {integrity: sha512-AgGFdE7HOGmoFooGvMSatkA9FiSKwyVW7ImHot/bXJ6uAbFfu6iG2ht18Cf1pT22Hda/6iSCGWusFvBv0/EnKQ==} engines: {node: '>=18.14.1'} peerDependencies: astro: ^4.0.0 dependencies: - '@astrojs/markdown-remark': 4.2.0 + '@astrojs/markdown-remark': 4.2.1 '@mdx-js/mdx': 3.0.0 acorn: 8.11.3 - astro: 4.2.3 + astro: 4.4.15 es-module-lexer: 1.4.1 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -127,22 +127,25 @@ packages: zod: 3.22.4 dev: false - /@astrojs/starlight@0.16.0(astro@4.2.3): - resolution: {integrity: sha512-zwSNiCqzZeiuivUp4Yhx+eMLGww8v8cRYoCYXg9myTXNUwphqPaVG3rp7dbaZ4y1MaejnjYWB444ZRItEgTDcQ==} + /@astrojs/starlight@0.21.1(astro@4.4.15): + resolution: {integrity: sha512-nQ5EwKnB3eI8jxQrbgzZJJcyxeIiL3GzsAhl//1fE541MlD+PKy53v1PsYPi/RILdjt1Pg39rf1fkJC/rhXRgw==} peerDependencies: - astro: ^4.0.0 + astro: ^4.2.7 dependencies: - '@astrojs/mdx': 2.0.6(astro@4.2.3) + '@astrojs/mdx': 2.1.1(astro@4.4.15) '@astrojs/sitemap': 3.0.5 '@pagefind/default-ui': 1.0.4 - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 - astro: 4.2.3 - astro-expressive-code: 0.31.0(astro@4.2.3) + astro: 4.4.15 + astro-expressive-code: 0.33.4(astro@4.4.15) bcp-47: 2.1.0 + hast-util-from-html: 2.0.1 hast-util-select: 6.0.2 + hast-util-to-string: 3.0.0 hastscript: 8.0.0 mdast-util-directive: 3.0.0 + mdast-util-to-markdown: 2.1.0 pagefind: 1.0.4 rehype: 13.0.1 remark-directive: 3.0.0 @@ -608,34 +611,34 @@ packages: dev: false optional: true - /@expressive-code/core@0.31.0: - resolution: {integrity: sha512-zeCuojWRYeFs0UDOhzpKMzpjI/tJPCQna4jcVp5SJLMn4qNtHXgVmz3AngoMFoFcAlK6meE3wxzy//0d6K4NPw==} + /@expressive-code/core@0.33.4: + resolution: {integrity: sha512-IywACrwcR/7cIPBQ1qG/RsgvNp85/CAX6okxR0Niztrd7rh4IcEhAsz51jX/NPNnhU9yPynTT+mLdM1URqrnvw==} dependencies: '@ctrl/tinycolor': 3.6.1 hast-util-to-html: 8.0.4 hastscript: 7.2.0 - postcss: 8.4.31 - postcss-nested: 6.0.1(postcss@8.4.31) + postcss: 8.4.33 + postcss-nested: 6.0.1(postcss@8.4.33) dev: false - /@expressive-code/plugin-frames@0.31.0: - resolution: {integrity: sha512-eYWfK3i4w2gSpOGBFNnu05JKSXC90APgUNdam8y5i0Ie2CVAwpxDtEp0NRqugvEKC0aMJe6ZmHN5Hu2WAVJmig==} + /@expressive-code/plugin-frames@0.33.4: + resolution: {integrity: sha512-6HE5f8dAPjzmhs7yZJHVyH+w/UwVpktjlTvrUumrytHo6hidGlkB5lptWJlSAd9JXzev5BQEb4xrqQ0xQqO5+A==} dependencies: - '@expressive-code/core': 0.31.0 + '@expressive-code/core': 0.33.4 hastscript: 7.2.0 dev: false - /@expressive-code/plugin-shiki@0.31.0: - resolution: {integrity: sha512-fU5wPPfV1LGcS+Z1wcEkzI1fzBq9IAdt0DN0ni8sT7E+gpkULda4GA4IFD9iWKCGIhSDsBbG+bjc9hrYoJsDIQ==} + /@expressive-code/plugin-shiki@0.33.4: + resolution: {integrity: sha512-XnDchHqCGk046hgQnu83t9+SDrRjsvpvUEBiI0wl4RljVDr1E0yllx0y6C1yEuKfFfasib6BxX/PkItgQdi/0Q==} dependencies: - '@expressive-code/core': 0.31.0 - shikiji: 0.8.7 + '@expressive-code/core': 0.33.4 + shiki: 1.1.7 dev: false - /@expressive-code/plugin-text-markers@0.31.0: - resolution: {integrity: sha512-32o3pPMBq6bVUfRsAfFyqNpHbD1Z3iftoX9yt95F5zakLMsmHzZL4f0jyNr8XpXe7qcTnl0kIijBkUpvS6Pxfg==} + /@expressive-code/plugin-text-markers@0.33.4: + resolution: {integrity: sha512-hl3E+8iZJMYGDaKsN4bOPOEBb9QeFjg+zQkOJRtjJgsmIYmaZpoQTzTg/JMduE8PLNsD30nAMwG/AbjN/klwZQ==} dependencies: - '@expressive-code/core': 0.31.0 + '@expressive-code/core': 0.33.4 hastscript: 7.2.0 unist-util-visit-parents: 5.1.3 dev: false @@ -683,9 +686,9 @@ packages: /@mdx-js/mdx@3.0.0: resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.1 - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdx': 2.0.8 collapse-white-space: 2.1.0 devlop: 1.1.0 @@ -710,6 +713,10 @@ packages: - supports-color dev: false + /@medv/finder@3.2.0: + resolution: {integrity: sha512-JmU7JIBwyL8RAzefvzALT4sP2M0biGk8i2invAgpQmma/QgfsaqoHIvJ7S0YC8n9hUVG8X3Leul2nGa06PvhbQ==} + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -879,6 +886,10 @@ packages: dev: false optional: true + /@shikijs/core@1.1.7: + resolution: {integrity: sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==} + dev: false + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -896,7 +907,7 @@ packages: /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 dev: false /@types/babel__core@7.20.5: @@ -937,11 +948,7 @@ packages: /@types/estree-jsx@1.0.1: resolution: {integrity: sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==} dependencies: - '@types/estree': 1.0.2 - dev: false - - /@types/estree@1.0.2: - resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + '@types/estree': 1.0.5 dev: false /@types/estree@1.0.5: @@ -954,13 +961,8 @@ packages: '@types/unist': 2.0.8 dev: false - /@types/hast@3.0.3: - resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} - dependencies: - '@types/unist': 3.0.0 - - /@types/mdast@4.0.1: - resolution: {integrity: sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==} + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: '@types/unist': 3.0.0 @@ -968,7 +970,6 @@ packages: resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: '@types/unist': 3.0.0 - dev: false /@types/mdx@2.0.8: resolution: {integrity: sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==} @@ -1086,23 +1087,24 @@ packages: hasBin: true dev: false - /astro-expressive-code@0.31.0(astro@4.2.3): - resolution: {integrity: sha512-o6eFrRSYLnlM/2FKkO3MgkbmVxT8N6DJcKvbRf1wbUcRXpz7s1KfugbdsaGw3ABEWUBuQIBsRppcGGw2L816Vg==} + /astro-expressive-code@0.33.4(astro@4.4.15): + resolution: {integrity: sha512-PtXLjd89WBA1WsDYlt3V1LZs9Pa8FFoXilaGDSyfxtbYJ2OPHjWh2JJvCiXmfXmY3HkPJ2oW9Jjo6om5vUlVcg==} peerDependencies: astro: ^3.3.0 || ^4.0.0-beta dependencies: - astro: 4.2.3 - remark-expressive-code: 0.31.0 + astro: 4.4.15 + hast-util-to-html: 8.0.4 + remark-expressive-code: 0.33.4 dev: false - /astro@4.2.3: - resolution: {integrity: sha512-6bfSogmcwMdaTRAxuhJ7aISGin/T3ovI/69JWPRYOHBkPZxA/EfsNQOI2TiRHFJSF9XtoMnFlgvT+iYapkhOwg==} + /astro@4.4.15: + resolution: {integrity: sha512-RTiAnlO8hDp6GqMVvaeJxyuCJhHNEho09lHshMNQBqgRabYPOJGW0HZZrbLRGNOqN9I14ivhZIunYGgAaGQpWw==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true dependencies: - '@astrojs/compiler': 2.5.0 + '@astrojs/compiler': 2.7.0 '@astrojs/internal-helpers': 0.2.1 - '@astrojs/markdown-remark': 4.2.0 + '@astrojs/markdown-remark': 4.2.1 '@astrojs/telemetry': 3.0.4 '@babel/core': 7.23.7 '@babel/generator': 7.23.6 @@ -1110,6 +1112,7 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.7) '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 + '@medv/finder': 3.2.0 '@types/babel__core': 7.20.5 acorn: 8.11.3 aria-query: 5.3.0 @@ -1120,6 +1123,7 @@ packages: clsx: 2.0.0 common-ancestor-path: 1.0.1 cookie: 0.6.0 + cssesc: 3.0.0 debug: 4.3.4 deterministic-object-hash: 2.0.2 devalue: 4.3.2 @@ -1146,20 +1150,19 @@ packages: p-queue: 8.0.1 path-to-regexp: 6.2.1 preferred-pm: 3.1.2 - probe-image-size: 7.2.3 prompts: 2.4.2 rehype: 13.0.1 resolve: 1.22.6 semver: 7.5.4 - server-destroy: 1.0.1 shikiji: 0.9.19 + shikiji-core: 0.9.19 string-width: 7.1.0 strip-ansi: 7.1.0 tsconfck: 3.0.1 unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.0.12 - vitefu: 0.2.5(vite@5.0.12) + vite: 5.1.5 + vitefu: 0.2.5(vite@5.1.5) which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.22.4 @@ -1480,28 +1483,6 @@ packages: hasBin: true dev: false - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1594,10 +1575,6 @@ packages: resolution: {integrity: sha512-M4+u22ZJGpk4RY7tne6W+APkZhnnhmAH48FNl8iEFK2lEgob+U5rUQsIqQhvAwCXYpfd3H20pHK/ENsCvwTbsA==} dev: false - /emoji-regex@10.2.1: - resolution: {integrity: sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==} - dev: false - /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} dev: false @@ -1680,7 +1657,7 @@ packages: /estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 dev: false /estree-util-build-jsx@3.0.1: @@ -1714,7 +1691,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 dev: false /event-stream@3.3.4: @@ -1769,13 +1746,13 @@ packages: requiresBuild: true dev: false - /expressive-code@0.31.0: - resolution: {integrity: sha512-rxKGYS8iRwNUbRNfyCyoe3XQvBLTtGdXbNKM+ODDWCn4VL2DVT1gD1M2N2Alg8HQHIWZJsZIMsYbziO0MRjPlw==} + /expressive-code@0.33.4: + resolution: {integrity: sha512-vb6DLHjG+jbLJGTvOUhxagsru7oUiBrQEsL9+hcWJvlxIqQ5mRFqjamQS9kCIhXXbfYWiYI7/wfTGxQxuHxsZQ==} dependencies: - '@expressive-code/core': 0.31.0 - '@expressive-code/plugin-frames': 0.31.0 - '@expressive-code/plugin-shiki': 0.31.0 - '@expressive-code/plugin-text-markers': 0.31.0 + '@expressive-code/core': 0.33.4 + '@expressive-code/plugin-frames': 0.33.4 + '@expressive-code/plugin-shiki': 0.33.4 + '@expressive-code/plugin-text-markers': 0.33.4 dev: false /extend-shallow@2.0.1: @@ -1951,7 +1928,7 @@ packages: /hast-util-from-html@2.0.1: resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 devlop: 1.1.0 hast-util-from-parse5: 8.0.1 parse5: 7.1.2 @@ -1973,7 +1950,7 @@ packages: /hast-util-from-parse5@8.0.1: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/unist': 3.0.0 devlop: 1.1.0 hastscript: 8.0.0 @@ -1985,7 +1962,7 @@ packages: /hast-util-has-property@3.0.0: resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 dev: false /hast-util-parse-selector@3.1.1: @@ -1997,7 +1974,7 @@ packages: /hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 /hast-util-raw@7.2.3: resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} @@ -2018,7 +1995,7 @@ packages: /hast-util-raw@9.0.2: resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/unist': 3.0.0 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 @@ -2035,7 +2012,7 @@ packages: /hast-util-select@6.0.2: resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/unist': 3.0.0 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 @@ -2056,9 +2033,9 @@ packages: /hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.1 - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 @@ -2095,7 +2072,7 @@ packages: /hast-util-to-html@9.0.0: resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/unist': 3.0.0 ccount: 2.0.1 comma-separated-tokens: 2.0.3 @@ -2111,8 +2088,8 @@ packages: /hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: - '@types/estree': 1.0.2 - '@types/hast': 3.0.3 + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 '@types/unist': 3.0.0 comma-separated-tokens: 2.0.3 devlop: 1.1.0 @@ -2144,7 +2121,7 @@ packages: /hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 property-information: 6.3.0 @@ -2155,7 +2132,7 @@ packages: /hast-util-to-string@3.0.0: resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 /hast-util-whitespace@2.0.1: resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} @@ -2164,7 +2141,7 @@ packages: /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 /hastscript@7.2.0: resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} @@ -2179,7 +2156,7 @@ packages: /hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.3.0 @@ -2188,7 +2165,7 @@ packages: /hastscript@9.0.0: resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.3.0 @@ -2220,13 +2197,6 @@ packages: engines: {node: '>=16.17.0'} dev: false - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false @@ -2346,7 +2316,7 @@ packages: /is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 dev: false /is-stream@2.0.1: @@ -2459,10 +2429,6 @@ packages: p-locate: 5.0.0 dev: false - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: false - /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true @@ -2515,7 +2481,7 @@ packages: /mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.3 '@types/unist': 3.0.0 unist-util-visit: 5.0.0 dev: false @@ -2636,7 +2602,7 @@ packages: resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} dependencies: '@types/estree-jsx': 1.0.1 - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 @@ -2649,7 +2615,7 @@ packages: resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} dependencies: '@types/estree-jsx': 1.0.1 - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 '@types/unist': 3.0.0 ccount: 2.0.1 @@ -2681,7 +2647,7 @@ packages: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: '@types/estree-jsx': 1.0.1 - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 @@ -2700,8 +2666,8 @@ packages: /mdast-util-to-hast@13.0.2: resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} dependencies: - '@types/hast': 3.0.3 - '@types/mdast': 4.0.1 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.0 @@ -2713,8 +2679,8 @@ packages: /mdast-util-to-hast@13.1.0: resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} dependencies: - '@types/hast': 3.0.3 - '@types/mdast': 4.0.1 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.0 @@ -2858,7 +2824,7 @@ packages: /micromark-extension-mdx-expression@3.0.0: resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.1 micromark-factory-space: 2.0.0 @@ -2872,7 +2838,7 @@ packages: resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.1 @@ -2892,7 +2858,7 @@ packages: /micromark-extension-mdxjs-esm@3.0.0: resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 micromark-util-character: 2.0.1 @@ -2936,7 +2902,7 @@ packages: /micromark-factory-mdx-expression@2.0.1: resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 devlop: 1.1.0 micromark-util-character: 2.0.1 micromark-util-events-to-acorn: 2.0.2 @@ -3020,7 +2986,7 @@ packages: resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 '@types/unist': 3.0.0 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -3140,23 +3106,9 @@ packages: requiresBuild: true dev: false - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3168,18 +3120,6 @@ packages: requiresBuild: true dev: false - /needle@2.9.1: - resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} - engines: {node: '>= 4.4.x'} - hasBin: true - dependencies: - debug: 3.2.7 - iconv-lite: 0.4.24 - sax: 1.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /nlcst-to-string@3.1.1: resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} dependencies: @@ -3392,7 +3332,7 @@ packages: /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 dev: false @@ -3418,13 +3358,13 @@ packages: find-up: 4.1.0 dev: false - /postcss-nested@6.0.1(postcss@8.4.31): + /postcss-nested@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.31 + postcss: 8.4.33 postcss-selector-parser: 6.0.15 dev: false @@ -3436,17 +3376,17 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.6 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 dev: false - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -3489,12 +3429,12 @@ packages: engines: {node: ^14.15.0 || >=16.0.0} dependencies: '@astrojs/compiler': 1.8.2 - prettier: 3.2.4 + prettier: 3.2.5 sass-formatter: 0.7.8 dev: false - /prettier@3.2.4: - resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: false @@ -3504,16 +3444,6 @@ packages: engines: {node: '>=6'} dev: false - /probe-image-size@7.2.3: - resolution: {integrity: sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==} - dependencies: - lodash.merge: 4.6.2 - needle: 2.9.1 - stream-parser: 0.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -3584,14 +3514,14 @@ packages: /rehype-parse@9.0.0: resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 hast-util-from-html: 2.0.1 unified: 11.0.4 /rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 hast-util-raw: 9.0.2 vfile: 6.0.1 dev: false @@ -3599,14 +3529,14 @@ packages: /rehype-stringify@10.0.0: resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 hast-util-to-html: 9.0.0 unified: 11.0.4 /rehype@13.0.1: resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 unified: 11.0.4 @@ -3622,10 +3552,10 @@ packages: - supports-color dev: false - /remark-expressive-code@0.31.0: - resolution: {integrity: sha512-ZnKXo9lB0kBUHZIlw2NdqMMgXriVVajEhtQfJ+MWeibMpyM1kuOa28jefNfNFd3FAoNPrc/A3M0fDRkYvWw9Gw==} + /remark-expressive-code@0.33.4: + resolution: {integrity: sha512-ucGzDknAY6LJKkcNSaYh9N0SEr1LDA0shageM1xa+4fu/o+7g6R1/ApF7d2c+cj1ERLvaF4OaUa87n5baY+MDA==} dependencies: - expressive-code: 0.31.0 + expressive-code: 0.33.4 hast-util-to-html: 8.0.4 unist-util-visit: 4.1.2 dev: false @@ -3655,7 +3585,7 @@ packages: /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 micromark-util-types: 2.0.0 unified: 11.0.4 @@ -3666,9 +3596,9 @@ packages: /remark-rehype@11.1.0: resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: - '@types/hast': 3.0.3 - '@types/mdast': 4.0.1 - mdast-util-to-hast: 13.0.2 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.1.0 unified: 11.0.4 vfile: 6.0.1 dev: false @@ -3790,10 +3720,6 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - /sass-formatter@0.7.8: resolution: {integrity: sha512-7fI2a8THglflhhYis7k06eUf92VQuJoXzEs2KRP0r1bluFxKFvLx0Ns7c478oYGM0fPfrr846ZRWVi2MAgHt9Q==} dependencies: @@ -3825,10 +3751,6 @@ packages: lru-cache: 6.0.0 dev: false - /server-destroy@1.0.1: - resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} - dev: false - /sharp@0.32.6: resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} @@ -3854,14 +3776,14 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shikiji-core@0.9.19: - resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} + /shiki@1.1.7: + resolution: {integrity: sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==} + dependencies: + '@shikijs/core': 1.1.7 dev: false - /shikiji@0.8.7: - resolution: {integrity: sha512-j5usxwI0yHkDTHOuhuSJl9+wT5CNYeYO82dJMSJBlJ/NYT5SIebGcPoL6y9QOyH15wGrJC4LOP2nz5k8mUDGRQ==} - dependencies: - hast-util-to-html: 9.0.0 + /shikiji-core@0.9.19: + resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} dev: false /shikiji@0.9.19: @@ -3966,14 +3888,6 @@ packages: duplexer: 0.1.2 dev: true - /stream-parser@0.3.1: - resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} - dependencies: - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - dev: false - /streamx@2.15.1: resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} requiresBuild: true @@ -4005,7 +3919,7 @@ packages: engines: {node: '>=16'} dependencies: eastasianwidth: 0.2.0 - emoji-regex: 10.2.1 + emoji-regex: 10.3.0 strip-ansi: 7.1.0 dev: false @@ -4368,8 +4282,8 @@ packages: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - /vite@5.0.12: - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + /vite@5.1.5: + resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -4397,13 +4311,13 @@ packages: optional: true dependencies: esbuild: 0.19.11 - postcss: 8.4.33 + postcss: 8.4.35 rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 dev: false - /vitefu@0.2.5(vite@5.0.12): + /vitefu@0.2.5(vite@5.1.5): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -4411,7 +4325,7 @@ packages: vite: optional: true dependencies: - vite: 5.0.12 + vite: 5.1.5 dev: false /wait-on@7.2.0(debug@4.3.4): diff --git a/src/assets/sponsors/prefect.svg b/src/assets/sponsors/prefect.svg index 6d495ac..90ca7e9 100644 --- a/src/assets/sponsors/prefect.svg +++ b/src/assets/sponsors/prefect.svg @@ -1 +1 @@ - + diff --git a/src/components/BlogMetadata.astro b/src/components/BlogMetadata.astro new file mode 100644 index 0000000..77cc8e7 --- /dev/null +++ b/src/components/BlogMetadata.astro @@ -0,0 +1,57 @@ +--- +import type { CollectionEntry } from "astro:content"; + +interface Props { + entry: CollectionEntry<"blog">; + authors: CollectionEntry<"authors">[]; +} + +const { authors, entry } = Astro.props; +--- + +
+ { + authors && ( +
+ {authors.map((author) => ( + + {author.data.name} + {author.data.name} + + ))} +
+ ) + } + + + +
diff --git a/src/components/ModifyHeader.astro b/src/components/ModifyHeader.astro new file mode 100644 index 0000000..f673d1a --- /dev/null +++ b/src/components/ModifyHeader.astro @@ -0,0 +1,5 @@ + diff --git a/src/components/Sponsor.astro b/src/components/Sponsor.astro deleted file mode 100644 index e42d3d3..0000000 --- a/src/components/Sponsor.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -interface Props { - svg: string; -} - -const { svg } = Astro.props; ---- - - - - diff --git a/src/components/Sponsors.astro b/src/components/Sponsors.astro index 62097dd..fbc3bbd 100644 --- a/src/components/Sponsors.astro +++ b/src/components/Sponsors.astro @@ -3,62 +3,102 @@ import nuxt from "../assets/sponsors/nuxt.svg?raw"; import prefect from "../assets/sponsors/prefect.svg?raw"; import stackblitz from "../assets/sponsors/stackblitz.svg?raw"; import vue from "../assets/sponsors/vue.svg?raw"; ---- - -
-
-

Sponsors

- - - +interface Props { + smallPadding?: boolean; +} - - - +const sponsors = [ + { + name: "StackBlitz", + img: stackblitz, + url: "https://stackblitz.com", + }, + { + name: "Nuxt", + img: nuxt, + url: "https://nuxt.com/", + }, + { + name: "Vue", + img: vue, + url: "https://vuejs.org/", + }, + { + name: "Prefect", + img: prefect, + url: "https://www.prefect.io/", + }, +]; - - - +const { smallPadding } = Astro.props; +--- - - - +
+ { + sponsors.map((sponsor) => ( + +
+

{sponsor.name}

+ +
+
+ )) + }
-
- diff --git a/src/components/TeamMember.astro b/src/components/TeamMember.astro index 3cf7444..e516562 100644 --- a/src/components/TeamMember.astro +++ b/src/components/TeamMember.astro @@ -1,15 +1,10 @@ --- -import type { ImageMetadata } from "astro"; import { Image } from "astro:assets"; +import type { TeamMember } from "./TeamMemberList.astro"; -interface Props { - name: string; - username: string; - avatar: ImageMetadata; - githubProfile: string; -} +type Props = TeamMember; -const { name, username, avatar, githubProfile } = Astro.props; +const { name, username, avatar, description, githubProfile } = Astro.props; ---
@@ -20,7 +15,7 @@ const { name, username, avatar, githubProfile } = Astro.props;

{username}

- + {description}
+ diff --git a/src/components/starlight/SiteTitle.astro b/src/components/starlight/SiteTitle.astro new file mode 100644 index 0000000..f09acc3 --- /dev/null +++ b/src/components/starlight/SiteTitle.astro @@ -0,0 +1,75 @@ +--- +import type { Props } from "@astrojs/starlight/props"; +import AstrolightSiteTitle from "@astrojs/starlight/components/SiteTitle.astro"; + +const menuItems = [ + { name: "Docs", href: "/core-concepts/why-volar" }, + { name: "Blog", href: "/blog" }, +]; + +function pathsMatch(pathA: string, pathB: string): boolean { + return pathB.includes(pathA); +} +--- + +
+ + +
+ + +
+ + diff --git a/src/components/starlight/TableOfContents.astro b/src/components/starlight/TableOfContents.astro new file mode 100644 index 0000000..05dccd3 --- /dev/null +++ b/src/components/starlight/TableOfContents.astro @@ -0,0 +1,17 @@ +--- +import Default from "@astrojs/starlight/components/TableOfContents.astro"; +import Sponsors from "../Sponsors.astro"; +import { ComponentProps } from "astro/types"; + +type Props = ComponentProps; +--- + + +

Sponsors

+ + + diff --git a/src/content/authors/erika.json b/src/content/authors/erika.json new file mode 100644 index 0000000..ca11e77 --- /dev/null +++ b/src/content/authors/erika.json @@ -0,0 +1,4 @@ +{ + "name": "Erika", + "avatar": "$assets/team/erika.jpeg" +} diff --git a/src/content/authors/johnson.json b/src/content/authors/johnson.json new file mode 100644 index 0000000..0d63ce3 --- /dev/null +++ b/src/content/authors/johnson.json @@ -0,0 +1,4 @@ +{ + "name": "Johnson Chu", + "avatar": "$assets/team/johnson.jpeg" +} diff --git a/src/content/authors/remco.json b/src/content/authors/remco.json new file mode 100644 index 0000000..bcece3b --- /dev/null +++ b/src/content/authors/remco.json @@ -0,0 +1,4 @@ +{ + "name": "Remco Haszing", + "avatar": "$assets/team/remco.jpeg" +} diff --git a/src/content/blog/volar-a-new-beginning.mdx b/src/content/blog/volar-a-new-beginning.mdx new file mode 100644 index 0000000..b10195c --- /dev/null +++ b/src/content/blog/volar-a-new-beginning.mdx @@ -0,0 +1,123 @@ +--- +title: "Volar: a New Beginning" +date: 2023-02-08 +authors: [johnson] +description: "Volar.js: the Embedded Language Tooling Framework" +--- + +> This article was originally posted on the Vue blog: [Volar: a New Beginning](https://blog.vuejs.org/posts/volar-a-new-beginning.html). It is reposted here for archival purposes. + +Most users of Volar know it as the official Vue.js VSCode extension. It started as a personal project when the official recommendation was still Vetur, and over time got adopted as the new official extension due to improved architecture and performance. + +As a project created to improve the quality of life for developers, we spent over two years before [reaching 1.0](https://blog.vuejs.org/posts/volar-1.0.html), and have been continuously shipping stability improvements. + +But we've still got more work to do, and there are exciting plans for 2023. + +--- + +## Volar.js: the Embedded Language Tooling Framework + +Although initially designed for the specific needs of Vue Single-File Components, Volar's codebase contains many parts that are not specific to Vue, such as: + +- Processing of embedded programming languages (a common problem for multiple meta frameworks) +- The Vue Language Server is actually a fully-fledged TypeScript Language Server +- Code for handling interaction with LSP / Web / Embedded Language Services, and more + +We have now extracted these common parts out into a framework-agnostic set of tools. These tools are now maintained as a new, separate project: [Volar.js](https://volarjs.github.io/). + +Volar.js is architected to support any file format that involves embedded languages - not just Vue, but also Astro, Svelte, or even Angular. It is also capable of implementing regular single-language LSP servers such as TypeScript, CSS, and HTML. + +Another major focus of Volar.js is performance. It aims to minimize the overhead to achieve the performance of a native embedded language service. There are many issues and optimization opportunities that could only be discovered over time with a sizable user base, and Volar.js is optimized based on the learnings we have accumulated from millions of downloads. + +As an example, ByteDance's Lynx team, an early adopter of Volar.js, shipped a whole set of language tools supporting their in-house framework with two weeks of work from a single developer. That would have taken months if it were built from scratch even with a team. + +## The old Volar is now vuejs/language-tools + +With the core extracted, the codebase for the original Volar extension and `vue-tsc` has been moved to the [`vuejs/language-tools`](https://github.com/vuejs/language-tools) repo. This repo now depends on Volar.js and contains code for Vue-specific support. + +We will also move some npm packages from the `@volar` npm organization to `@vue` - but these changes should not affect end users. + +## Team and Organization + +Similar to how [Vite](https://vitejs.dev/) was born out of the Vue ecosystem and eventually grew into its own community that connects users from the entire web dev ecosystem, Volar.js hopes to follow the same path. + +I ([@johnsoncodehk](https://github.com/johnsoncodehk)) have established the Volar.js Core Team with Erika ([@erika](https://elk.zone/mastodon.gamedevalliance.fr/@erika)), an Astro core team member. Erika shares my vision and dedication towards improving people's development experience. We will work together to improve the DX for all web devs, not just Vue and Astro. + +We have created the [`volarjs` organization](https://github.com/volarjs) to maintain the framework and related repos. + +- [volar.js](https://github.com/volarjs/volar.js): Core of the framework +- [plugins](https://github.com/volarjs/plugins): Can be used in `volar.config.js` or plugins of the framework +- [volarjs.github.io](https://volarjs.github.io/): Official website +- [language-tools-starter](https://github.com/volarjs/language-tools-starter): Template for starting building a language server with Volar.js +- [ecosystem-ci](https://github.com/volarjs/ecosystem-ci): Used to run integration tests for volar ecosystem projects +- [pug-language-tools](https://github.com/volarjs/pug-language-tools): Pug tools based on language-tools-starter +- [angular-language-tools](https://github.com/volarjs/angular-language-tools): Angular example based on language-tools-starter +- [svelte-language-tools](https://github.com/volarjs/svelte-language-tools): Svelte example based on language-tools-starter + +In addition, I'm thrilled to announce that: + +**[StackBlitz](https://stackblitz.com/) will be supporting me full time to work on Volar.js!** + +We are excited about the future and can't wait to see what we can achieve in the coming months! + +## Next Steps + +We are just getting started so we don't have a clear long-term roadmap yet, but here are some major directions that we plan to explore and work on next. + +### Monaco Support + +Monaco's support for Vue is currently implemented by `monaco-volar`, and we plan to support it in the framework, so all language servers based on Volar.js will be able to take advantage of it easily. + +### Support for IDEs other than VSCode + +Many generous contributors have implemented language clients for other IDEs such as Vim, Sublime, Atom, Emacs, Nova, Lapce, etc. for Volar, in addition to VSCode. + +Having a full set of IDE support can be of great reference value, as very few people can be proficient in all of these IDEs. + +We will look for ways to leverage the efforts of these contributors to reduce the workload of framework adopters for implementing language clients outside of VSCode. + +Additionally, although IntelliJ does not have first-class LSP support, we will look into whether it is possible to integrate it with the framework. + +### Bun-base Language Server + +Theoretically, the performance of Volar can only be infinitely close to, but not faster than the vanilla TS language server. However, if the Volar language server can get a performance boost by running in [Bun](https://bun.sh/), it might be a game changer. + +Previously Bun's runtime was not yet compatible with Node.js-based LSP servers. We will keep an eye on related issues and try again when they are resolved. + +Similarly, all language servers based on Volar.js will be able to benefit directly from this. + +### Monoserver + +Imagine a scenario where every language would need to support some TypeScript features, so each language's language server would run its own expensive TypeScript Language Service instance, making things a bit scary, because both memory and CPU usage will increase doubly, and this situation has already happened today. + +If some of these language servers were based on Volar.js, we might have some way for them to decide to only activate one language server, and then share the features of the rest of the language servers to the activated one, so that in the end we would only need to run TypeScript Language Service in one language server instance instead of multiple language servers. + +This could also solve some use cases that TypeScript Plugins are not able to support. + +Based on the Volar.js architecture, we are already very close to this goal, and I and Erika will explore this feature for the Vue and Astro language servers. + +### Rules API (Built-in Linter) + +You may have been tripped up when using ESLint and Prettier together, and our past attempts based on the Plugin API have not done a good job of avoiding this problem. + +The Rules API is another attempt to avoid conflicts between different linting tools, while also ensures that performance and features are perfectly integrated with the IDE. + +For meta-frameworks, they would need to implement their own parser for ESLint and Prettier, but with the Rules API they don't even need to do that, because we can reuse the parser from Volar language server. + +So if you write a TS rule, it will be available for TypeScript code in Vue's `