Compare commits

7 Commits

Author SHA1 Message Date
nosblobs
126ecca9a2 worms 2023-09-11 10:59:51 +01:00
nosblobs
5136b4e8d3 wording updates 2023-09-11 10:36:32 +01:00
nosblobs
be66d48998 werds 2023-09-04 22:24:46 +01:00
nosblobs
c4ef13ec44 text 2023-09-04 21:45:13 +01:00
nosblobs
2aab29525c This isn't a minor change 2023-09-04 16:58:06 +01:00
nosblobs
8aefc9d0bb Blah 2023-09-04 16:57:40 +01:00
nosblobs
0f5f23f23b First draft 2023-09-04 16:50:18 +01:00
501 changed files with 6120 additions and 9929 deletions

407
.astro/types.d.ts vendored
View File

@@ -1,346 +1,211 @@
declare module 'astro:content' {
interface Render {
'.mdx': Promise<{
Content: import('astro').MarkdownInstance<{}>['Content'];
headings: import('astro').MarkdownHeading[];
remarkPluginFrontmatter: Record<string, any>;
}>;
}
}
declare module 'astro:content' {
interface Render {
'.md': Promise<{
Content: import('astro').MarkdownInstance<{}>['Content'];
headings: import('astro').MarkdownHeading[];
remarkPluginFrontmatter: Record<string, any>;
}>;
}
}
declare module 'astro:content' { declare module 'astro:content' {
export { z } from 'astro/zod'; export { z } from 'astro/zod';
export type CollectionEntry<C extends keyof typeof entryMap> =
type Flatten<T> = T extends { [K: string]: infer U } ? U : never; (typeof entryMap)[C][keyof (typeof entryMap)[C]] & Render;
export type CollectionKey = keyof AnyEntryMap;
export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
export type ContentCollectionKey = keyof ContentEntryMap;
export type DataCollectionKey = keyof DataEntryMap;
// This needs to be in sync with ImageMetadata
export type ImageFunction = () => import('astro/zod').ZodObject<{
src: import('astro/zod').ZodString;
width: import('astro/zod').ZodNumber;
height: import('astro/zod').ZodNumber;
format: import('astro/zod').ZodUnion<
[
import('astro/zod').ZodLiteral<'png'>,
import('astro/zod').ZodLiteral<'jpg'>,
import('astro/zod').ZodLiteral<'jpeg'>,
import('astro/zod').ZodLiteral<'tiff'>,
import('astro/zod').ZodLiteral<'webp'>,
import('astro/zod').ZodLiteral<'gif'>,
import('astro/zod').ZodLiteral<'svg'>,
import('astro/zod').ZodLiteral<'avif'>,
]
>;
}>;
type BaseSchemaWithoutEffects = type BaseSchemaWithoutEffects =
| import('astro/zod').AnyZodObject | import('astro/zod').AnyZodObject
| import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]> | import('astro/zod').ZodUnion<import('astro/zod').AnyZodObject[]>
| import('astro/zod').ZodDiscriminatedUnion<string, import('astro/zod').AnyZodObject[]> | import('astro/zod').ZodDiscriminatedUnion<string, import('astro/zod').AnyZodObject[]>
| import('astro/zod').ZodIntersection<BaseSchemaWithoutEffects, BaseSchemaWithoutEffects>; | import('astro/zod').ZodIntersection<
import('astro/zod').AnyZodObject,
import('astro/zod').AnyZodObject
>;
type BaseSchema = type BaseSchema =
| BaseSchemaWithoutEffects | BaseSchemaWithoutEffects
| import('astro/zod').ZodEffects<BaseSchemaWithoutEffects>; | import('astro/zod').ZodEffects<BaseSchemaWithoutEffects>;
export type SchemaContext = { image: ImageFunction }; type BaseCollectionConfig<S extends BaseSchema> = {
schema?: S;
type DataCollectionConfig<S extends BaseSchema> = { slug?: (entry: {
type: 'data'; id: CollectionEntry<keyof typeof entryMap>['id'];
schema?: S | ((context: SchemaContext) => S); defaultSlug: string;
collection: string;
body: string;
data: import('astro/zod').infer<S>;
}) => string | Promise<string>;
}; };
type ContentCollectionConfig<S extends BaseSchema> = {
type?: 'content';
schema?: S | ((context: SchemaContext) => S);
};
type CollectionConfig<S> = ContentCollectionConfig<S> | DataCollectionConfig<S>;
export function defineCollection<S extends BaseSchema>( export function defineCollection<S extends BaseSchema>(
input: CollectionConfig<S> input: BaseCollectionConfig<S>
): CollectionConfig<S>; ): BaseCollectionConfig<S>;
type EntryMapKeys = keyof typeof entryMap;
type AllValuesOf<T> = T extends any ? T[keyof T] : never; type AllValuesOf<T> = T extends any ? T[keyof T] : never;
type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf< type ValidEntrySlug<C extends EntryMapKeys> = AllValuesOf<(typeof entryMap)[C]>['slug'];
ContentEntryMap[C]
>['slug'];
export function getEntryBySlug< export function getEntryBySlug<
C extends keyof ContentEntryMap, C extends keyof typeof entryMap,
E extends ValidContentEntrySlug<C> | (string & {}), E extends ValidEntrySlug<C> | (string & {})
>( >(
collection: C, collection: C,
// Note that this has to accept a regular string too, for SSR // Note that this has to accept a regular string too, for SSR
entrySlug: E entrySlug: E
): E extends ValidContentEntrySlug<C> ): E extends ValidEntrySlug<C>
? Promise<CollectionEntry<C>> ? Promise<CollectionEntry<C>>
: Promise<CollectionEntry<C> | undefined>; : Promise<CollectionEntry<C> | undefined>;
export function getCollection<C extends keyof typeof entryMap, E extends CollectionEntry<C>>(
export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
collection: C,
entryId: E
): Promise<CollectionEntry<C>>;
export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
collection: C, collection: C,
filter?: (entry: CollectionEntry<C>) => entry is E filter?: (entry: CollectionEntry<C>) => entry is E
): Promise<E[]>; ): Promise<E[]>;
export function getCollection<C extends keyof AnyEntryMap>(
collection: C,
filter?: (entry: CollectionEntry<C>) => unknown
): Promise<CollectionEntry<C>[]>;
export function getEntry< type InferEntrySchema<C extends keyof typeof entryMap> = import('astro/zod').infer<
C extends keyof ContentEntryMap, Required<ContentConfig['collections'][C]>['schema']
E extends ValidContentEntrySlug<C> | (string & {}),
>(entry: {
collection: C;
slug: E;
}): E extends ValidContentEntrySlug<C>
? Promise<CollectionEntry<C>>
: Promise<CollectionEntry<C> | undefined>;
export function getEntry<
C extends keyof DataEntryMap,
E extends keyof DataEntryMap[C] | (string & {}),
>(entry: {
collection: C;
id: E;
}): E extends keyof DataEntryMap[C]
? Promise<DataEntryMap[C][E]>
: Promise<CollectionEntry<C> | undefined>;
export function getEntry<
C extends keyof ContentEntryMap,
E extends ValidContentEntrySlug<C> | (string & {}),
>(
collection: C,
slug: E
): E extends ValidContentEntrySlug<C>
? Promise<CollectionEntry<C>>
: Promise<CollectionEntry<C> | undefined>;
export function getEntry<
C extends keyof DataEntryMap,
E extends keyof DataEntryMap[C] | (string & {}),
>(
collection: C,
id: E
): E extends keyof DataEntryMap[C]
? Promise<DataEntryMap[C][E]>
: Promise<CollectionEntry<C> | undefined>;
/** Resolve an array of entry references from the same collection */
export function getEntries<C extends keyof ContentEntryMap>(
entries: {
collection: C;
slug: ValidContentEntrySlug<C>;
}[]
): Promise<CollectionEntry<C>[]>;
export function getEntries<C extends keyof DataEntryMap>(
entries: {
collection: C;
id: keyof DataEntryMap[C];
}[]
): Promise<CollectionEntry<C>[]>;
export function reference<C extends keyof AnyEntryMap>(
collection: C
): import('astro/zod').ZodEffects<
import('astro/zod').ZodString,
C extends keyof ContentEntryMap
? {
collection: C;
slug: ValidContentEntrySlug<C>;
}
: {
collection: C;
id: keyof DataEntryMap[C];
}
>;
// Allow generic `string` to avoid excessive type errors in the config
// if `dev` is not running to update as you edit.
// Invalid collection names will be caught at build time.
export function reference<C extends string>(
collection: C
): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
>; >;
type ContentEntryMap = { type Render = {
render(): Promise<{
Content: import('astro').MarkdownInstance<{}>['Content'];
headings: import('astro').MarkdownHeading[];
remarkPluginFrontmatter: Record<string, any>;
}>;
};
const entryMap: {
"blog": { "blog": {
"summer.mdx": { "summer.mdx": {
id: "summer.mdx"; id: "summer.mdx",
slug: "summer"; slug: "summer",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"week1.mdx": { "week1.mdx": {
id: "week1.mdx"; id: "week1.mdx",
slug: "week1"; slug: "week1",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"week2.mdx": { "week2.mdx": {
id: "week2.mdx"; id: "week2.mdx",
slug: "week2"; slug: "week2",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"week3.mdx": { "week3.mdx": {
id: "week3.mdx"; id: "week3.mdx",
slug: "week3"; slug: "week3",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"week4.mdx": { "week4.mdx": {
id: "week4.mdx"; id: "week4.mdx",
slug: "week4"; slug: "week4",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"week5-6.mdx": { "week5-6.mdx": {
id: "week5-6.mdx"; id: "week5-6.mdx",
slug: "week5-6"; slug: "week5-6",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"week7-8.mdx": { "week7-8.mdx": {
id: "week7-8.mdx"; id: "week7-8.mdx",
slug: "week7-8"; slug: "week7-8",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"week9-10.mdx": { "week9-10.mdx": {
id: "week9-10.mdx"; id: "week9-10.mdx",
slug: "week9-10"; slug: "week9-10",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"work1.mdx": { "work1.mdx": {
id: "work1.mdx"; id: "work1.mdx",
slug: "work1"; slug: "work1",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"work2.mdx": { "work2.mdx": {
id: "work2.mdx"; id: "work2.mdx",
slug: "work2"; slug: "work2",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"work3.mdx": { "work3.mdx": {
id: "work3.mdx"; id: "work3.mdx",
slug: "work3"; slug: "work3",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"work4.mdx": { "work4.mdx": {
id: "work4.mdx"; id: "work4.mdx",
slug: "work4"; slug: "work4",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"work5.mdx": { "work5.mdx": {
id: "work5.mdx"; id: "work5.mdx",
slug: "work5"; slug: "work5",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"work6.mdx": { "work6.mdx": {
id: "work6.mdx"; id: "work6.mdx",
slug: "work6"; slug: "work6",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"year2022-1.mdx": { "year2022-1.mdx": {
id: "year2022-1.mdx"; id: "year2022-1.mdx",
slug: "year2022-1"; slug: "year2022-1",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"year2022-end.mdx": { "year2022-end.mdx": {
id: "year2022-end.mdx"; id: "year2022-end.mdx",
slug: "year2022-end"; slug: "year2022-end",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"year2022-w1.mdx": { "year2022-w1.mdx": {
id: "year2022-w1.mdx"; id: "year2022-w1.mdx",
slug: "year2022-w1"; slug: "year2022-w1",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"year2022-w2.mdx": { "year2022-w2.mdx": {
id: "year2022-w2.mdx"; id: "year2022-w2.mdx",
slug: "year2022-w2"; slug: "year2022-w2",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"year2022-w3.mdx": { "year2022-w3.mdx": {
id: "year2022-w3.mdx"; id: "year2022-w3.mdx",
slug: "year2022-w3"; slug: "year2022-w3",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"year2023-1.mdx": { "year2023-1.mdx": {
id: "year2023-1.mdx"; id: "year2023-1.mdx",
slug: "year2023-1"; slug: "year2023-1",
body: string; body: string,
collection: "blog"; collection: "blog",
data: InferEntrySchema<"blog"> data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] }; },
"year2024.mdx": { },
id: "year2024.mdx";
slug: "year2024";
body: string;
collection: "blog";
data: InferEntrySchema<"blog">
} & { render(): Render[".mdx"] };
};
}; };
type DataEntryMap = {
};
type AnyEntryMap = ContentEntryMap & DataEntryMap;
type ContentConfig = typeof import("../src/content/config"); type ContentConfig = typeof import("../src/content/config");
} }

Binary file not shown.

View File

@@ -1 +0,0 @@
nodeLinker: node-modules

View File

@@ -1,11 +1,9 @@
FROM node:22 as build FROM node:18 as build
WORKDIR /app WORKDIR /app
COPY package.json package.json COPY package.json package.json
COPY .yarnrc.yml .yarnrc.yml
COPY yarn.lock yarn.lock COPY yarn.lock yarn.lock
COPY tsconfig.json tsconfig.json COPY tsconfig.json tsconfig.json
RUN corepack enable
RUN yarn install RUN yarn install
COPY src ./src COPY src ./src

View File

@@ -1,4 +1,5 @@
import { defineConfig } from "astro/config"; import { defineConfig } from "astro/config";
// https://astro.build/config // https://astro.build/config
import mdx from "@astrojs/mdx"; import mdx from "@astrojs/mdx";

View File

@@ -11,15 +11,12 @@
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"@astrojs/mdx": "^2.0.2", "@astrojs/mdx": "^0.15.0",
"@astrojs/react": "^3.0.8",
"@astrojs/rss": "^2.1.0", "@astrojs/rss": "^2.1.0",
"@rollup/plugin-dynamic-import-vars": "^2.1.2", "astro": "^2.0.0",
"astro": "^4.0.7",
"astrojs-service-worker": "^0.0.9" "astrojs-service-worker": "^0.0.9"
}, },
"devDependencies": { "devDependencies": {
"sass": "^1.57.1" "sass": "^1.57.1"
}, }
"packageManager": "yarn@4.5.1"
} }

View File

Before

Width:  |  Height:  |  Size: 802 KiB

After

Width:  |  Height:  |  Size: 802 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

View File

Before

Width:  |  Height:  |  Size: 852 KiB

After

Width:  |  Height:  |  Size: 852 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Some files were not shown because too many files have changed in this diff Show More