diff --git a/package-lock.json b/package-lock.json index 943002c..17f7968 100644 --- a/package-lock.json +++ b/package-lock.json @@ -195,6 +195,16 @@ "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, + "node_modules/@astrojs/rss": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.15.tgz", + "integrity": "sha512-uXO/k6AhRkIDXmRoc6xQpoPZrimQNUmS43X4+60yunfuMNHtSRN5e/FiSi7NApcZqmugSMc5+cJi8ovqgO+qIg==", + "license": "MIT", + "dependencies": { + "fast-xml-parser": "^5.3.3", + "piccolore": "^0.1.3" + } + }, "node_modules/@astrojs/sitemap": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.0.tgz", @@ -3039,6 +3049,46 @@ "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta" } }, + "node_modules/astro-remote": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/astro-remote/-/astro-remote-0.3.4.tgz", + "integrity": "sha512-jL5skNQLA0YBc1R3bVGXyHew3FqGqsT7AgLzWAVeTLzFkwVMUYvs4/lKJSmS7ygcF1GnHnoKG6++8GL9VtWwGQ==", + "license": "MIT", + "dependencies": { + "entities": "^4.5.0", + "marked": "^12.0.0", + "marked-footnote": "^1.2.2", + "marked-smartypants": "^1.1.6", + "ultrahtml": "^1.5.3" + }, + "engines": { + "node": ">=18.14.1" + } + }, + "node_modules/astro-remote/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/astro-remote/node_modules/marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/astro/node_modules/@esbuild/darwin-arm64": { "version": "0.25.12", "cpu": [ @@ -4848,6 +4898,37 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-builder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz", + "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.2.tgz", + "integrity": "sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "fast-xml-builder": "^1.0.0", + "strnum": "^2.1.2" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastq": { "version": "1.20.1", "dev": true, @@ -6583,6 +6664,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "license": "MIT", + "peer": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-footnote": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/marked-footnote/-/marked-footnote-1.4.0.tgz", + "integrity": "sha512-fZTxAhI1TcLEs5UOjCfYfTHpyKGaWQevbxaGTEA68B51l7i87SctPFtHETYqPkEN0ka5opvy4Dy1l/yXVC+hmg==", + "license": "MIT", + "peerDependencies": { + "marked": ">=7.0.0" + } + }, + "node_modules/marked-plaintify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/marked-plaintify/-/marked-plaintify-1.1.1.tgz", + "integrity": "sha512-r3kMKArhfo2H3lD4ctFq/OJTzM0uNvXHh7FBTI1hMDpf4Ac1djjtq4g8NfTBWMxWLmaEz3KL1jCkLygik3gExA==", + "license": "MIT", + "peerDependencies": { + "marked": ">=13.0.0" + } + }, + "node_modules/marked-smartypants": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/marked-smartypants/-/marked-smartypants-1.1.11.tgz", + "integrity": "sha512-Jt0eq/6rf9oXDfEKPzQ0z7UzVWcEAK3L6QBBQzbwV8bT304OvPVLTqpH3yvkSung9foOM4s120TMHEHP76Metg==", + "license": "MIT", + "dependencies": { + "smartypants": "^0.2.2" + }, + "peerDependencies": { + "marked": ">=4 <18" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "license": "MIT", @@ -9160,6 +9284,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/smartypants": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/smartypants/-/smartypants-0.2.2.tgz", + "integrity": "sha512-TzobUYoEft/xBtb2voRPryAUIvYguG0V7Tt3de79I1WfXgCwelqVsGuZSnu3GFGRZhXR90AeEYIM+icuB/S06Q==", + "license": "BSD-3-Clause", + "bin": { + "smartypants": "bin/smartypants.js", + "smartypantsu": "bin/smartypantsu.js" + } + }, "node_modules/smol-toml": { "version": "1.6.0", "license": "BSD-3-Clause", @@ -9209,6 +9343,34 @@ "dev": true, "license": "MIT" }, + "node_modules/starlight-blog": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/starlight-blog/-/starlight-blog-0.25.3.tgz", + "integrity": "sha512-U0+CYgeJhbXz/6Rcr2vXCUiMq5HyQUq9gP0Nj3Ii2A8GKaDoZTdgHD2HnWJBK4NbXRCJqM7N1BcyeLHS0+O7Aw==", + "license": "MIT", + "dependencies": { + "@astrojs/markdown-remark": "^6.3.1", + "@astrojs/mdx": "^4.0.8", + "@astrojs/rss": "^4.0.11", + "astro-remote": "^0.3.4", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-html": "^9.0.5", + "hast-util-to-string": "^3.0.1", + "marked": "^15.0.4", + "marked-plaintify": "^1.1.1", + "mdast-util-mdx-expression": "^2.0.1", + "unist-util-is": "^6.0.0", + "unist-util-remove": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=18.20.8" + }, + "peerDependencies": { + "@astrojs/starlight": ">=0.33.0" + } + }, "node_modules/starlight-links-validator": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/starlight-links-validator/-/starlight-links-validator-0.19.2.tgz", @@ -9337,6 +9499,18 @@ "node": ">=8" } }, + "node_modules/strnum": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/style-to-js": { "version": "1.1.21", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", @@ -9770,6 +9944,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-remove": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", + "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "license": "MIT", @@ -10883,6 +11072,7 @@ "dependencies": { "@astrojs/starlight": "^0.37.7", "astro": "^5.18.0", + "starlight-blog": "^0.25.3", "starlight-links-validator": "^0.19.2" }, "devDependencies": { diff --git a/packages/web/astro.config.mjs b/packages/web/astro.config.mjs index 02a184b..c9def15 100644 --- a/packages/web/astro.config.mjs +++ b/packages/web/astro.config.mjs @@ -2,6 +2,7 @@ import { createRequire } from 'node:module'; import { dirname, join } from 'node:path'; import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; +import starlightBlog from 'starlight-blog'; import starlightLinksValidator from 'starlight-links-validator'; // Resolve zod to Astro's bundled version to avoid conflicts with root zod@4 @@ -20,6 +21,18 @@ export default defineConfig({ integrations: [ starlight({ plugins: [ + starlightBlog({ + title: 'Blog', + postCount: 5, + recentPostCount: 5, + authors: { + anders: { + name: 'Anders Hassis', + title: 'Creator of Erode', + url: 'https://github.com/parse', + }, + }, + }), starlightLinksValidator({ exclude: ['/architecture/**'], }), diff --git a/packages/web/package.json b/packages/web/package.json index b70caeb..9e24f49 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -16,6 +16,7 @@ "dependencies": { "@astrojs/starlight": "^0.37.7", "astro": "^5.18.0", + "starlight-blog": "^0.25.3", "starlight-links-validator": "^0.19.2" }, "devDependencies": { diff --git a/packages/web/src/components/nav-bar.astro b/packages/web/src/components/nav-bar.astro index eee3fb0..41d3926 100644 --- a/packages/web/src/components/nav-bar.astro +++ b/packages/web/src/components/nav-bar.astro @@ -2,6 +2,7 @@