diff options
8 files changed, 98 insertions, 2 deletions
diff --git a/packages/integrations/cloudflare/src/entrypoints/image-endpoint.ts b/packages/integrations/cloudflare/src/entrypoints/image-endpoint.ts index ab51f42f2..dbc1e1f5a 100644 --- a/packages/integrations/cloudflare/src/entrypoints/image-endpoint.ts +++ b/packages/integrations/cloudflare/src/entrypoints/image-endpoint.ts @@ -1,2 +1,15 @@ -// NOTE: this file is empty on purpose -// it allows use to offer `imageService: 'compile'` +import type { APIRoute } from 'astro'; + +export const prerender = false; + +export const GET: APIRoute = (ctx) => { + const href = ctx.url.searchParams.get('href'); + if (!href) { + return new Response("Missing 'href' query parameter", { + status: 400, + statusText: "Missing 'href' query parameter", + }); + } + + return fetch(new URL(href, ctx.url.origin)); +}; diff --git a/packages/integrations/cloudflare/test/fixtures/compile-image-service/astro.config.mjs b/packages/integrations/cloudflare/test/fixtures/compile-image-service/astro.config.mjs new file mode 100644 index 000000000..7c569595e --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/compile-image-service/astro.config.mjs @@ -0,0 +1,9 @@ +import cloudflare from '@astrojs/cloudflare'; +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + adapter: cloudflare({ + imageService: 'compile', + }), + output: 'hybrid', +}); diff --git a/packages/integrations/cloudflare/test/fixtures/compile-image-service/package.json b/packages/integrations/cloudflare/test/fixtures/compile-image-service/package.json new file mode 100644 index 000000000..6e12fff65 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/compile-image-service/package.json @@ -0,0 +1,9 @@ +{ + "name": "@test/astro-cloudflare-compile-image-service", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/cloudflare": "workspace:*", + "astro": "^4.3.5" + } +} diff --git a/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/blog/post/index.md b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/blog/post/index.md new file mode 100644 index 000000000..01654f3ea --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/blog/post/index.md @@ -0,0 +1,5 @@ +--- +image: './placeholder.jpg' +--- + + diff --git a/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/blog/post/placeholder.jpg b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/blog/post/placeholder.jpg Binary files differnew file mode 100644 index 000000000..f4fc88e29 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/blog/post/placeholder.jpg diff --git a/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/config.ts b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/config.ts new file mode 100644 index 000000000..ce06042f6 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/content/config.ts @@ -0,0 +1,23 @@ +import type { ImageMetadata } from 'astro'; +import { defineCollection, z } from 'astro:content'; + +const blog = defineCollection({ + schema: ({ image }) => + z.object({ + image: z + .string() + .regex(/^https:.*/) + .transform( + (url) => + ({ + src: url, + width: 1200, + height: 630, + format: 'jpeg', + }) satisfies ImageMetadata + ) + .or(image()), + }), +}); + +export const collections = { blog }; diff --git a/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/env.d.ts b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/env.d.ts new file mode 100644 index 000000000..c13bd73c7 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/env.d.ts @@ -0,0 +1,2 @@ +/// <reference path="../.astro/types.d.ts" /> +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/pages/blog/[...slug].astro b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/pages/blog/[...slug].astro new file mode 100644 index 000000000..82f3ce6a2 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/compile-image-service/src/pages/blog/[...slug].astro @@ -0,0 +1,35 @@ +--- +import { Image } from "astro:assets"; +import { getEntry, type CollectionEntry } from "astro:content"; + +export const prerender = false; + +type Props = CollectionEntry<"blog">; + +// biome-ignore lint/style/noNonNullAssertion: <explanation> +const post = await getEntry("blog", Astro.params.slug!); +if (!post) return Astro.rewrite("/404"); + +const { Content } = await post.render(); + +--- + +<html lang="en"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width" /> + <meta name="generator" content={Astro.generator} /> + <title>Document</title> + </head> + <body> + <div class="aspect-video w-full overflow-hidden flex items-end rounded-lg"> + <Image + class="aspect-[4/3] object-cover object-left w-full" + src={post.data.image} + alt="" + /> + </div> + + <Content /> + </body> +</html> |