Mirror of the sourcecode for my blog, original repo: https://github.com/NobbZ/blog-nobbz-dev
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

extract authors schema into its own file

+41 -30
+1 -30
src/content/config.ts
··· 1 1 import { defineCollection, z, reference } from "astro:content"; 2 2 3 - const fallback = z.object({ 4 - icon: z.string().url(), 5 - displayText: z.string(), 6 - href: z.string().url(), 7 - }).partial({ icon: true }); 8 - 9 - const authors = defineCollection({ 10 - type: "content", 11 - schema: z.object({ 12 - first_name: z.string(), 13 - last_name: z.string(), 14 - nick_name: z.string(), 15 - funding: z.object({ 16 - amazon: z.string().url(), 17 - github: z.string(), 18 - kofi: z.string(), 19 - patreon: z.string(), 20 - polar: z.string(), 21 - }).catchall(fallback).partial(), 22 - social: z.object({ 23 - github: z.string(), 24 - gitlab: z.string(), 25 - linkedin: z.string(), 26 - twitter: z.string(), 27 - }).catchall(fallback).partial(), 28 - web: z.object({ 29 - homepage: z.string().url(), 30 - }).catchall(fallback).partial(), 31 - }).partial().required({ nick_name: true }), 32 - }); 3 + import { authors } from "./schemas/authors"; 33 4 34 5 const blog = defineCollection({ 35 6 type: "content",
+40
src/content/schemas/authors.ts
··· 1 + import { defineCollection, z } from "astro:content"; 2 + 3 + const catchall = z.object({ 4 + icon: z.string().url(), 5 + displayText: z.string(), 6 + href: z.string().url(), 7 + }).partial({ icon: true }); 8 + 9 + const funding = z.object({ 10 + amazon: z.string().url(), 11 + github: z.string(), 12 + kofi: z.string(), 13 + patreon: z.string(), 14 + polar: z.string(), 15 + }).catchall(catchall).partial(); 16 + 17 + const social = z.object({ 18 + github: z.string(), 19 + gitlab: z.string(), 20 + linkedin: z.string(), 21 + twitter: z.string(), 22 + }).catchall(catchall).partial(); 23 + 24 + const web = z.object({ 25 + homepage: z.string().url(), 26 + }).catchall(catchall).partial(); 27 + 28 + const schema = z.object({ 29 + first_name: z.string(), 30 + last_name: z.string(), 31 + nick_name: z.string(), 32 + funding, 33 + social, 34 + web, 35 + }).partial().required({ nick_name: true }); 36 + 37 + export const authors = defineCollection({ 38 + type: "content", 39 + schema, 40 + });