summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.changeset/green-schools-pump.md5
-rw-r--r--packages/astro/src/runtime/server/render/page.ts5
-rw-r--r--packages/integrations/deno/test/basics.test.js28
-rw-r--r--packages/integrations/deno/test/fixtures/basics/astro.config.mjs3
-rw-r--r--packages/integrations/deno/test/fixtures/basics/package.json1
-rw-r--r--packages/integrations/deno/test/fixtures/basics/src/pages/markdown.md6
-rw-r--r--packages/integrations/deno/test/fixtures/basics/src/pages/mdx.mdx6
-rw-r--r--pnpm-lock.yaml2
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