diff options
Diffstat (limited to '')
8 files changed, 53 insertions, 3 deletions
diff --git a/.changeset/green-schools-pump.md b/.changeset/green-schools-pump.md new file mode 100644 index 000000000..b81373abf --- /dev/null +++ b/.changeset/green-schools-pump.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Use TextEncoder instead of Buffer.byteLength() for Deno compatibility diff --git a/packages/astro/src/runtime/server/render/page.ts b/packages/astro/src/runtime/server/render/page.ts index 163441d39..166eb01cd 100644 --- a/packages/astro/src/runtime/server/render/page.ts +++ b/packages/astro/src/runtime/server/render/page.ts @@ -49,10 +49,11 @@ export async function renderPage( } html += rest; } - return new Response(html, { + const bytes = encoder.encode(html); + return new Response(bytes, { headers: new Headers([ ['Content-Type', 'text/html; charset=utf-8'], - ['Content-Length', Buffer.byteLength(html, 'utf-8').toString()], + ['Content-Length', bytes.byteLength.toString()], ]), }); } diff --git a/packages/integrations/deno/test/basics.test.js b/packages/integrations/deno/test/basics.test.js index 4a368e32d..aee9dd1f3 100644 --- a/packages/integrations/deno/test/basics.test.js +++ b/packages/integrations/deno/test/basics.test.js @@ -59,3 +59,31 @@ Deno.test({ }); }, }); + +Deno.test({ + name: 'Works with Markdown', + async fn() { + await startApp(async () => { + const resp = await fetch('http://127.0.0.1:8085/markdown'); + const html = await resp.text(); + + const doc = new DOMParser().parseFromString(html, `text/html`); + const h1 = doc.querySelector('h1'); + assertEquals(h1.innerText, 'Heading from Markdown'); + }); + }, +}); + +Deno.test({ + name: 'Works with MDX', + async fn() { + await startApp(async () => { + const resp = await fetch('http://127.0.0.1:8085/mdx'); + const html = await resp.text(); + + const doc = new DOMParser().parseFromString(html, `text/html`); + const h1 = doc.querySelector('h1'); + assertEquals(h1.innerText, 'Heading from MDX'); + }); + }, +}); diff --git a/packages/integrations/deno/test/fixtures/basics/astro.config.mjs b/packages/integrations/deno/test/fixtures/basics/astro.config.mjs index d01a93632..b5187f891 100644 --- a/packages/integrations/deno/test/fixtures/basics/astro.config.mjs +++ b/packages/integrations/deno/test/fixtures/basics/astro.config.mjs @@ -1,9 +1,10 @@ import { defineConfig } from 'astro/config'; import deno from '@astrojs/deno'; import react from '@astrojs/react'; +import mdx from '@astrojs/mdx'; export default defineConfig({ adapter: deno(), - integrations: [react()], + integrations: [react(), mdx()], output: 'server', }) diff --git a/packages/integrations/deno/test/fixtures/basics/package.json b/packages/integrations/deno/test/fixtures/basics/package.json index 18d1e50e7..ebb4270b2 100644 --- a/packages/integrations/deno/test/fixtures/basics/package.json +++ b/packages/integrations/deno/test/fixtures/basics/package.json @@ -6,6 +6,7 @@ "astro": "workspace:*", "@astrojs/deno": "workspace:*", "@astrojs/react": "workspace:*", + "@astrojs/mdx": "workspace:*", "react": "^18.1.0", "react-dom": "^18.1.0" } diff --git a/packages/integrations/deno/test/fixtures/basics/src/pages/markdown.md b/packages/integrations/deno/test/fixtures/basics/src/pages/markdown.md new file mode 100644 index 000000000..2e8004113 --- /dev/null +++ b/packages/integrations/deno/test/fixtures/basics/src/pages/markdown.md @@ -0,0 +1,6 @@ +--- +title: Title +description: Description +--- + +# Heading from Markdown diff --git a/packages/integrations/deno/test/fixtures/basics/src/pages/mdx.mdx b/packages/integrations/deno/test/fixtures/basics/src/pages/mdx.mdx new file mode 100644 index 000000000..6c76e8b8d --- /dev/null +++ b/packages/integrations/deno/test/fixtures/basics/src/pages/mdx.mdx @@ -0,0 +1,6 @@ +--- +title: Title +description: Description +--- + +# Heading from MDX diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 788c6ac14..69f40023b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2146,12 +2146,14 @@ importers: packages/integrations/deno/test/fixtures/basics: specifiers: '@astrojs/deno': workspace:* + '@astrojs/mdx': workspace:* '@astrojs/react': workspace:* astro: workspace:* react: ^18.1.0 react-dom: ^18.1.0 dependencies: '@astrojs/deno': link:../../.. + '@astrojs/mdx': link:../../../../mdx '@astrojs/react': link:../../../../react astro: link:../../../../../astro react: 18.2.0 |