Compare commits

...

6 Commits

Author SHA1 Message Date
d92a0842af chore(deps): update dependency astro to v6.1.5
All checks were successful
Test / npm test (pull_request) Successful in 46s
RenovateBot / renovate (push) Successful in 26s
Test / npm test (push) Successful in 48s
2026-04-09 08:53:15 +00:00
994fb09d05 Merge pull request 'fix(deps): update dependency astro to v6' (!21) from renovate/major-astro-monorepo into master
Some checks failed
Test / npm test (push) Has been cancelled
RenovateBot / renovate (push) Has been cancelled
Reviewed-on: #21
2026-04-09 12:52:31 +04:00
f90592d8a1 feat: migrated to Astro 6
All checks were successful
Test / npm test (push) Successful in 54s
Test / npm test (pull_request) Successful in 46s
2026-04-09 08:47:37 +00:00
7dd43ae74e chore(deps): update dependency sass to v1.99.0
All checks were successful
Test / npm test (pull_request) Successful in 47s
Test / npm test (push) Successful in 52s
RenovateBot / renovate (push) Successful in 1m9s
2026-04-03 00:02:06 +00:00
8a22d82d20 Merge pull request 'fix(deps): update dependency schema-dts to v2' (!27) from renovate/schema-dts-2.x into master
All checks were successful
Test / npm test (push) Successful in 55s
RenovateBot / renovate (push) Successful in 2m38s
Reviewed-on: #27
2026-04-02 16:57:05 +04:00
3597f9e1fd fix(deps): update dependency schema-dts to v2
All checks were successful
Test / npm test (push) Successful in 53s
Test / npm test (pull_request) Successful in 46s
2026-03-24 00:02:07 +00:00
9 changed files with 53 additions and 56 deletions

74
package-lock.json generated
View File

@@ -25,7 +25,7 @@
"sass": "^1.89.1", "sass": "^1.89.1",
"satori": "^0.26.0", "satori": "^0.26.0",
"satori-html": "^0.3.2", "satori-html": "^0.3.2",
"schema-dts": "^1.1.5", "schema-dts": "^2.0.0",
"sharp": "^0.34.2", "sharp": "^0.34.2",
"typescript": "^5" "typescript": "^5"
}, },
@@ -160,15 +160,6 @@
"zod": "^4.3.6" "zod": "^4.3.6"
} }
}, },
"node_modules/@astrojs/rss/node_modules/zod": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/@astrojs/sitemap": { "node_modules/@astrojs/sitemap": {
"version": "3.7.2", "version": "3.7.2",
"resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.2.tgz", "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.2.tgz",
@@ -180,15 +171,6 @@
"zod": "^4.3.6" "zod": "^4.3.6"
} }
}, },
"node_modules/@astrojs/sitemap/node_modules/zod": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/@astrojs/telemetry": { "node_modules/@astrojs/telemetry": {
"version": "3.3.0", "version": "3.3.0",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz",
@@ -2627,9 +2609,9 @@
} }
}, },
"node_modules/astro": { "node_modules/astro": {
"version": "6.1.2", "version": "6.1.5",
"resolved": "https://registry.npmjs.org/astro/-/astro-6.1.2.tgz", "resolved": "https://registry.npmjs.org/astro/-/astro-6.1.5.tgz",
"integrity": "sha512-r3iIvmB6JvQxsdJLvapybKKq7Bojd1iQK6CCx5P55eRnXJIyUpHx/1UB/GdMm+em/lwaCUasxHCmIO0lCLV2uA==", "integrity": "sha512-AJVw/JlssxUCBFi3Hp4djL8Pt7wUQqStBBawCd8cNGBBM2lBzp/rXGguzt4OcMfW+86fs0hpFwMyopHM2r6d3g==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@astrojs/compiler": "^3.0.1", "@astrojs/compiler": "^3.0.1",
@@ -2648,7 +2630,6 @@
"cookie": "^1.1.1", "cookie": "^1.1.1",
"devalue": "^5.6.3", "devalue": "^5.6.3",
"diff": "^8.0.3", "diff": "^8.0.3",
"dlv": "^1.1.3",
"dset": "^3.1.4", "dset": "^3.1.4",
"es-module-lexer": "^2.0.0", "es-module-lexer": "^2.0.0",
"esbuild": "^0.27.3", "esbuild": "^0.27.3",
@@ -2719,15 +2700,6 @@
"node": "^20.19.0 || ^22.12.0 || >=23" "node": "^20.19.0 || ^22.12.0 || >=23"
} }
}, },
"node_modules/astro/node_modules/zod": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/autoprefixer": { "node_modules/autoprefixer": {
"version": "10.4.27", "version": "10.4.27",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz",
@@ -6649,9 +6621,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.98.0", "version": "1.99.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.98.0.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.99.0.tgz",
"integrity": "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==", "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chokidar": "^4.0.0", "chokidar": "^4.0.0",
@@ -6726,10 +6698,25 @@
"peer": true "peer": true
}, },
"node_modules/schema-dts": { "node_modules/schema-dts": {
"version": "1.1.5", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-2.0.0.tgz",
"integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==", "integrity": "sha512-t7NoCy3Rn5GHGx6p7s1qIYK/AeIb8ZxJNR9WUNFkwMv2CiiGZBmqqYWc2FlZVm5ZbiHMY4OvBWhj7QtyrFO2Jw==",
"license": "Apache-2.0" "license": "Apache-2.0",
"dependencies": {
"schema-dts-lib": "^1.0.0"
}
},
"node_modules/schema-dts-lib": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-dts-lib/-/schema-dts-lib-1.0.0.tgz",
"integrity": "sha512-9MEO5vpQH9JdBioUupqluzxSYxPLjhmqRUudk15adUl/ypnRsM2/M1kN3AmVJQeG7nZqcL68H8JlGqQQT6vy9A==",
"license": "Apache-2.0",
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"typescript": ">=4.9.5"
}
}, },
"node_modules/section-matter": { "node_modules/section-matter": {
"version": "1.0.0", "version": "1.0.0",
@@ -8056,6 +8043,15 @@
"integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==", "integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/zod": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/zwitch": { "node_modules/zwitch": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",

View File

@@ -37,7 +37,7 @@
"sass": "^1.89.1", "sass": "^1.89.1",
"satori": "^0.26.0", "satori": "^0.26.0",
"satori-html": "^0.3.2", "satori-html": "^0.3.2",
"schema-dts": "^1.1.5", "schema-dts": "^2.0.0",
"sharp": "^0.34.2", "sharp": "^0.34.2",
"typescript": "^5" "typescript": "^5"
}, },

View File

@@ -3,4 +3,4 @@ module.exports = {
gitAuthor: "renovate[bot] <renovatebot@noreply.localhost>", gitAuthor: "renovate[bot] <renovatebot@noreply.localhost>",
optimizeForDisabled: true, optimizeForDisabled: true,
platform: "gitea", platform: "gitea",
}; };

View File

@@ -1,5 +1,5 @@
--- ---
import { type CollectionEntry } from "astro:content"; import { type CollectionEntry, render } from "astro:content";
import dayjs from "dayjs"; import dayjs from "dayjs";
type Props = { type Props = {
@@ -7,7 +7,7 @@ type Props = {
}; };
const { post } = Astro.props; const { post } = Astro.props;
const { remarkPluginFrontmatter } = await post.render(); const { remarkPluginFrontmatter } = await render(post);
const formattedDate = dayjs(post.data.datePublished.toString()).format("MMMM DD, YYYY"); const formattedDate = dayjs(post.data.datePublished.toString()).format("MMMM DD, YYYY");
const datePublished = post.data.datePublished.toISOString(); const datePublished = post.data.datePublished.toISOString();
@@ -28,7 +28,7 @@ const datePublished = post.data.datePublished.toISOString();
<li> <li>
<article> <article>
<a href={`/blog/${post.slug}`} lang={post.data.lang}>{post.data.title}</a> <a href={`/blog/${post.id}`} lang={post.data.lang}>{post.data.title}</a>
<div> <div>
<small> <small>
<time datetime={datePublished} lang="en">{formattedDate}</time> <time datetime={datePublished} lang="en">{formattedDate}</time>

View File

@@ -27,7 +27,7 @@ const latestPosts = posts.slice(0, 5);
{ {
latestPosts.map((post) => ( latestPosts.map((post) => (
<li> <li>
<a href={`/blog/${post.slug}`} lang={post.data.lang}> <a href={`/blog/${post.id}`} lang={post.data.lang}>
{post.data.title} {post.data.title}
</a> </a>

View File

@@ -1,7 +1,9 @@
import { defineCollection, z } from "astro:content"; import { defineCollection } from "astro:content";
import { glob } from "astro/loaders";
import { z } from "astro/zod";
const blog = defineCollection({ const blog = defineCollection({
type: "content", loader: glob({ pattern: "**/*.md", base: "./src/content/blog" }),
schema: z.object({ schema: z.object({
basedOn: z.optional(z.string()), basedOn: z.optional(z.string()),
dateModified: z.coerce.date(), dateModified: z.coerce.date(),

View File

@@ -1,5 +1,5 @@
--- ---
import { type CollectionEntry, getCollection } from "astro:content"; import { type CollectionEntry, getCollection, render } from "astro:content";
import Comments from "../../components/Comments.astro"; import Comments from "../../components/Comments.astro";
import Layout from "../../layouts/BaseLayout.astro"; import Layout from "../../layouts/BaseLayout.astro";
import blogPostSchema from "../../utils/schemas/blogPostSchema"; import blogPostSchema from "../../utils/schemas/blogPostSchema";
@@ -13,20 +13,20 @@ export async function getStaticPaths() {
}); });
return posts.map((post) => ({ return posts.map((post) => ({
params: { slug: post.slug }, params: { slug: post.id },
props: post, props: post,
})); }));
} }
const post = Astro.props; const post = Astro.props;
const { Content, remarkPluginFrontmatter } = await post.render(); const { Content, remarkPluginFrontmatter } = await render(post);
const description = post.data.description; const description = post.data.description;
const isBasedOn = post.data.basedOn; const isBasedOn = post.data.basedOn;
const lang = post.data.lang; const lang = post.data.lang;
const preview = `/images/preview/${post.slug}.png`; const preview = `/images/preview/${post.id}.png`;
const slug = post.slug; const slug = post.id;
const title = post.data.title; const title = post.data.title;
const dateModified = post.data.dateModified?.toISOString(); const dateModified = post.data.dateModified?.toISOString();

View File

@@ -13,10 +13,9 @@ export async function GET(context) {
customData: `<language>en</language>`, customData: `<language>en</language>`,
description: description, description: description,
items: posts.map((post) => ({ items: posts.map((post) => ({
customData: post.data.customData,
description: post.data.description, description: post.data.description,
link: `/blog/${post.slug}`, link: `/blog/${post.id}`,
pubDate: post.data.pubDate, pubDate: post.data.datePublished,
title: post.data.title, title: post.data.title,
})), })),
site: context.site, site: context.site,

View File

@@ -19,7 +19,7 @@ export default ({ siteUrl, title, posts }: BlogSchemaParams): WithContext<Collec
"itemListElement": posts.map((post, index) => ({ "itemListElement": posts.map((post, index) => ({
"@type": "ListItem", "@type": "ListItem",
"position": index + 1, "position": index + 1,
"url": new URL(`/blog/${post.slug}`, siteUrl).toString(), "url": new URL(`/blog/${post.id}`, siteUrl).toString(),
"name": post.data.title, "name": post.data.title,
})), })),
}, },