Skip to content

Commit 24076fc

Browse files
committed
Upgrade to Astro 5
1 parent 9814b9e commit 24076fc

16 files changed

+1279
-1227
lines changed

package-lock.json

Lines changed: 1237 additions & 1188 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@
1313
},
1414
"dependencies": {
1515
"@astrojs/check": "^0.9.4",
16-
"@astrojs/svelte": "^5.4.0",
17-
"@astrojs/tailwind": "^5.1.0",
16+
"@astrojs/svelte": "^7.0.1",
17+
"@astrojs/tailwind": "^5.1.3",
1818
"@docsearch/css": "^3.6.2",
1919
"@docsearch/js": "^3.6.2",
2020
"@grain/stdlib": "^0.6.5",
2121
"@netlify/functions": "^2.8.2",
2222
"@wasmer/wasi": "^1.2.2",
2323
"algoliasearch": "^4.23.3",
2424
"assert": "^2.1.0",
25-
"astro": "^4.16.13",
25+
"astro": "^5.0.3",
2626
"buffer": "^6.0.3",
2727
"constants-browserify": "^1.0.0",
2828
"events": "^3.3.0",
@@ -40,7 +40,7 @@
4040
"readable-stream": "^4.5.2",
4141
"rehype-autolink-headings": "^7.1.0",
4242
"rehype-slug": "^6.0.0",
43-
"svelte": "^4.2.14",
43+
"svelte": "^5.8.1",
4444
"tailwindcss": "^3.4.3",
4545
"typescript": "^5.4.5",
4646
"unist-util-visit": "^5.0.0",

src/components/BlogHero.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ const { entry } = Astro.props;
4343
</div>
4444
<div class="lg:flex lg:items-stretch bg-color-background-bright dark:bg-gray-variant-80 rounded-lg p-4 lg:p-8 drop-shadow-xl">
4545
<div class="p-0 lg:p-6 lg:w-5/12">
46-
<h1 class="text-2xl font-bold mb-5"><a href={`/blog/${entry.slug}`}>{entry.data.title}</a></h1>
46+
<h1 class="text-2xl font-bold mb-5"><a href={`/blog/${entry.id}`}>{entry.data.title}</a></h1>
4747
<BlogAuthor entry={entry} imgClass="w-12 h-12" nameClass="text-lg" />
4848
<p class="my-4">{entry.data.subtitle}</p>
4949
<p class="[mask-image:linear-gradient(180deg,#000_60%,transparent)] my-4 text-color-dim h-24 overflow-hidden">{entry.body}...</p>
50-
<a href={`/blog/${entry.slug}`} class="font-medium text-purple-50 hover:text-purple-70">
50+
<a href={`/blog/${entry.id}`} class="font-medium text-purple-50 hover:text-purple-70">
5151
Read more
5252
<ChevronRightIcon class="inline-block w-4 mb-0.5" />
5353
</a>

src/components/BlogThumbnail.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const { entry } = Astro.props;
1111
---
1212

1313
<div class="flex flex-col drop-shadow-sm border rounded-lg border-gray-10 dark:border-color-background-bright dark:bg-color-dim-3 overflow-hidden">
14-
<a href={`/blog/${entry.slug}`} class="grow flex flex-col">
14+
<a href={`/blog/${entry.id}`} class="grow flex flex-col">
1515
<Image
1616
src={entry.data.cover}
1717
alt={entry.data.coverAttribution ?? `${entry.data.title} thumbnail`}

src/components/DocLink.astro

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
interface Props {
3-
slug: string;
3+
id: string;
44
}
55
6-
const { slug } = Astro.props;
6+
const { id } = Astro.props;
77
8-
const href = `/docs/${slug}`;
8+
const href = `/docs/${id}`;
99
const isCurrentPage = new URL(Astro.request.url).pathname === href;
1010
---
1111

src/components/DocLinkGroup.astro

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
---
2+
import type { CollectionEntry } from "astro:content";
23
import DocLink from "./DocLink.astro";
34
45
interface Props {
56
title: string | null;
6-
entries: { slug: string, data: { title?: string | undefined } }[]
7+
entries: CollectionEntry<"docs">[]
78
}
89
910
const { title, entries } = Astro.props;
@@ -13,5 +14,5 @@ const { title, entries } = Astro.props;
1314
<h2 class="text-xl font-semibold mt-6 mb-2">{title}</h2>
1415
)}
1516
<div class="border-l-2 border-color-dim-3">
16-
{entries.map(x => <DocLink slug={x.slug}>{x.data.title}</DocLink>)}
17+
{entries.map(x => <DocLink id={x.id}>{x.data.title}</DocLink>)}
1718
</div>

src/components/DocsEntry.astro

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import DocsSwitchPageLink from "./DocsSwitchPageLink.astro";
88
import TypographyContainer from "./TypographyContainer.astro";
99
import NewsletterSignup from "./NewsletterSignup.astro";
1010
import Footer from "./Footer.astro";
11-
import { docsCollections, sortEntries } from "../utils/docsCollections";
11+
import { docsCollections, sectionAndSortEntries } from "../utils/docsCollections";
1212
import BarsIcon from "./icons/BarsIcon.astro";
1313
14-
const docsEntries = await getCollection("docs", x => !x.slug.includes("/runtime/"));
14+
const docsEntries = await getCollection("docs", x => !x.id.includes("/runtime/"));
1515
1616
const sidebarClass = "fixed overflow-auto w-[calc(var(--container-width)/5)] xl:w-[calc(var(--container-width)/6)] top-[3.5rem] h-[calc(100vh-3.5rem)] py-14";
1717
@@ -53,7 +53,7 @@ const { data, section, headings, prev, next } = Astro.props;
5353
<h1 class="text-2xl font-semibold mb-4">Grain Docs</h1>
5454

5555
{docsCollections.map(coll => (
56-
<DocLinkGroup title={coll.title} entries={sortEntries(docsEntries.filter((x: any) => x.slug.startsWith(coll.slugPrefix))).map(x => x.collectionEntry)} />
56+
<DocLinkGroup title={coll.title} entries={sectionAndSortEntries(docsEntries.filter((x: any) => x.id.startsWith(coll.slugPrefix))).map(x => x.collectionEntry)} />
5757
))}
5858
</div>
5959

@@ -63,7 +63,7 @@ const { data, section, headings, prev, next } = Astro.props;
6363
<h1 class="text-3xl font-semibold mb-4">Grain Docs</h1>
6464

6565
{docsCollections.map(coll => (
66-
<DocLinkGroup title={coll.title} entries={sortEntries(docsEntries.filter((x: any) => x.slug.startsWith(coll.slugPrefix))).map(x => x.collectionEntry)} />
66+
<DocLinkGroup title={coll.title} entries={sectionAndSortEntries(docsEntries.filter((x: any) => x.id.startsWith(coll.slugPrefix))).map(x => x.collectionEntry)} />
6767
))}
6868
</div>
6969

src/components/DocsSwitchPageLink.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const { entry, isPrev } = Astro.props;
1414
---
1515

1616
{entry ? (
17-
<a href={`/docs/${entry.slug}`} class="no-underline text-sm md:text-base">
17+
<a href={`/docs/${entry.id}`} class="no-underline text-sm md:text-base">
1818
{isPrev ? (
1919
<ChevronRightIcon class={`${chevronClass} rotate-180`} />
2020
<b class={textClass}>{entry.data.title}</b>

src/components/TableOfContentsHeading.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const { heading } = Astro.props;
99
---
1010

1111
<li class="my-1.5">
12-
<a href={"#" + heading.slug}>
12+
<a href={"#" + heading.id}>
1313
{heading.text}
1414
</a>
1515
{heading.subheadings.length > 0 && (

src/content/config.ts renamed to src/content.config.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { z, defineCollection } from "astro:content";
2+
import { glob } from "astro/loaders";
23

34
const blogCollection = defineCollection({
4-
type: "content",
5+
loader: glob({ pattern: "**/*.md", base: "./src/content/blog"}),
56
schema: ({ image }) => z.object({
67
title: z.string(),
78
subtitle: z.string(),
@@ -14,7 +15,7 @@ const blogCollection = defineCollection({
1415
});
1516

1617
const docsCollection = defineCollection({
17-
type: "content",
18+
loader: glob({ pattern: "**/*.md", base: "./src/content/docs"}),
1819
schema: z.object({
1920
title: z.string().optional(),
2021
}),

src/pages/blog/[post].astro

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
---
2-
import { getCollection } from "astro:content";
2+
import { getCollection, render } from "astro:content";
33
import Layout from "../../layouts/Layout.astro";
44
import BlogEntry from "../../components/BlogEntry.astro";
55
66
export async function getStaticPaths() {
77
const blogEntries = await getCollection("blog");
88
return blogEntries.map(entry => ({
9-
params: { post: entry.slug },
9+
params: { post: entry.id },
1010
props: { entry },
1111
}));
1212
}
1313
1414
const { entry } = Astro.props;
15-
const { Content } = await entry.render();
15+
const { Content } = await render(entry);
1616
---
1717

18-
<Layout title={`Grain Blog | ${entry.slug}`}>
18+
<Layout title={`Grain Blog | ${entry.id}`}>
1919
<BlogEntry entry={entry}>
2020
<Content />
2121
</BlogEntry>

src/pages/docs/[...slug].astro

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
---
2-
import { getCollection } from "astro:content";
2+
import { getCollection, render } from "astro:content";
33
import Layout from "../../layouts/Layout.astro";
44
import DocsEntry from "../../components/DocsEntry.astro";
5-
import { sortEntries } from "../../utils/docsCollections";
5+
import { sectionAndSortEntries } from "../../utils/docsCollections";
66
77
export async function getStaticPaths() {
8-
const docsEntries = sortEntries(await getCollection("docs", x => !x.slug.includes("/runtime/")));
8+
const docsEntries = sectionAndSortEntries(await getCollection("docs", x => !x.id.includes("/runtime/")));
99
1010
return docsEntries.map((entry, i) => ({
11-
params: { slug: entry.collectionEntry.slug },
11+
params: { slug: entry.collectionEntry.id },
1212
props: {
1313
entry: entry.collectionEntry,
1414
section: entry.section,
@@ -19,7 +19,7 @@ export async function getStaticPaths() {
1919
}
2020
2121
const { entry, section, prev, next } = Astro.props;
22-
const { Content, headings } = await entry.render();
22+
const { Content, headings } = await render(entry);
2323
---
2424

2525
<Layout title={`Grain Docs | ${entry.data.title}`} inDocs excludeFooter>

src/playground/compiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { init, WASI } from "@wasmer/wasi";
55
import { tailCall, bulkMemory } from "wasm-feature-detect";
66
import graincUrl from "../../public/grainc.bc.mjs?url";
77

8-
const graincPromise = import(graincUrl);
8+
const graincPromise = import(/* @vite-ignore */graincUrl);
99

1010
globalThis.Buffer = Buffer;
1111

src/types.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export interface HeirarchicalHeading {
2-
slug: string;
2+
id: string;
33
text: string;
44
subheadings: HeirarchicalHeading[];
55
}

src/utils/docsCollections.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ export const docsCollections: DocsCollection[] = [
2929
},
3030
];
3131

32-
export function sortEntries(docsEntries: CollectionEntry<"docs">[]): DocsEntry[] {
32+
export function sectionAndSortEntries(docsEntries: CollectionEntry<"docs">[]): DocsEntry[] {
3333
return docsEntries.toSorted((x, y) => {
34-
if (x.slug.startsWith("stdlib") && y.slug.startsWith("stdlib")) {
35-
return Number(y.slug.includes("pervasives")) - Number(x.slug.includes("pervasives"));
34+
if (x.id.startsWith("stdlib") && y.id.startsWith("stdlib")) {
35+
return Number(y.id.includes("pervasives")) - Number(x.id.includes("pervasives"));
3636
}
3737

38-
return docsCollections.findIndex(coll => x.slug.startsWith(coll.slugPrefix))
39-
- docsCollections.findIndex(coll => y.slug.startsWith(coll.slugPrefix))
38+
return docsCollections.findIndex(coll => x.id.startsWith(coll.slugPrefix))
39+
- docsCollections.findIndex(coll => y.id.startsWith(coll.slugPrefix))
4040
}).map(collectionEntry => ({
4141
collectionEntry,
42-
section: docsCollections.find(coll => collectionEntry.slug.startsWith(coll.slugPrefix))!.title
42+
section: docsCollections.find(coll => collectionEntry.id.startsWith(coll.slugPrefix))!.title
4343
}));
4444
}

tailwind.config.mjs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
const { fontFamily } = require("tailwindcss/defaultTheme");
1+
import { fontFamily } from "tailwindcss/defaultTheme";
2+
import tailwindTypography from "@tailwindcss/typography";
23

34
/** @type {import("tailwindcss").Config} */
45
export default {
@@ -98,6 +99,6 @@ export default {
9899
},
99100
},
100101
plugins: [
101-
require("@tailwindcss/typography"),
102+
tailwindTypography,
102103
],
103104
}

0 commit comments

Comments
 (0)