Skip to content

Commit b8cb80b

Browse files
Attempt astro 6
1 parent 3379617 commit b8cb80b

8 files changed

Lines changed: 272 additions & 538 deletions

File tree

astro.config.mjs

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,26 @@ export default defineConfig({
3030
inlineStylesheets: 'always'
3131
},
3232
experimental: {
33-
clientPrerender: true,
34-
fonts: [
35-
{
36-
provider: fontProviders.google({
37-
experimental: { variableAxis: { Inter: { opsz: ['14..32'] } } }
38-
}),
39-
name: 'Inter',
40-
cssVariable: '--astro-font-inter',
41-
weights: ['300 900'],
42-
styles: ['normal'],
43-
subsets: ['latin']
44-
}
45-
]
33+
clientPrerender: true
4634
},
35+
fonts: [
36+
{
37+
provider: fontProviders.google(),
38+
name: 'Inter',
39+
cssVariable: '--astro-font-inter',
40+
formats: ['woff2'],
41+
styles: ['normal'],
42+
subsets: ['latin'],
43+
weights: ['300 900'],
44+
options: {
45+
experimental: {
46+
variableAxis: {
47+
opsz: ['14..32']
48+
}
49+
}
50+
}
51+
}
52+
],
4753
image: {
4854
remotePatterns: [
4955
{

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
"test:unit": "vitest"
2424
},
2525
"dependencies": {
26-
"@astrojs/preact": "^4.1.3",
27-
"@astrojs/vercel": "^9.0.4",
26+
"@astrojs/preact": "^5.0.0",
27+
"@astrojs/vercel": "^10.0.0",
2828
"@libsql/client": "^0.17.2",
2929
"@preact/signals": "^2.8.2",
3030
"@vercel/analytics": "^1.6.1",
3131
"@vercel/speed-insights": "^1.3.1",
32-
"astro": "5.17.2",
32+
"astro": "6.0.3",
3333
"astro-seo-schema": "^5.2.0",
3434
"atropos": "^2.0.2",
3535
"drizzle-orm": "^0.45.1",
@@ -39,8 +39,8 @@
3939
"valibot": "^1.2.0"
4040
},
4141
"devDependencies": {
42-
"@astrojs/check": "^0.9.6",
43-
"@astrojs/sitemap": "^3.7.0",
42+
"@astrojs/check": "^0.9.7",
43+
"@astrojs/sitemap": "^3.7.1",
4444
"@eslint/js": "^9.39.4",
4545
"@playwright/test": "^1.58.2",
4646
"@tailwindcss/forms": "^0.5.11",

pnpm-lock.yaml

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

src/content.config.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineCollection } from 'astro:content';
2+
import { glob } from 'astro/loaders';
3+
4+
const transcripts = defineCollection({
5+
loader: glob({ pattern: '**/*.{md,mdx}', base: './src/content/transcripts' }),
6+
});
7+
8+
export const collections = {
9+
transcripts
10+
};

src/content/config.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +0,0 @@
1-
import { defineCollection } from 'astro:content';
2-
const transcripts = defineCollection({});
3-
export const collections = {
4-
transcripts
5-
};

src/lib/optimize-episode-image.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
1+
export async function resolveRedirects(url: string): Promise<string> {
2+
const response = await fetch(url, { method: 'GET', redirect: 'manual' });
3+
if (response.status >= 300 && response.status < 400) {
4+
return response.headers.get('location') ?? url;
5+
}
6+
return url;
7+
}
8+
19
export async function optimizeImage(
210
image?: string,
311
options?: { height?: number; width?: number }
412
) {
513
if (image) {
614
try {
15+
const resolvedImage = await resolveRedirects(image);
716
const { getImage } = await import('astro:assets');
817
const optimizedImage = await getImage({
9-
src: image,
18+
src: resolvedImage,
1019
format: 'avif',
1120
height: options?.height ?? 160,
1221
width: options?.width ?? 160,

src/lib/rss.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { htmlToText } from 'html-to-text';
22
import parseFeed from 'rss-to-json';
33
import { array, number, object, optional, parse, string } from 'valibot';
44

5-
import { optimizeImage } from './optimize-episode-image';
5+
import { optimizeImage, resolveRedirects } from './optimize-episode-image';
66
import { dasherize } from '../utils/dasherize';
77
import { truncate } from '../utils/truncate';
88
import starpodConfig from '../../starpod.config';
@@ -108,7 +108,9 @@ export async function getAllEpisodes() {
108108
content: episodeContent,
109109
description: truncate(htmlToText(description), 260),
110110
duration: itunes_duration,
111-
episodeImage: itunes_image?.href,
111+
episodeImage: itunes_image?.href
112+
? await resolveRedirects(itunes_image.href)
113+
: undefined,
112114
episodeNumber,
113115
episodeSlug,
114116
episodeThumbnail: await optimizeImage(itunes_image?.href),

src/pages/[episode].astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
import { getEntry } from 'astro:content';
2+
import { getEntry, render } from 'astro:content';
33
import { eq } from 'drizzle-orm';
44
55
import { createDb } from '../../db';
@@ -49,7 +49,7 @@ let Transcript;
4949
if (episode.episodeNumber && episode.episodeNumber !== 'Bonus') {
5050
Transcript = await getEntry('transcripts', episode.episodeNumber);
5151
if (Transcript) {
52-
const { Content } = await Transcript.render();
52+
const { Content } = await render(Transcript);
5353
Transcript = Content;
5454
}
5555
}

0 commit comments

Comments
 (0)